QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
) V# g" b8 D9 V#include"stdio.h"</P>/ y; I9 _5 j' ~9 R3 W2 @, Z
<>  void strp(a,p,c, n,u)! O: Q- u* q3 V7 y
      int n;% r: ]; a, v. `; ~8 b. ?/ D
   double a[],p[],c[],u[];0 n* m, @* P0 f2 {7 D1 ?8 t
{   2 P3 [" x3 i! i# f! V
   int i,j,k,v;" o: _1 O- ~. U2 q6 J) I. _2 ]0 k. E
   double sum,asum;, x) m9 P3 ]2 U6 Y
for(j=0;j&lt;n-2;++j)
; x  P# ]: i/ w{// 最开始的for 循环
2 I9 q2 U4 T) j$ v       for(i=0;i&lt;n;++i)//初始化u[]全为零6 q& O5 e: Y$ R. _
     u=0.0;</P>! q1 G/ P6 a* J$ O
<>
2 n7 ]( S4 h% v" U8 Q  A      sum=0.0;2 |9 U9 T; K9 j2 w  K: R2 V3 \3 C
   for(i=j+1;i&lt;n;++i)//实现a
) B2 u6 C( v- y  t1 C2 g/ y      {  ^2 J* d" i7 N! N
       k=i*n+j;
+ t6 p5 G" T7 I! D    sum+=a[k]*a[k];
' C3 x1 w, B# n" j+ C7 w   }% J, {+ R0 m6 s5 b1 r! t
      asum=sqrt(sum);</P>
5 u  m1 w- f- I9 |<>      for(i=j+1;i&lt;n;++i)
' v- C* l" s9 E  s   {, A; m. g9 ?; o) q
    + Q; @- k- a- S( ^* v
    if(i==j+1)% }. Z' A9 |2 _4 ~
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;0 q) g' J- Z. ~/ {# g3 E, h+ F
    else
# r' _7 Z+ F9 @; h     u=a[i*n+j];, W: H2 C5 ^- t2 K$ f" w
   }
% A: k7 ], q( F8 w' d2 F      </P>
1 n8 {, r- T1 s) J6 R, U4 Y<>7 D8 q# @; @1 F  {: t3 W2 E. V
   sum=0.0;  //实现P
% X9 B* b4 G( x' ?   for(i=0;i&lt;n;++i)
% v7 R% z8 }7 l' q- D$ q1 u& r, i8 n    sum+=(u*u);</P>
+ n, Y7 _: q% c<>   for(i=0;i&lt;n;++i)
) Z9 x# H% d' m# x   {for(k=0;k&lt;n;++k)
* o0 l8 l4 ]8 s" W# q    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
( W& R, Y+ y+ V& o- h7 Q    printf("%13.7e  ",p[i*n+k]);}$ _2 N9 G- @6 Y. S. [: T% q
         
2 c4 T$ l) q$ P0 K2 I$ t   printf("\n");}</P>5 f/ p5 g1 U4 Y  k! ]

& t+ T0 ?3 |8 J9 P5 B0 s4 K<>
2 F8 ~- G+ K6 H* U& E2 s: O  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘  n3 D) X/ E9 q0 T, C- I
        for(v=0;v&lt;n;v++)' O: c" k5 v! {
  {  c[i*n+v]=0.0;
& S! M0 u* G0 D3 @/ E   for(k=0;k&lt;n;k++)
3 {1 H% g# B. X1 p, w    c[i*n+v]+=p[i*n+k]*a[k*n+v];# B, t, s4 y0 e  B* [. K' K  k* q
  }</P>
6 l4 V, D% Y1 `/ r: H; K* C<>9 M) v# \4 E3 ?- f' \0 P; {
     for(i=0;i&lt;n;i++)
7 V0 X' e- h) ^: x! ^   for(v=0;v&lt;n;v++)6 g  X" \1 o* R; r+ k1 c: }* f
   {6 ]3 f' `2 |- c+ e
    a[i*n+v]=0.0;0 M; l4 U4 J, [1 a5 O
    for(k=0;k&lt;n;k++)6 h; e- G0 A* r/ J, G2 g+ ~
     a[i*n+v]+=c[i*n+k]*p[k*n+v];
" D3 L8 r& D. t1 @- m3 D3 Y$ N" Y8 I   }</P>, _/ [  ]0 \" O' `* e0 ^; |$ O0 l9 y4 H, P
<>1 N0 g9 p) O7 t) `
}//最开始的for的结束的大括号
/ d0 [; ?1 I: t return; * Q: S9 D# t8 v9 N
  }</P>+ R( T7 U7 @8 z

: C0 a7 o: \! K2 g9 u$ e( g9 \( h<>自己写的运行总是错误</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-19 14:34 , Processed in 0.395517 second(s), 65 queries .

    回顶部