QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
/ l+ [1 K+ u7 ]4 }, e1 U#include"stdio.h"</P>- [% _1 a; ~$ A' ]6 W
<>  void strp(a,p,c, n,u)' Y, V& N" W/ R, b& J& `6 c
      int n;2 Y! u5 v' S4 ~9 e
   double a[],p[],c[],u[];+ W3 X$ Q$ C2 S
{   
+ P7 I$ ~, s' u: c' u   int i,j,k,v;8 M! X$ a. l  d( ?0 b
   double sum,asum;7 z" R0 ]3 v4 L7 U8 Z5 `* v1 _$ ^
for(j=0;j&lt;n-2;++j)  T9 o4 l0 J/ o% S
{// 最开始的for 循环6 P2 F4 t5 a0 B' }1 {
       for(i=0;i&lt;n;++i)//初始化u[]全为零
; t8 S  _2 D, u2 O  f3 o     u=0.0;</P>( |- S& r9 P- b  a% r' N
<>
+ s1 X) a' h6 y1 f! d      sum=0.0;3 [$ c# S1 a9 M; K
   for(i=j+1;i&lt;n;++i)//实现a$ q- `1 e- P* @+ n/ A
      {
: e& K$ F( D% }  _/ P       k=i*n+j;
' l+ R2 E. ]! `: R* b0 f# J    sum+=a[k]*a[k];
) W  G3 G8 T  M+ M; Z   }4 s& I6 K+ G/ L5 U4 v2 F
      asum=sqrt(sum);</P>- Q" B9 e  Q: u# k1 `
<>      for(i=j+1;i&lt;n;++i)- a# T  z& _; v+ I. Q
   {
6 V7 o9 \1 y1 |* P& ]$ F   
4 c& w' C3 O; S% U0 |2 }    if(i==j+1)2 {9 f; h4 i* h1 h, m: o) k
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
% i, u" J- o8 I% i3 O    else3 M8 F# b. l. N) ]4 v
     u=a[i*n+j];9 o3 a* A) J4 g* _. N
   }' S/ A: e1 q9 V* `0 Q
      </P>
3 W4 N  X8 I& T5 f; a, ^: S<>9 _7 I) |: \# w" b0 i
   sum=0.0;  //实现P9 r4 e) F! ?0 ~
   for(i=0;i&lt;n;++i)
+ R  g# X. O: X1 b6 J( q0 s    sum+=(u*u);</P>7 A. o) F4 x( V- s8 N
<>   for(i=0;i&lt;n;++i)
- d+ ?/ ?. Z4 n+ N+ P   {for(k=0;k&lt;n;++k)
7 d/ {' w8 Z) R4 H& `/ r% _    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;. s  E6 \0 v9 {% Z. v' `3 U
    printf("%13.7e  ",p[i*n+k]);}# ^  s4 z" m6 y! \+ s, m: Y: U
         2 _- \- t  |9 K& n
   printf("\n");}</P>
: [1 p2 \' s% U
3 [$ h$ M# \0 v* j7 z* {* ?<>3 E7 f" N# o9 o" A9 B' ^
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘9 C; I- a& t& s% r7 Z
        for(v=0;v&lt;n;v++)
5 l- K8 E0 ]( Q/ M) a) k3 V+ V7 Z! K  {  c[i*n+v]=0.0;! D0 \! X! @7 H4 u& n: h0 L
   for(k=0;k&lt;n;k++)
0 x/ g0 ?8 w( w- _; C4 l    c[i*n+v]+=p[i*n+k]*a[k*n+v];
) f. j* L+ v& [! h) }+ b5 D  }</P>2 u% L9 x7 U7 d. A, m
<>% L6 T+ w1 ]" w% y/ \
     for(i=0;i&lt;n;i++)
' `, j$ l0 A9 S; x! u- @3 |. \! N# J   for(v=0;v&lt;n;v++)$ a# d: Q' {# m4 Y! M5 v7 g! c
   {
  M% R; ]7 |' U( T. I    a[i*n+v]=0.0;
2 Y. g6 h% K8 U1 a    for(k=0;k&lt;n;k++)
3 F3 `  G+ z! }( `9 m  h     a[i*n+v]+=c[i*n+k]*p[k*n+v];3 j- U0 r/ v8 \7 j6 P7 p
   }</P>
6 s/ y" v0 q0 O* M+ k! y2 z<>9 r7 |& b& ~; b; I& x# G
}//最开始的for的结束的大括号$ ?( g" c+ y0 B* K
return;
/ M  X: p9 F! t3 d# L2 E. f' f  }</P>" B, x" x' V8 k# i1 F5 O

" q. _3 M* ^% X# ?2 w/ a5 m4 L$ n9 `<>自己写的运行总是错误</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-20 15:55 , Processed in 0.462915 second(s), 62 queries .

    回顶部