QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"( @9 @* u# S) G% K: Z% P) z
#include"stdio.h"</P>1 U; C. c, Z% T3 z7 w
<>  void strp(a,p,c, n,u)
! B; H5 l5 I% Y0 P- p  @' c8 {2 V      int n;
( W) J- r5 N1 }* M+ p   double a[],p[],c[],u[];
. _! l5 k0 A" j* b( V! p{   
% M: }0 y9 e0 B' g* N% {! c: ~   int i,j,k,v;
- F  d$ h% g  m8 g   double sum,asum;/ C: s0 p$ A) l2 [( C' {
for(j=0;j&lt;n-2;++j)
0 ^7 L* P4 i* m2 \6 S" g% T: K) b{// 最开始的for 循环# T9 W; a- j1 k3 X9 d. Y
       for(i=0;i&lt;n;++i)//初始化u[]全为零
) [, t# Y1 k3 f6 r% T' E( c     u=0.0;</P>3 k7 u" H( j5 q4 n; f8 E( ^
<>9 {& C1 ~" p; X; ]* f/ g& _
      sum=0.0;
- {+ r5 V; W7 O   for(i=j+1;i&lt;n;++i)//实现a8 k  L. w8 e7 V5 O
      {2 n2 F8 S; A# h
       k=i*n+j;
' m- [1 t8 u4 E; g5 l    sum+=a[k]*a[k];
: e: a/ ?0 l: ~+ q: v/ x5 v   }
5 y: r5 |- N$ i4 P      asum=sqrt(sum);</P>
3 }1 w$ u9 t9 U! n<>      for(i=j+1;i&lt;n;++i)
3 m* @7 [* X1 h9 l8 w   {
( D9 o# [# O8 v( B   
% v9 _4 K' e+ n& U4 M- }    if(i==j+1)
( q1 z# Y$ r5 x- d     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;& E. X: k9 F1 S" n! f% W
    else
6 r0 B2 K' i) J- w  `     u=a[i*n+j];
7 ~( Y& G1 j# C+ F5 r   }7 }& h& a2 W/ J
      </P>) n1 j7 r9 ~4 }- o6 J
<>5 M, \" Z6 v3 U, T" u
   sum=0.0;  //实现P
) W0 S- \  J# R. h7 b   for(i=0;i&lt;n;++i)
& r3 ~3 J- Y$ F9 S0 g: N5 M9 L    sum+=(u*u);</P>
" f* G) [5 K3 s4 {<>   for(i=0;i&lt;n;++i)3 f8 x% [3 e- n' i: O1 A, i- }4 o
   {for(k=0;k&lt;n;++k)6 T7 H6 q6 I5 k
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
8 n$ p7 V" J% x9 G- m: w    printf("%13.7e  ",p[i*n+k]);}, \+ c7 [' \. n: b5 S- i. f
         * V. b. o/ u3 r# i- B8 u5 y
   printf("\n");}</P>4 T7 R# w) g/ k+ t

8 f2 ~  L0 c( o; q9 q/ P<>
& J  T9 |! b0 a  d( o7 G( _- I  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
: O. b, r4 y6 X  l4 a' T6 w        for(v=0;v&lt;n;v++)
" ]5 e5 o3 a, Y; F+ p  {  c[i*n+v]=0.0;; X2 [  B$ }: C4 |
   for(k=0;k&lt;n;k++)2 D/ ^) H$ u* v5 g: g
    c[i*n+v]+=p[i*n+k]*a[k*n+v];+ U, e6 g4 w  o$ M" e% L% q8 w; L
  }</P>
4 a# D4 ?$ C" ?0 o# A4 V* A+ i* L<>
7 F$ _) q8 r4 O% C     for(i=0;i&lt;n;i++)
7 B; C  L$ ^2 U6 p( Z7 N+ [1 p+ T   for(v=0;v&lt;n;v++)% x/ d9 ?) h5 J# ?9 p* {8 [% w
   {
7 X, \0 b' x6 m    a[i*n+v]=0.0;3 p6 |% {  t& A1 O- R
    for(k=0;k&lt;n;k++). t4 V8 D  \1 F  Y
     a[i*n+v]+=c[i*n+k]*p[k*n+v];8 e2 ~! b4 R0 ^" m. X8 W
   }</P>" M' r+ p0 A# n# W! q: y. t' Q, P
<>7 H8 ]& w* f- G+ z9 c
}//最开始的for的结束的大括号- I4 j5 I9 {/ F9 S* |9 e
return; 0 |- B* q0 B+ T5 \. }9 V/ [
  }</P>
1 |2 {0 Q; l  b7 l4 _; N( N: V# M% K9 i2 s9 ^4 `) C
<>自己写的运行总是错误</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 16:59 , Processed in 2.113938 second(s), 63 queries .

    回顶部