QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"  O8 |  w, p" A$ F: m
#include"stdio.h"</P>
7 v3 E1 _7 T$ E* M<>  void strp(a,p,c, n,u)
' v: X6 z6 m- S( L2 {  e" ?( S      int n;
8 u$ ~7 w( E, x  z! E$ @) D/ a( k   double a[],p[],c[],u[];
5 U0 Y* P# Q, O* ?8 [1 d5 S" A, H/ E{   
( @9 Y& w+ [4 ^2 E) x   int i,j,k,v;
$ a. X# W0 N; ^& ^   double sum,asum;
" p0 l: G) F& qfor(j=0;j&lt;n-2;++j)
1 j' h% d: z$ |3 Y( x# S! l1 S. Y{// 最开始的for 循环
8 V$ o  {# r0 \       for(i=0;i&lt;n;++i)//初始化u[]全为零
$ P0 l9 y( r1 ]' q2 s. T     u=0.0;</P>
1 N1 F! X; S1 ]<>
" k2 G/ V) c* m8 M  ~5 r( {) C9 n      sum=0.0;1 z/ F! P# M& X: O$ a% e+ B' T1 {
   for(i=j+1;i&lt;n;++i)//实现a. w8 r5 R4 x& }, [: V) s4 C4 f
      {( a1 z- w# c# J8 q
       k=i*n+j;
0 }8 k0 J8 ]( I4 o. x+ a    sum+=a[k]*a[k];) i& N( Z: N* w) C, B6 ]
   }
- Y  W  P5 u& g0 {7 D# z      asum=sqrt(sum);</P>3 K+ Z! p! a, n: L! X2 n- I
<>      for(i=j+1;i&lt;n;++i)
; F  P% p% q2 W5 A. K7 Y. k! g   {' u8 R9 v/ N# e1 U9 U: @  g6 Q
   
/ C3 b  l/ `; @6 l* l. L& H    if(i==j+1)
. A. O. z. \/ V+ P     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;# h. W) L0 ~2 y* G# ?7 t6 f
    else! b( j# o' N4 C! @2 V
     u=a[i*n+j];
# F1 a& }' a5 x. s5 t   }8 s5 [% m5 T5 I* f0 ?$ \9 f
      </P>
) ~( h+ ]* \1 p; m+ n( z<>
7 d: l+ C' q: ~% m- C   sum=0.0;  //实现P
% u* [$ ?; T3 c5 V; u0 F( j   for(i=0;i&lt;n;++i)
9 O% K& Z3 Y( h+ v8 F+ V    sum+=(u*u);</P>7 n8 S% M* k" g; d  @9 o) ^- V3 t" i
<>   for(i=0;i&lt;n;++i)
1 N2 {% x9 g% m( Q' p   {for(k=0;k&lt;n;++k)
  `$ d# q/ C9 q0 v/ u+ |7 I    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
8 D0 F/ B! V' ^( J    printf("%13.7e  ",p[i*n+k]);}9 `$ O7 s4 |& y/ M2 b: s9 b
         
+ j3 u  f2 U% P! d$ K0 h( ~: ?   printf("\n");}</P>
& @/ r' ~% ]* w$ u
  q1 \( D2 A1 w& Z# C<>- R, v9 I6 ]! X' P, p
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘, f( p6 H1 O) i5 w9 Z8 c4 O/ C1 _
        for(v=0;v&lt;n;v++)
1 K1 x4 F2 X1 K* ^; u  {  c[i*n+v]=0.0;
3 R( ?- Y# _3 V   for(k=0;k&lt;n;k++)
3 M- V) B2 \5 s% W9 g% [    c[i*n+v]+=p[i*n+k]*a[k*n+v];
! I) D- F4 D- M6 j' G9 d  }</P>8 x: I/ }; }; O
<>5 g, H/ h& ]+ u1 G# m$ P% |6 @
     for(i=0;i&lt;n;i++)
* N. Z9 b* _8 i   for(v=0;v&lt;n;v++)5 v  F- w3 w- P, n, t) ]+ r
   {' V- m3 x/ y5 F) w* H) x
    a[i*n+v]=0.0;! r: e( h1 G) T5 u; b
    for(k=0;k&lt;n;k++)
# y1 \6 x$ S' _1 I: D     a[i*n+v]+=c[i*n+k]*p[k*n+v];! i3 j6 G" i7 `; |
   }</P>
' W( ^% S) u: G+ c<>1 r! D" a' m$ y: e$ _, R
}//最开始的for的结束的大括号8 C- X& Z! T+ A, b; B
return;
3 `: y( D1 w6 ^$ ~9 d  }</P>9 z1 [" f$ b# {' \+ z9 Q
$ R4 T# [* w; L
<>自己写的运行总是错误</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 12:19 , Processed in 0.330707 second(s), 63 queries .

    回顶部