QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
  @4 E* k( j% w" W( o- x#include"stdio.h"</P>
2 D% \, z5 _$ G; y5 b0 s* t8 H# B  ^<>  void strp(a,p,c, n,u)
% X# I6 z2 G  ]! N, D$ T' q      int n;0 Y* ~4 C8 u" T6 v9 c- d! G
   double a[],p[],c[],u[];
; O' N- S& P0 c, I{   
) _! L" y$ ]/ d9 b) f; c1 W   int i,j,k,v;
2 g3 }/ ^" E3 R   double sum,asum;% H8 Q( S& m# [$ L* c6 C
for(j=0;j&lt;n-2;++j)7 c! o- p& F* w. W
{// 最开始的for 循环! I' a3 D6 r# {3 Q% y/ P- Q
       for(i=0;i&lt;n;++i)//初始化u[]全为零
' ]: j0 p6 h7 l     u=0.0;</P>. n2 G* N' Q) [! ^7 a' X
<>/ B( v+ Q. g! I3 T
      sum=0.0;* H* o* W( K, c7 k
   for(i=j+1;i&lt;n;++i)//实现a
' A3 {* F4 u) \5 S      {: g8 l, J0 |( A  z6 G- U( r7 s
       k=i*n+j;/ \& D, k* U/ S* S; K$ |. V
    sum+=a[k]*a[k];
9 d& I" T3 w' a5 W' E' \   }  r3 }8 S" ^* J
      asum=sqrt(sum);</P>
/ n* x  U* v2 }( C' O<>      for(i=j+1;i&lt;n;++i)
( T9 _9 {# t  m  P. a' }   {' w0 D6 {7 }4 k- k0 ]) O" Y
    . K, @3 ^& {5 |) Q
    if(i==j+1)8 K. f8 }* [8 T" l! g9 d
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
" U# D' J1 M3 N- N$ G    else+ }0 B( J/ o  o1 W9 ]% c4 J# L
     u=a[i*n+j];: N% G- a' [' ^$ P: S9 A  B4 y
   }( k8 N3 M5 r5 B$ P' B$ j' ]8 U" H
      </P>7 {& r) R# Y7 N, E
<>
' C  ~* E2 ^- O) @- V   sum=0.0;  //实现P
4 v1 v4 F7 O# N- p) o   for(i=0;i&lt;n;++i): i! M" n8 \5 h2 p8 F- Q
    sum+=(u*u);</P>
+ h9 @. P1 ^6 z3 t0 B* C4 x<>   for(i=0;i&lt;n;++i)
# }4 V; K8 Z  ~; r# \   {for(k=0;k&lt;n;++k)5 V, T- `0 @) r8 n6 d, y/ I1 Y
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
& }# w( J* A( G& B, M- k1 M    printf("%13.7e  ",p[i*n+k]);}) }' P& |- v" w6 i. w
         
. R/ \  E/ D6 l* D6 ^; N   printf("\n");}</P>3 H6 ^3 _" |- V5 g0 f' i# h
! f1 P' Z- \$ H& L
<>  L, x, g7 G( k% B: P4 o! R9 I1 F
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
0 d; V. V8 ]/ c& p# ?* V9 I$ M        for(v=0;v&lt;n;v++)* h5 q9 y5 X" T: d: t6 _9 y( `- @% O( U! _
  {  c[i*n+v]=0.0;
! D4 G3 A/ w) {+ t' x   for(k=0;k&lt;n;k++)
7 g. A- H# X6 z* N. M+ `5 {1 s    c[i*n+v]+=p[i*n+k]*a[k*n+v];
  F  b2 W4 P0 L3 E) S; S/ E, |1 d  }</P>
0 |* q. V- F$ f$ _9 H& D; ?<>
& \* g1 L1 L$ _' f0 u- b. s7 L' _     for(i=0;i&lt;n;i++)6 g6 T1 Z( n% I6 w% n2 y2 y
   for(v=0;v&lt;n;v++)
( R; w" Z" A7 e2 W" W8 R) Z   {
6 z7 u( e1 O  q3 Z6 W9 d8 H+ }    a[i*n+v]=0.0;
" \6 `( \$ M1 R" r! |/ [9 x2 ?    for(k=0;k&lt;n;k++)& E* X/ m! k) @8 |8 R
     a[i*n+v]+=c[i*n+k]*p[k*n+v];& P( ], N) N; t2 h" m
   }</P>" z* q& Q$ h+ _6 w: f% r
<>- ?+ @; m0 P1 S, q! c
}//最开始的for的结束的大括号5 Z9 C2 A) a$ J7 _( M$ K
return; 9 K. G3 ?6 {/ b# e6 q
  }</P>
) H- }6 w& ^  b5 [  B) b5 |* G
: P. t& _+ f& Y8 x% i, L3 N<>自己写的运行总是错误</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 22:42 , Processed in 0.332275 second(s), 63 queries .

    回顶部