QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"$ p, \- W; W% r( m( c' e& H6 ^
#include"stdio.h"</P>& U, `% M/ B. k% j
<>  void strp(a,p,c, n,u)
( U3 a" p# M" Z* `/ K  i      int n;! i5 F; N! }7 C0 M4 [8 Y: ^% M' _6 ]
   double a[],p[],c[],u[];8 j1 }5 v. }" y1 t+ [: ^
{   0 d8 I9 V' N  S* E2 ]" ]' y+ T
   int i,j,k,v;
- B3 a7 X' q, x4 q/ q8 |9 t8 D2 _   double sum,asum;
5 _% \# }2 i8 q# B: W  Xfor(j=0;j&lt;n-2;++j)
( |/ g% j4 }  e2 L{// 最开始的for 循环
6 x3 f# d9 u5 |+ I! t# a       for(i=0;i&lt;n;++i)//初始化u[]全为零. ~  u* J6 D& e. e
     u=0.0;</P>0 `2 ~# I$ i( V! L2 p
<>' p4 \3 R# C% J/ R5 O
      sum=0.0;  t, Q) S4 q% x$ o: [
   for(i=j+1;i&lt;n;++i)//实现a
" x4 ^& |5 n8 _* X1 D( l# _& }      {2 V0 x0 v; b, b: Z" ]3 v) |6 G
       k=i*n+j;$ A. j, C+ n' g# v+ {8 a6 g4 l
    sum+=a[k]*a[k];
( T5 t7 e* E* Z, d7 u3 K   }
- m+ b- A/ J* S; O      asum=sqrt(sum);</P>
1 r! E' q) R; S" e( z8 q7 Z<>      for(i=j+1;i&lt;n;++i)) Z+ z# v* n& p. h4 z, |/ T) z# o  |
   {5 {& c- p: r9 E' o. K
   
+ k! X3 x' U/ C$ F0 }+ y/ a* e# C    if(i==j+1)
: m' l; i3 i1 q, b     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
( e, s$ U! y0 `1 D& \6 L. i    else. P- [$ f+ |, w, f
     u=a[i*n+j];3 Y% A; P# X. D+ V9 S3 d/ ?$ l
   }
$ n% G- I) [6 Z! ~# v4 h+ N      </P>  u6 }3 w5 w6 F- L/ Y6 Z  P
<>& W& w5 a- w& Q; x! Z( o
   sum=0.0;  //实现P
" g% [0 R0 \( y, q* Z$ T0 ?   for(i=0;i&lt;n;++i)
* e, T' g* X! K" P% V6 C( d4 S5 }# r  N: r    sum+=(u*u);</P>+ N% I# X5 ]* n6 a
<>   for(i=0;i&lt;n;++i)
  @2 t* g' c, O  y" v7 R   {for(k=0;k&lt;n;++k)
1 }- u. W* B  I8 ^- F7 `    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;6 D/ a" U8 ?5 c4 {% G
    printf("%13.7e  ",p[i*n+k]);}
: l9 P% \( b0 j* g  @         3 d; d; [& b( {. M/ N
   printf("\n");}</P>% J) z' o8 j5 L! a* ]" W
( g+ b/ e& P. C( g
<>) m+ x/ B% B* _! B
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘  U9 K# b  J2 G2 U1 D* V. }
        for(v=0;v&lt;n;v++)  I- S. s5 W( m- H( a5 d
  {  c[i*n+v]=0.0;; y0 {" ^# ^, X
   for(k=0;k&lt;n;k++)
6 \3 N  J2 T& J" P& k0 {4 \8 I    c[i*n+v]+=p[i*n+k]*a[k*n+v];
8 T. V3 D0 ^4 T" a% s  }</P># R# u+ A8 i6 l. y& {' W0 ]( }3 ~5 H
<>
( e- U9 A& Y1 T9 B9 v     for(i=0;i&lt;n;i++)1 m& Q* S5 b* u% }: P" S) p9 k
   for(v=0;v&lt;n;v++)/ {7 |; M; i; G) Y5 @9 l- R; u) }
   {4 a* l6 |3 Q2 G3 ]9 r/ C3 K
    a[i*n+v]=0.0;& d" i; l  P1 X. n3 T' R( Q& @
    for(k=0;k&lt;n;k++)
+ y/ {! y  h3 x1 D  Z     a[i*n+v]+=c[i*n+k]*p[k*n+v];! |! |# Y8 \' y/ x' n4 o2 v
   }</P>
2 _% K# l* e2 e<>; e4 L( D: X# [# t  D1 h& C
}//最开始的for的结束的大括号3 _' J6 S. T( h, o- t/ H
return;
! y/ ~" }5 X3 n6 E, k- U  }</P>
2 X, n! _6 f1 J$ c
5 I7 `: i5 c: v! @<>自己写的运行总是错误</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, 2025-8-16 07:59 , Processed in 0.392805 second(s), 62 queries .

    回顶部