QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"/ A2 n, U9 F+ U
#include"stdio.h"</P>
# S4 h4 N  @5 C<>  void strp(a,p,c, n,u)* f; H* _# }; U; F% U2 h
      int n;
. V  ]9 X% j# ?; y2 c0 c. [3 T   double a[],p[],c[],u[];* [2 w4 e4 |, d( s. ~$ r
{   
* o* @, E- Z# l. U; x0 U" E% I   int i,j,k,v;
: _+ A  V/ A3 t! ]0 n. w  p   double sum,asum;7 D9 U& N& `/ W. @9 p/ v
for(j=0;j&lt;n-2;++j)% t9 g9 N$ d! Q4 m# n
{// 最开始的for 循环$ J- V; a3 E  K1 f2 N6 z0 K
       for(i=0;i&lt;n;++i)//初始化u[]全为零
( w+ V( G8 e7 \/ t     u=0.0;</P>7 T, S, o6 E* h  N6 L
<>
; s  Z$ D9 G/ y' y8 `) q# A/ }      sum=0.0;+ r9 L( T/ z2 R" d$ H0 Z; ^  \7 ]; i, k
   for(i=j+1;i&lt;n;++i)//实现a. I- I! _* C2 p  b$ f; f
      {
& l* P7 c) l& q( i. u( ^       k=i*n+j;' t) Q( C4 {& {+ W9 q0 A* ?
    sum+=a[k]*a[k];2 I2 }2 l- L( U8 f
   }+ P- S. ~5 X  }0 V
      asum=sqrt(sum);</P>/ I9 m6 A( |! p: W
<>      for(i=j+1;i&lt;n;++i)
7 t' c6 z; x$ D1 I& f   {0 I; ]6 v0 C; H' D& d
   
) {. f/ Y# K/ z; J- P2 E    if(i==j+1)  i! D2 w! {+ a7 R
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
* z2 B1 _4 H3 G% \$ h    else
# G6 K. C* d/ x! H+ b     u=a[i*n+j];1 B: H1 B2 p4 ?) |9 P8 v
   }
* S/ X* f- y. |3 @4 b      </P>+ R/ V% r. L  A* T, {4 B& m8 o
<>: w; e9 j' m* ~8 Y) }* R2 k
   sum=0.0;  //实现P0 j. k( y. n& E. W/ E9 D# P
   for(i=0;i&lt;n;++i)
$ `9 b' A; k) \9 s: \+ s    sum+=(u*u);</P>
. w5 m" v, N1 A- o<>   for(i=0;i&lt;n;++i)+ _+ e. J/ G6 x3 T: S- M; p5 P
   {for(k=0;k&lt;n;++k)6 i) {; n: ^) j! ?1 Q
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
8 v  ^: C7 h+ a6 D" o4 Y9 k    printf("%13.7e  ",p[i*n+k]);}
! a7 l0 h( p6 ?+ N' H         8 \. C0 h8 t& q9 T  U0 }% X9 C! U
   printf("\n");}</P>
$ ]! k9 I9 @  V6 X2 d5 s6 C( C+ }6 L; X* l$ f, d7 `; p
<>5 R+ }9 N( k& @; c0 \: V5 A
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
: U+ |7 `9 w* I4 H        for(v=0;v&lt;n;v++)
0 o" o, [3 K9 d9 v, B+ H  {  c[i*n+v]=0.0;
7 Y, o; A4 E: w( x. Q   for(k=0;k&lt;n;k++)
& O1 H  }5 N" e8 }8 T- F: o) H1 X    c[i*n+v]+=p[i*n+k]*a[k*n+v];
: R# |2 U: {. q2 j7 [* z  }</P># r# {/ T) V% E% q
<>: ?; u7 Q/ o, A( \% X
     for(i=0;i&lt;n;i++)7 M; E* h; \4 l. d+ |4 s  g
   for(v=0;v&lt;n;v++)
' _9 b7 S0 T* G+ y7 X2 S   {
+ ?8 I4 m4 b$ M5 D; Y$ t    a[i*n+v]=0.0;4 _- @' s$ Q+ F. B* `" _3 M$ ?
    for(k=0;k&lt;n;k++)
, k, e( \" ]. P  H. u     a[i*n+v]+=c[i*n+k]*p[k*n+v];
/ {+ a  V" G7 X, M8 p& f) A   }</P>
; B& K! F0 D% `1 @0 J<>8 }/ A$ b* o  E4 B% |
}//最开始的for的结束的大括号* K8 ~3 C: I, M$ ^
return; & c$ l4 f  }3 a7 ~
  }</P>
7 S1 G2 a0 R" f' Q0 K' }
6 U) Q0 O4 }: G( e' I& p<>自己写的运行总是错误</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 13:16 , Processed in 0.474642 second(s), 63 queries .

    回顶部