QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
+ ?+ q7 n1 G& E9 ?2 Z. h* b#include"stdio.h"</P>
4 p# p8 y3 h8 o9 J! b0 U# z<>  void strp(a,p,c, n,u)
6 `; U( C) R: V$ x) Y" |5 u      int n;
4 Z# o* p3 i9 G2 n! h$ Y   double a[],p[],c[],u[];' T8 }; S+ ]& z2 D, ]
{   7 c, O( Y- Y, h9 P* O( v; y
   int i,j,k,v;' @2 t* W0 H) o$ h
   double sum,asum;. ^, d. T! e& D8 F
for(j=0;j&lt;n-2;++j); V* J2 ]6 b. I! L
{// 最开始的for 循环* v& S/ O( s! _8 W. u
       for(i=0;i&lt;n;++i)//初始化u[]全为零
  W. {7 p. U$ s1 s) n) h     u=0.0;</P>
) {+ d6 ]# E7 d8 {<>
4 h* n( Z! E3 L6 Q      sum=0.0;
. ~8 d7 _3 H7 d4 i6 i" t* I2 d   for(i=j+1;i&lt;n;++i)//实现a+ s" J8 Y8 r3 u7 @: U* l; R0 L
      {! b/ M6 \/ B8 X+ C' ^# G
       k=i*n+j;4 ~% T8 i/ _4 u! V  |$ E( F4 Q7 i7 G
    sum+=a[k]*a[k];% O  W2 Q" @+ X" a3 J8 B  X8 _
   }
" d( t' I  T) T      asum=sqrt(sum);</P>9 _, l, Y( u# ~
<>      for(i=j+1;i&lt;n;++i)! b, a- ~5 S0 A* e
   {
6 `, z0 H. [4 v! K# r5 k* x$ k. q    # }7 k& `! K. h' ?, n3 H! `3 O, G
    if(i==j+1)
- F2 B" z, x1 i7 f' t. m  O: [     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
$ l* @1 X" E& u, y5 r7 K0 h4 k: X    else
3 A' k0 h2 Z2 G+ K2 z# w     u=a[i*n+j];) i* Z! D: v: `
   }
' F/ \4 B- Z) @% n/ }' R% u. t  {% ~9 V, G      </P>& K- @0 m+ ~/ Y6 ~. m4 y# y
<>: |3 E1 U: Q! T9 P$ P7 d
   sum=0.0;  //实现P
( y; p' a* ]% o3 z# U   for(i=0;i&lt;n;++i)
9 Y0 L0 M9 W1 s# @    sum+=(u*u);</P>, G! R$ f5 r& R
<>   for(i=0;i&lt;n;++i)
0 {( i& x( X) P   {for(k=0;k&lt;n;++k)
) w7 O3 H, E  O0 W0 x    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;3 }+ X4 q6 z8 E9 P: x8 s4 I7 p6 L
    printf("%13.7e  ",p[i*n+k]);}
" E' Y. ], s" N7 r, b) \$ h         7 b) y2 w5 s4 `% {1 p
   printf("\n");}</P>
& o9 F, m8 x! ~2 U+ @4 c( P6 s& H& h4 C7 s( x
<>7 d: L0 i% F2 U- w4 i9 V5 b
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
$ j# c. F1 n% v, V8 N        for(v=0;v&lt;n;v++)
4 W- [' Q) \+ k1 P/ |2 l5 _  {  c[i*n+v]=0.0;) J. u! p& g  u- n/ u( c
   for(k=0;k&lt;n;k++)
6 S8 p; ]  d! ?) i5 C    c[i*n+v]+=p[i*n+k]*a[k*n+v];  D1 T' ?! P* [" O4 @. p+ K/ U- K7 j3 U
  }</P>
$ i: G6 a8 h- E7 q8 \- E6 g<>6 S+ Q5 f# T* F" W7 m
     for(i=0;i&lt;n;i++), B# A+ z6 e/ M, G% v: M$ N
   for(v=0;v&lt;n;v++)8 @2 [7 t' C; I1 V" V$ N& X
   {. b+ C7 S" ]" P  k. B
    a[i*n+v]=0.0;
/ E4 H* X# n, R+ E( k( Q. v    for(k=0;k&lt;n;k++)
! V. a1 e9 S9 [6 X3 |     a[i*n+v]+=c[i*n+k]*p[k*n+v];" G: J' g0 i" j# j" ^
   }</P>
3 u6 {, S) `! H6 l+ h3 G<>: X# r: c4 w" Z5 W. o0 O7 R
}//最开始的for的结束的大括号- R9 C9 v$ w/ }4 p1 u
return;
( s6 n' @- Y+ o' M$ k5 _& ?  }</P># K! l( L6 N4 x

: P, Y: O* X: A<>自己写的运行总是错误</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 15:05 , Processed in 0.375472 second(s), 62 queries .

    回顶部