QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
+ ^9 L. H: }: e#include"stdio.h"</P>. O& U. g% F& d$ x4 |# f$ Q
<>  void strp(a,p,c, n,u)" \: P% d0 ?' q' Y2 ^+ o& R! |) R
      int n;
- W6 s4 b. b5 y2 H   double a[],p[],c[],u[];# `" W$ X/ g1 L$ @5 V
{   
* Y5 E  E  Z- J9 e   int i,j,k,v;
5 Q/ L+ F6 u% E' }9 B$ @   double sum,asum;# G. E. l+ i6 [& D% _, t$ B$ x
for(j=0;j&lt;n-2;++j)
3 y* K0 }+ X- H8 ^2 t3 Q2 i5 f/ A% m{// 最开始的for 循环/ X, F1 a1 X% e' J
       for(i=0;i&lt;n;++i)//初始化u[]全为零
' W1 L( [- x1 b7 K6 ^     u=0.0;</P>) n( ?$ q! V/ F  o: z5 z/ ]6 q% R2 X
<>) N- Q+ m4 b; z7 h7 ?; H- _8 ^
      sum=0.0;/ {& H; \3 g( J  T. k* r
   for(i=j+1;i&lt;n;++i)//实现a1 g  U" m: b- s2 k7 }
      {2 G* }# h) b- C7 G
       k=i*n+j;6 g% }8 r2 [. n5 B, z1 i8 P( G
    sum+=a[k]*a[k];
- `* e- L5 \4 \, t   }
  {# C$ e  E1 C) p      asum=sqrt(sum);</P>
7 P/ {( k& y- e3 D<>      for(i=j+1;i&lt;n;++i)! a/ t7 ]; @2 b2 \
   {& N+ M, C) t+ A+ e
   
( K0 r& |7 z# v, U    if(i==j+1)6 X. e8 W0 Z2 C" ^
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;5 K& D8 @/ c  V. q  r, A% n
    else
& @% B( x4 F8 r5 D/ [8 K     u=a[i*n+j];
. P. }6 x% W, r8 ^9 H& W   }
# }! [  I$ u6 g" C, `# |      </P>+ z8 t5 t0 \/ F: S$ Q
<>
( o8 M' g( A* V2 k, b   sum=0.0;  //实现P
/ M9 o$ ]* m- K/ v, t1 W7 u   for(i=0;i&lt;n;++i)4 E2 V, |' E* b5 ?' s
    sum+=(u*u);</P>( q7 u; [  A3 M  l! k- J
<>   for(i=0;i&lt;n;++i)
( D% i: \5 o; {8 l" |" q   {for(k=0;k&lt;n;++k)
1 F" i) O0 X0 c0 e- \    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;" z/ E" ]% D& O6 Y0 [0 C
    printf("%13.7e  ",p[i*n+k]);}
+ i  `' H4 j5 I* n  P         & @+ \" n/ E8 l4 o- p5 l3 e# j
   printf("\n");}</P>5 c. ]# T& ~0 d( P. s2 g

: n$ Q$ p* ?2 I0 z; S* ?<>
0 v0 ]) |6 |% E  h  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
  ~: F; [0 b1 R        for(v=0;v&lt;n;v++)
! z  H' K7 z1 k+ h  {  c[i*n+v]=0.0;* a. D, v! f. ?+ ?, \
   for(k=0;k&lt;n;k++)4 s8 }" M# L- ]! M1 B* M6 S% W
    c[i*n+v]+=p[i*n+k]*a[k*n+v];: i" ~5 b6 d- _5 ]2 v$ `: A  S
  }</P>$ V. M) b# Z& n& y
<>
" r2 k* T# q# G7 f2 y5 i+ u, Q     for(i=0;i&lt;n;i++)2 z9 v. d- ]+ r" ]6 j* ^
   for(v=0;v&lt;n;v++)" D4 W6 y6 h5 `& r4 P
   {1 v6 l' L. p& t& \) P/ W" @. i
    a[i*n+v]=0.0;7 }& k! u2 Q. y) c8 n+ I8 Y; s
    for(k=0;k&lt;n;k++)9 J% a+ K. k! g' U2 G2 ]. j
     a[i*n+v]+=c[i*n+k]*p[k*n+v];
) b' d6 k& R% I   }</P>6 Y3 a" M. v6 M1 G
<>& q0 l+ C% ^% g( u! F6 {
}//最开始的for的结束的大括号
1 a( M" e2 w& }# }! h5 N- J return; ) q  ?1 \  g; ^5 ~) x8 x# e
  }</P>
2 K4 U% r; b2 Q2 k4 K+ g
' j1 x9 ^0 ]6 X# T. `<>自己写的运行总是错误</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-7-19 09:56 , Processed in 2.636738 second(s), 63 queries .

    回顶部