QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
2 o  r# ~+ O. \# B#include"stdio.h"</P>8 o) Y2 D6 {: W+ E/ E  s. R. X4 L
<>  void strp(a,p,c, n,u)
: I. A1 T0 R- V      int n;
5 ~3 R) K! U3 B+ d   double a[],p[],c[],u[];( n  E2 V* m# H
{   0 ], ^8 P* r5 Y* K1 H$ _6 w+ Q
   int i,j,k,v;
: l$ R' [, E" ^  p( c. w   double sum,asum;
" U% ]. B& w6 t6 W0 \) B3 p7 Wfor(j=0;j&lt;n-2;++j)% }: Q, e: |7 O- ]8 H3 I
{// 最开始的for 循环
( X2 U, P, W7 T       for(i=0;i&lt;n;++i)//初始化u[]全为零9 q. Q! x7 ~4 W( ]* b$ j
     u=0.0;</P>
& y( B8 z: j! X+ F% w<>' I: a! i7 P" J, e
      sum=0.0;. F$ _" `7 I" P1 y& u. C
   for(i=j+1;i&lt;n;++i)//实现a5 h- F. {' I% V
      {7 |0 L( \, g+ a) g  [7 ^
       k=i*n+j;7 a& D& X* H: _1 a" h/ R
    sum+=a[k]*a[k];; k) O/ n; ]8 ^1 T' z
   }; f  p! z7 {. z: a$ @
      asum=sqrt(sum);</P>& L: y' P4 Y2 L: p4 q
<>      for(i=j+1;i&lt;n;++i)
3 S0 I- X9 Y  d  `' r" ]   {
% Y0 d0 Z* N; o4 P$ ?    4 y( b3 c; G0 ]7 d- k
    if(i==j+1)5 G# u" K! t  c
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;5 Z) `4 q/ K& C4 g7 W
    else+ }2 J6 ~, j& G$ A3 M9 Z7 z9 f
     u=a[i*n+j];. _' D( L; G0 g
   }
# N+ U+ @* v( I% \; X  |7 Q      </P>
; l* d, m$ ~7 h& W4 E  s+ M2 \<>
- c" s" [( o* @" K   sum=0.0;  //实现P
* t* d9 M8 B6 j; S) p   for(i=0;i&lt;n;++i)
5 g4 {4 P& Q1 i1 v/ R0 r    sum+=(u*u);</P>0 H2 g- q8 r1 l
<>   for(i=0;i&lt;n;++i)
3 O9 ^! t0 S5 i4 E% z/ Z% @! W, c   {for(k=0;k&lt;n;++k)
* g/ b0 O2 l+ d& d: J4 ~    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;1 L$ m; o7 Q* a8 [- G" A
    printf("%13.7e  ",p[i*n+k]);}
/ e6 l. o* w+ f, S/ a         2 {4 d0 `$ J9 h' r$ |' Z" k1 f* e
   printf("\n");}</P>- P8 o0 \4 i1 {( t9 c  [& P( I0 D
: J# S; B% w( E
<>; E! Q+ y: D* P9 C) e& U1 R0 t
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘0 A) E( w/ [% H/ w# e
        for(v=0;v&lt;n;v++)
, M+ t# x4 B, n6 Y/ I2 N6 G  {  c[i*n+v]=0.0;) b' T9 R& y# K$ D7 ~7 q2 k+ ?* P# L
   for(k=0;k&lt;n;k++)
! V3 Z* w" H3 C1 D' z" H    c[i*n+v]+=p[i*n+k]*a[k*n+v];6 V, O6 Z2 Z& j, ^1 \- s
  }</P>
# |# I4 E( y! ~<>+ S6 j$ P& E6 B% G1 K+ B$ Y
     for(i=0;i&lt;n;i++)
& D* F) o7 H9 x& O   for(v=0;v&lt;n;v++)
4 N7 A+ K  L3 L3 A5 [   {  ~5 m1 g  P9 E7 B6 A7 s( r; L
    a[i*n+v]=0.0;5 H" y  T3 n7 U
    for(k=0;k&lt;n;k++)4 O% ]5 n/ s4 Q& G: A, i% b% z# M
     a[i*n+v]+=c[i*n+k]*p[k*n+v];% ]1 E9 v6 i' a
   }</P>/ O3 G  v/ b% T
<>, Z9 q. {8 r- ]3 ?. @' @4 l& u1 v
}//最开始的for的结束的大括号
$ {% |6 q' S1 ~8 O3 E  v# i, n3 H) F return;
2 a) H- v) V0 V- K1 Q9 V! [  }</P>" K( y5 F2 y7 ^, i% R7 Q/ D% I+ W
( q, x- y- G' y* M* B$ E/ _
<>自己写的运行总是错误</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-6-3 13:19 , Processed in 0.685676 second(s), 63 queries .

    回顶部