QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
8 |1 ^: F1 F- J- D: E0 j#include"stdio.h"</P>" _- o) C2 g, A( Y  |) Z7 R- B
<>  void strp(a,p,c, n,u)5 b' k/ W7 F2 p/ T
      int n;
- w) P3 E+ J& s# x+ E   double a[],p[],c[],u[];
- J1 T4 t7 S% B# l7 j/ l{   . H/ M  N. _8 [5 w) V
   int i,j,k,v;
. \" J+ F" F) Q/ @9 `   double sum,asum;
. H7 B$ g+ a- F0 Ffor(j=0;j&lt;n-2;++j)+ B* d+ x) k3 u$ A( V' `
{// 最开始的for 循环
' a9 O" v& l* T( a       for(i=0;i&lt;n;++i)//初始化u[]全为零
* A% \2 Y* i# {( @8 x, I  d     u=0.0;</P>
; x. J/ a4 i  G; W<>
6 F$ k: h% ^' U/ O      sum=0.0;- A2 E0 ?) `; X! |' Z2 e3 O
   for(i=j+1;i&lt;n;++i)//实现a
- i" U  P" W" Q- y      {
3 z# l& e# d' c2 l6 t4 E( ]% v       k=i*n+j;
% X; m: g! x' z+ J! `. |    sum+=a[k]*a[k];
; A/ y$ T6 z' r5 C0 ^   }
! U# Z5 `; ~0 `/ {: @0 ]9 a& h# v      asum=sqrt(sum);</P>* R0 d+ ^0 e: v8 C: q: r; L. G0 t. l
<>      for(i=j+1;i&lt;n;++i)
3 T3 O* M+ X) o8 Y1 S" J' k   {) n5 h& a- t6 R1 |  F* r  H
   
9 h5 @4 f, d0 A$ b) H2 O    if(i==j+1)
2 [7 f( S2 d: z/ }5 M9 |7 g; S     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
8 d9 @* \, t$ V    else3 Z! y4 h+ O- {4 `$ n2 `* y9 X+ G
     u=a[i*n+j];
1 X) K: w; G4 n+ b1 P/ O7 w/ W   }  z6 W. P; V: B  m  q
      </P>+ P- l2 W) ?1 J% L' f( B$ W: o
<>8 u0 l, ?4 F* B4 ?% |
   sum=0.0;  //实现P; I9 v$ W% J, K* U1 H  k. r
   for(i=0;i&lt;n;++i)
! N: D6 y" a1 K$ c9 s$ T    sum+=(u*u);</P>. r( i8 c: b( e! h6 U: N/ a
<>   for(i=0;i&lt;n;++i)
& {5 k8 G2 d: r( ?+ j1 @  z   {for(k=0;k&lt;n;++k)5 {& C$ J# v5 L3 W: V' _
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
# P/ t4 ]) S0 }    printf("%13.7e  ",p[i*n+k]);}# {& ]9 o# y0 {! \
         * i5 `; h9 \8 G/ ?; i5 S" X4 N
   printf("\n");}</P>
8 S9 [$ I6 Y: Y7 N7 y, L2 ?& A6 I  x
<>3 l2 g9 L" A! V- W
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘! S- {6 ?1 V5 m# C' x& F
        for(v=0;v&lt;n;v++)3 l" i" X5 u. h4 G+ Z2 @/ Y# d" Q& k
  {  c[i*n+v]=0.0;( |3 [) {9 N2 h# d* ?" e
   for(k=0;k&lt;n;k++)2 n  D, D0 b9 X6 k! k# Z. e+ f
    c[i*n+v]+=p[i*n+k]*a[k*n+v];
" F" Y$ U/ L( d/ @  }</P>5 U7 f# o4 l& g% X4 N' U+ i7 A
<>& s- [, Q( i5 g; b7 z( p
     for(i=0;i&lt;n;i++)
  N5 d7 E' G( P& s+ m* ^   for(v=0;v&lt;n;v++)9 Z0 a* J3 V3 o: f. b9 o
   {) Z0 P8 Z1 B3 F# s1 t( n4 H
    a[i*n+v]=0.0;
5 [  P) ~, s5 K7 Z2 @8 ]+ J    for(k=0;k&lt;n;k++)
# X1 k- D; [6 P+ q' U     a[i*n+v]+=c[i*n+k]*p[k*n+v];3 t* _3 ?+ ?: K- n
   }</P>3 U4 p& n; x: e( y& c
<>6 w+ G  ~/ i2 ^+ c( |' J
}//最开始的for的结束的大括号
- u$ X2 m& b8 E+ T5 \, v return;
3 Z7 g1 K$ ?; `) h7 F7 h4 U  }</P>) h3 a( H: P( S1 |% x

+ ^% Q( Z* S! V) ]- k<>自己写的运行总是错误</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-9-3 19:59 , Processed in 0.440963 second(s), 63 queries .

    回顶部