QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6265|回复: 1
打印 上一主题 下一主题

(求助C语言实现Householder变换一般实矩阵为上Hessenberg矩阵的算法)

[复制链接]
字体大小: 正常 放大
aj6249        

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |正序浏览
|招呼Ta 关注Ta
<># include "math.h"
$ u  f# Y9 l' t, \/ M#include"stdio.h"</P>
7 M' _0 S! |  o. f5 J% J! B<>  void strp(a,p,c, n,u)
; ?9 I. N9 K) D7 _1 U      int n;
( ~  S0 ~; u, b3 X# `   double a[],p[],c[],u[];: L" ]! K# {# c$ G" ~& m
{   1 {" d8 W& ~* P: a! g
   int i,j,k,v;3 A8 e7 [. P& I  W( @/ Y
   double sum,asum;
" [0 {" e+ ~! C; }" _. A6 Afor(j=0;j&lt;n-2;++j), ~3 D- F! f/ a1 n8 i3 E- b% s
{// 最开始的for 循环
0 i6 R/ q0 v/ E8 s5 u1 U       for(i=0;i&lt;n;++i)//初始化u[]全为零
# Y" R" I- g$ z3 a     u=0.0;</P>
! S& X0 q4 c& m& q<>
% J9 j* ]) ]( Y" j) E      sum=0.0;: ^2 w& [" \- V, ?8 R' |) w
   for(i=j+1;i&lt;n;++i)//实现a
% P% n7 e4 r& h' N1 G      {
3 R1 T7 q9 w3 U% b       k=i*n+j;: r% ?' Q% o! n
    sum+=a[k]*a[k];
7 L: S0 N% B3 \4 C* Z2 G  H2 `- U   }
/ {$ |* b) h/ @; o: p8 X      asum=sqrt(sum);</P>
7 K( K+ J% A) @9 I; f5 C- J* Z/ `  ~<>      for(i=j+1;i&lt;n;++i)
1 A1 y2 G5 y1 ?$ v$ C/ V   {
+ ~& |) }6 C* m    - {6 l. e+ J' L- {4 Y! _
    if(i==j+1)
- `0 X$ m8 E- \9 r     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;8 d* C' K" M7 @  |4 G8 J' \8 {
    else; j  `8 B( p/ O! U/ ~( ]% [
     u=a[i*n+j];
* V( v+ y4 G# S5 y+ m   }% s* b0 z4 |4 k0 f
      </P>
* D1 r, J  q4 K8 h0 J' [<>% y. l! c  H4 D9 D9 R* M
   sum=0.0;  //实现P! M3 y6 w$ r6 [+ h3 j* _9 j- X1 u6 a
   for(i=0;i&lt;n;++i)
  d) s" }" R* h    sum+=(u*u);</P>! G7 q) L; {1 X
<>   for(i=0;i&lt;n;++i), \  \" s& S$ h( A, r1 ^7 ^" ~
   {for(k=0;k&lt;n;++k); c: @- `) n7 R8 P2 O9 |7 w$ P! t* {
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
9 C- F: @7 m0 Y    printf("%13.7e  ",p[i*n+k]);}. f* c& U9 ^- O3 V! U. g7 u, B
         5 R8 U: y: R3 {  I, U
   printf("\n");}</P>3 q6 H9 |( k& ?: ^% L! v
) {4 s5 S4 I4 O
<>
$ F5 U+ q! Q5 H9 T( W  B  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
( U9 R# v7 R- W6 N# O8 d        for(v=0;v&lt;n;v++)
1 z- F% U+ t5 W" L) Q  {  c[i*n+v]=0.0;
+ q6 m% a/ G& L   for(k=0;k&lt;n;k++)5 _" m0 l1 m0 P; P7 d+ x
    c[i*n+v]+=p[i*n+k]*a[k*n+v];
* x9 P) x$ V& R  }</P>
' e2 w: f! ^0 c* K' N; ^<>
* v! ~( t0 ~! l( A     for(i=0;i&lt;n;i++)! W% @7 x; H1 Q1 n
   for(v=0;v&lt;n;v++)( c; q( F% A4 M2 Q. N$ o
   {* \$ p0 Q8 X$ r' U+ d( s
    a[i*n+v]=0.0;
$ N% V+ {: V) O* ^2 X4 Z1 }    for(k=0;k&lt;n;k++)7 B" {1 ?6 w( D- I
     a[i*n+v]+=c[i*n+k]*p[k*n+v];
# b8 N$ Q' Q/ m6 x   }</P>
4 h  V7 |' r/ L! T<>  T/ x) v. i* X- d6 d- m+ d
}//最开始的for的结束的大括号
9 K3 O0 ?" G7 X1 E, }) f; M return; : }$ x- T) j  w! j7 X" w. p
  }</P>
7 |2 U$ k; q; @
, f8 @% a5 n: m<>自己写的运行总是错误</P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

21

主题

7

听众

3435

积分

升级  47.83%

  • TA的每日心情

    2014-5-25 20:58
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    新人进步奖 优秀斑竹奖

    群组Matlab讨论组

    群组小草的客厅

    群组数学趣味、游戏、IQ等

    群组C 语言讨论组

    群组我行我数

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-3 14:36 , Processed in 0.390355 second(s), 66 queries .

    回顶部