QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
! i  Q) s# L* ?( J#include"stdio.h"</P>
, q9 B! {1 ?& ]) w) y5 x! m. h/ D<>  void strp(a,p,c, n,u)) U1 E5 c$ M5 n7 s
      int n;8 v' K8 l4 v5 f: h# l2 r
   double a[],p[],c[],u[];  ~' O4 e7 M0 y3 w$ a+ W
{   # L% {# s. v8 T1 U' _
   int i,j,k,v;
& D1 E: z4 k' _4 ~   double sum,asum;* w7 R* Q  W) ?7 d
for(j=0;j&lt;n-2;++j)( N) S  X( a' h3 Q) O
{// 最开始的for 循环
- U0 n$ ^& u% Y$ z- l       for(i=0;i&lt;n;++i)//初始化u[]全为零
. a# B3 Y, p( M- t     u=0.0;</P>" A. W- N  M$ ]
<>
2 H* `% _; j8 r/ [  H" b' D      sum=0.0;
% V) `$ W& e" W# V; Y   for(i=j+1;i&lt;n;++i)//实现a1 z4 I0 e- E* F+ F* p5 m
      {
  W# h8 a7 m: X       k=i*n+j;/ J! U; Y# Z$ c5 |9 @  G
    sum+=a[k]*a[k];
6 O0 I8 R! v9 `0 `: }: f# k, h   }
  l. h4 Z* W" ^) e; _# K      asum=sqrt(sum);</P>
( E( H4 ?9 ~# b2 `9 U  {3 {8 Z4 `4 E<>      for(i=j+1;i&lt;n;++i)+ T& P0 w! f# x5 A" e; V. I
   {/ |- O) D' h) y7 C' r
   
. `# @& o; ?  H( m6 {    if(i==j+1)
7 O: _/ l6 E" y& t# Q1 b     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;- b2 h4 v6 [3 ~' M) q# O: V
    else
. Q; X! |' l5 o7 ^" }1 i- T& t     u=a[i*n+j];
! u+ N9 ?; k# Q# K" b+ h   }
, l0 v0 z! V& P      </P>  `+ b: n- H! v
<>
/ [7 {: z' _1 l. u6 l' _+ f# a   sum=0.0;  //实现P
' N# \2 V- }; T* b   for(i=0;i&lt;n;++i)
3 z3 k* w; v) h  p4 ?5 o/ k    sum+=(u*u);</P>3 P: n2 _' P0 }( ~
<>   for(i=0;i&lt;n;++i)" R( f8 j: W2 g6 \  T' m
   {for(k=0;k&lt;n;++k)0 b3 C0 ]( ^, a$ M1 A% f$ e, w! T
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;2 k1 U* _+ F; j( ]
    printf("%13.7e  ",p[i*n+k]);}
0 w+ L0 n2 ]- [# i# F         
( [( L( T  [+ _( T/ S* H4 E   printf("\n");}</P>  }3 R( c! s0 Y* _: D

" a& X5 _: O& t5 ^! V0 ]( |( ^<>6 P3 t" G! v! d+ O) {% h
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘* b* Z3 K/ J0 R1 H' Z: g
        for(v=0;v&lt;n;v++), v$ K+ V, h/ h' A: C; \
  {  c[i*n+v]=0.0;
/ N! T. R# w: D- K+ `   for(k=0;k&lt;n;k++)0 Y1 P3 L) n: {3 e/ u9 O
    c[i*n+v]+=p[i*n+k]*a[k*n+v];
9 l- h' g& N. v' z; d; }  }</P>
, f3 b- l3 `2 q<>6 w  w9 @4 q$ @
     for(i=0;i&lt;n;i++)
$ r4 C2 O" M& T   for(v=0;v&lt;n;v++)' `: _, n* C8 \+ X$ T! x: z
   {- R: v& b! l% T) S1 m
    a[i*n+v]=0.0;
0 y! p5 d2 o  i1 S5 K5 X! l    for(k=0;k&lt;n;k++)
- D! }) ~' C. a     a[i*n+v]+=c[i*n+k]*p[k*n+v];' F7 l' g, P+ \. d5 i- D
   }</P>
" A- p1 o+ X2 z+ L/ _<>
  S- }  `! ~, y0 @% i}//最开始的for的结束的大括号2 P' h; J9 A8 _1 q: C0 O& H$ ~
return; + k" N9 c% W8 f% Q! H, Z
  }</P>" m0 O9 R0 ^5 \/ I5 J: P
! K8 _: {' L; Y  ?- {
<>自己写的运行总是错误</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:21 , Processed in 0.412141 second(s), 63 queries .

    回顶部