QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
( {+ G  p" `( B; m( s8 X3 R4 i#include"stdio.h"</P>
5 O  q0 A: J3 G9 a# \. j<>  void strp(a,p,c, n,u)
& i8 b5 z1 E$ z3 X% S      int n;) X$ h. W. m( ]4 X4 ]6 o
   double a[],p[],c[],u[];
4 x' }( n# y- O{   3 s* A( F& q6 q# h7 y2 G2 {
   int i,j,k,v;; ]: L* F% _% x7 z5 k$ f8 a
   double sum,asum;
3 j  {/ n$ Q: Mfor(j=0;j&lt;n-2;++j)
( B. K9 J/ h) w  @. n{// 最开始的for 循环2 A2 D8 j1 j9 h8 Q. e
       for(i=0;i&lt;n;++i)//初始化u[]全为零
% k( U2 s; b$ C/ M9 W# ~, |     u=0.0;</P>
7 h/ ?3 m! G! ~<>
* l$ A* |% G1 @" p      sum=0.0;5 K% E3 r  j8 K' d) e% ^4 a% v7 {
   for(i=j+1;i&lt;n;++i)//实现a' p5 N$ Y" j# Y3 ^
      {
/ o" `/ A/ Z6 C+ X* o       k=i*n+j;* b) B( n* R% V0 B0 _
    sum+=a[k]*a[k];
9 ^) |0 u* Y, Q  }+ T   }# i3 ]" e, v0 h/ o+ \  ]/ p
      asum=sqrt(sum);</P>& u" d& [9 ~! {6 q, u
<>      for(i=j+1;i&lt;n;++i). `+ g; J' {4 j( b
   {
+ [+ L( _. O8 ]7 I9 y, Q    & g. Y1 S# e0 ?/ C: ^. V3 k
    if(i==j+1)
5 c; @1 ~2 R; j! W  u* d     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
; b4 D0 x$ p9 o7 {6 O    else
' P% K; w% ~! s     u=a[i*n+j];; L8 H- H0 w9 q! o: v
   }% e9 @3 O2 [4 p9 R7 e5 U- s! j
      </P>
- i% K$ w+ ~1 s<>
7 L' h) h% Z. b* N/ P; k+ q6 V   sum=0.0;  //实现P" ]2 @5 }8 k. U5 r# z0 D/ W
   for(i=0;i&lt;n;++i)
0 o. n2 T) k% c5 P. l    sum+=(u*u);</P>: @7 Y1 L! l4 \7 _9 {8 Y3 k4 e
<>   for(i=0;i&lt;n;++i)
: u1 _2 I& A$ E/ ~$ p) b" ]) q   {for(k=0;k&lt;n;++k)
7 R! E6 }% ]: F1 i( A# x4 A    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
1 X. F) i/ j$ `( I' f    printf("%13.7e  ",p[i*n+k]);}; h0 k+ h! G" E% C9 X
         , I9 _* B, S/ ]/ A
   printf("\n");}</P>
5 W! s7 E6 t4 `+ ^
) p' N& L+ ]! p# A<>
) [" V+ P( P+ P3 g  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘5 o4 S0 y6 \& A* G3 m8 u
        for(v=0;v&lt;n;v++)
1 V# {0 |4 v7 ?; d4 H7 d+ B0 v$ F9 |" H  {  c[i*n+v]=0.0;1 S" \' N% ^9 `' s' h
   for(k=0;k&lt;n;k++)' l2 m" s% T; L  h, t+ U1 H
    c[i*n+v]+=p[i*n+k]*a[k*n+v];
$ j/ ~$ G, x% Q* y4 ~" q  }</P>5 M! Z! N! y2 Y, |  I( n
<>
0 F* w* U6 N& F& I$ X) C. T     for(i=0;i&lt;n;i++)
. ~! _# Z' d' E4 _, X: p   for(v=0;v&lt;n;v++)
3 F' v/ Y: t# r1 R   {
4 z3 ~+ M6 u6 v+ T" T& H    a[i*n+v]=0.0;
+ N: S6 B* ?* x6 {* ~/ h    for(k=0;k&lt;n;k++)
( z; d( E0 J) r     a[i*n+v]+=c[i*n+k]*p[k*n+v];
9 @: o6 s( w% A$ U% R. X+ ]   }</P>
1 y5 ]0 e4 v7 p& J9 m$ x! Y<>
) g! X; Z# H- R& X" L/ l}//最开始的for的结束的大括号- i( Y7 h6 I$ [" r1 w
return;
) M6 t' N/ G3 N: s" z. B  }</P>( {$ f3 N: l1 P( C( \

  j2 d; S+ P9 I- k  q<>自己写的运行总是错误</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 05:40 , Processed in 0.375498 second(s), 63 queries .

    回顶部