QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |正序浏览
|招呼Ta 关注Ta
<># include "math.h": [/ m: m# T! Z; W  z7 E
#include"stdio.h"</P>7 G. S( u8 s4 K" w) |' Z$ Y5 u. }
<>  void strp(a,p,c, n,u)) Q4 U% n" P  ^. w3 y: O
      int n;
& ]) s; C( `- s* P7 P3 T! r   double a[],p[],c[],u[];
4 L& {4 N( v; A' L/ y% o9 O{   
5 y8 p$ J7 V+ z* a$ n" B* ]: G5 V   int i,j,k,v;
6 h& A' M' B3 A" W& u8 s* L" D' z   double sum,asum;) X& ]  W- S/ \" w5 e
for(j=0;j&lt;n-2;++j)
' E0 T5 q1 ~- H! Z{// 最开始的for 循环* _7 O+ R# s+ x0 f* ]: k+ C7 j
       for(i=0;i&lt;n;++i)//初始化u[]全为零
7 A. i* d. t/ a3 p8 Z- F     u=0.0;</P>" n: Y. N' Q  Z& R. {1 I! n/ m3 A
<>
' L( Y# \' v+ ~; S& T7 i5 |      sum=0.0;' V+ s. t6 J; Z5 p# [' O0 c
   for(i=j+1;i&lt;n;++i)//实现a1 v) F. w1 K/ q4 h0 }$ _
      {) \) a; Q3 C9 x! Z
       k=i*n+j;
& G& j* ~* ~9 j$ E/ O& S7 L1 U2 @    sum+=a[k]*a[k];. s; v, P- x8 r
   }7 O$ |; `" M! F/ S* ^) J
      asum=sqrt(sum);</P>
' y5 |" J* T2 c: `( {' N<>      for(i=j+1;i&lt;n;++i)/ I% t4 p- M! y$ P# e
   {* V) R- L6 S3 v- C
    9 I( J3 j$ I% E* \
    if(i==j+1)
+ R+ B: A  s. F3 F5 N8 g+ ?     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
4 X& H" O& r5 q! J5 @$ p& i: N( _    else7 @0 r" C, z6 U% P- x
     u=a[i*n+j];
  o$ `* K) [, ^, u" u1 z   }7 R' x1 T3 }# @" G$ }
      </P>* V; |, M- v% H
<>
6 \( G( E+ T" k   sum=0.0;  //实现P# K+ j* s; P$ X$ k
   for(i=0;i&lt;n;++i)8 T+ Z+ _! F0 s  M0 [" h
    sum+=(u*u);</P>* O8 n" S+ u( h
<>   for(i=0;i&lt;n;++i)% y! v$ b% [# {  E% f- J, j$ S
   {for(k=0;k&lt;n;++k)% E! d1 y3 N" a% g5 P
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
5 `: R; J% B- r1 i; T; R    printf("%13.7e  ",p[i*n+k]);}3 _6 O# s  l2 i! x% c
         4 E- ?4 ~, A: g, g6 y3 c0 }
   printf("\n");}</P>/ o/ E; P  V7 Y; O6 L
4 C  s! W8 N4 X- p
<>
! ~6 R9 u( D" s  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
: f# o0 e6 X+ s" `& F9 T+ N: G        for(v=0;v&lt;n;v++)* A: I1 ~0 c8 Z
  {  c[i*n+v]=0.0;
+ \; Q# [2 n1 I2 I5 d  V) n   for(k=0;k&lt;n;k++)
2 S6 O: [; l) I9 x3 o7 |4 g    c[i*n+v]+=p[i*n+k]*a[k*n+v];7 L$ z: e$ t. t' d/ t5 q5 t
  }</P>
& X8 d( D2 U# J7 X3 Q- A9 s7 A: ~<>
# n2 f* m+ o3 f# Z' v9 k$ d+ E     for(i=0;i&lt;n;i++)
8 I# n2 y1 _8 F$ V* T1 X! n   for(v=0;v&lt;n;v++)
! T/ s) C9 I# L+ L   {
8 C" m3 Z- @7 J2 c0 ^% G    a[i*n+v]=0.0;8 z5 @' t. `3 G
    for(k=0;k&lt;n;k++)4 \1 e. F3 {! x, v
     a[i*n+v]+=c[i*n+k]*p[k*n+v];
5 Q  ~* K( s! T) K9 Z   }</P>
' N) q1 l* T0 s3 W+ q, @3 g<>9 C# U4 Z9 O2 j- f8 p/ ^+ ]
}//最开始的for的结束的大括号
+ ~' w: }! [9 T9 U5 d return; & }: L# a7 G4 U4 |& K
  }</P>
0 \' T# V3 |, Q. w
$ p8 T4 i' f5 |6 K8 @# I<>自己写的运行总是错误</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-4-17 18:17 , Processed in 4.718498 second(s), 64 queries .

    回顶部