QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
2 ~# L6 B. u# d% Q! q#include"stdio.h"</P>: I7 `- q) Y6 t6 q
<>  void strp(a,p,c, n,u)
9 O( l0 t2 _* g+ Q2 d6 S      int n;
+ b7 u7 C3 N6 o   double a[],p[],c[],u[];3 F9 d8 u% v* o( \  @
{   
& I7 H5 s' i7 T# F   int i,j,k,v;
3 I0 f- P6 m5 N0 {) Z   double sum,asum;' T" S: p4 t! l# \2 B
for(j=0;j&lt;n-2;++j)
( m) V% C5 r5 x% N{// 最开始的for 循环
  D) ?/ u8 U# P/ A/ Q9 ~! c5 ?7 q1 f       for(i=0;i&lt;n;++i)//初始化u[]全为零$ e  I( j" D. e
     u=0.0;</P>
  A8 L: r2 h6 q5 R" p" p<>
- a, U7 y1 }  t; L% b3 c8 p! e# Y      sum=0.0;2 s5 m  _* t! s4 g
   for(i=j+1;i&lt;n;++i)//实现a. q8 B8 A! D+ f! f  [% t9 V- A7 V
      {$ Q& Y7 r5 S, z, y+ t0 c
       k=i*n+j;
; d! D: R4 b( i2 R5 j, W    sum+=a[k]*a[k];
8 c+ w: V! i) Z" a0 [   }$ H6 h; P9 S2 ?# ~
      asum=sqrt(sum);</P>
+ _9 C# l7 X3 q1 w<>      for(i=j+1;i&lt;n;++i)  `" A: A7 ^2 C" \1 x
   {
6 ?) w. n0 I+ M/ E& E% I2 q   
0 F0 o" F4 d# x, `! o. ^    if(i==j+1)
, H" o  Y+ |  T1 B     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
+ }+ n+ i% }" b; W/ }2 B$ i    else4 s) J, S& D: q/ b! l
     u=a[i*n+j];
5 G4 V  t! [5 s   }/ d# i* X% X) P. T$ t. ^+ l
      </P>% L4 s( [6 Y* ?4 Z) K8 |
<>
! r2 C9 Z: `( l; O, N   sum=0.0;  //实现P
5 |$ J$ J0 T9 R& m2 a: z   for(i=0;i&lt;n;++i)# d2 d& e' K& }, N2 M( x
    sum+=(u*u);</P>
6 w8 h' I8 ]/ |! K$ a<>   for(i=0;i&lt;n;++i)
6 s/ D, A% X& c: i* L& S$ Q+ Z' d  b   {for(k=0;k&lt;n;++k)
& u1 j" H4 e; N4 L    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;4 T  e2 ]0 j7 o& {
    printf("%13.7e  ",p[i*n+k]);}# t! F6 t; `- c3 N( z
         5 @  e4 g( w* F, ]4 ]  @, `
   printf("\n");}</P>' d5 S; X2 r/ H/ z3 u0 m+ s
8 U) W$ ~; X) q- Q; G2 [. g
<># e$ T7 A# C- X: s' H& ]
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘; X3 K$ |7 _' O+ c
        for(v=0;v&lt;n;v++)" m" ~7 \3 u' W
  {  c[i*n+v]=0.0;4 Q# m/ }+ F. v6 W+ n  P
   for(k=0;k&lt;n;k++)
+ O5 v5 u- |3 E6 t  G    c[i*n+v]+=p[i*n+k]*a[k*n+v];8 u" K% \' x6 l6 p/ a) r
  }</P>* O; S+ o4 P* D$ ^& N
<>$ O% R6 M" a+ \$ r* N3 N, A
     for(i=0;i&lt;n;i++)' e0 B1 |$ J9 }! o
   for(v=0;v&lt;n;v++)
# m& s! y  r8 S, }6 \; @  h, g; _   {: M6 }3 `+ H, F& o" ~$ u
    a[i*n+v]=0.0;7 C- L  W2 j* X4 T# e9 `$ }( I
    for(k=0;k&lt;n;k++)0 i; ?+ W+ c) L8 r0 p
     a[i*n+v]+=c[i*n+k]*p[k*n+v];" e% p, U7 K* M9 `8 U
   }</P>
/ `$ B- @, {+ H, C5 d3 T9 O; W<>! C# a3 r1 \! h
}//最开始的for的结束的大括号# I1 f* a6 d  S) Z! @7 _0 F
return;
8 S3 r8 Q" `9 Q* B; g: q% X  }</P>+ S4 j0 ^* u& ]  R
' I. |% T. \" v! k# |4 ~: J- X; ^
<>自己写的运行总是错误</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-2 22:26 , Processed in 0.713302 second(s), 63 queries .

    回顶部