QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |正序浏览
|招呼Ta 关注Ta
<># include "math.h"2 H6 S+ z0 g6 _+ q
#include"stdio.h"</P>
) \4 m- o% s0 E' z% g" g<>  void strp(a,p,c, n,u)
! [& y* Y% i6 p# i  J7 a( f" Q      int n;1 D4 w: F! Q& d
   double a[],p[],c[],u[];
! z8 G6 I. n7 G1 a$ c; s. d9 {1 Q4 s" N{   " ~! y  w) V. q3 A& P
   int i,j,k,v;1 K  S1 ~* `8 m0 |
   double sum,asum;6 k) C, _$ E; H# f9 ?7 m; R
for(j=0;j&lt;n-2;++j)' u" X/ I6 D. K1 ^
{// 最开始的for 循环
) b' @2 t  p. J3 t  @       for(i=0;i&lt;n;++i)//初始化u[]全为零
! H- i% J! b! s  f+ |1 N     u=0.0;</P>
% w6 |, b7 Z& i+ @% J! `- @# M<>
# @) w6 Y4 [8 F: e      sum=0.0;
) L4 t$ q! I* K3 h2 h6 C1 ~9 v2 b   for(i=j+1;i&lt;n;++i)//实现a- ]) |1 a, w6 S
      {
9 j# N5 {: j1 ^# s       k=i*n+j;7 h! c6 @4 Q' v, |/ p) F" v5 g
    sum+=a[k]*a[k];6 c, q! u4 h; C  q+ i2 P4 u
   }
" w, t2 G  H, e' V1 p0 g      asum=sqrt(sum);</P>
6 z6 j' Y6 ~/ E! I<>      for(i=j+1;i&lt;n;++i)" Y" P, v9 h7 B/ i. D2 F
   {6 ~- {7 s: h1 T
   
. I' S( D$ d9 ^* F    if(i==j+1)
2 i2 W" w- y( d% ?     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
- ?) @5 l: f$ Q  X1 H    else: p' ~+ m. {7 I& M& ^6 n; |
     u=a[i*n+j];
4 o  L& q8 ^1 L9 B1 ^1 U   }
/ S* k2 I* f0 {  i/ W      </P>
* o, L2 z- z( z: G- R/ X, X# w<>
- R" L) M* B3 t0 P   sum=0.0;  //实现P
* M6 h4 N& N: M% H# n   for(i=0;i&lt;n;++i)0 i7 {" n, g6 l, B' Y8 Q& z
    sum+=(u*u);</P>
" E/ a9 @; a0 b% F; ~; w<>   for(i=0;i&lt;n;++i)) [) ~6 {  B9 ~+ H( z$ s& T$ [
   {for(k=0;k&lt;n;++k)
. {/ r- z4 M' A# x  t8 O( q( i    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;3 \! W0 D3 A7 X' v- O( m3 |1 X7 T6 Q! ]
    printf("%13.7e  ",p[i*n+k]);}, a& @" K8 h4 D. ?, @0 D# R
         , c# C+ B8 h! f/ U4 I& b3 Z
   printf("\n");}</P>
8 p( F8 ]8 C% u/ u. C! ]$ w  D5 y- ?: s! K
<>; y4 @& G" `' d1 W8 y. M
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
3 Q5 J! W& K2 _/ H5 {" `        for(v=0;v&lt;n;v++)
+ c) l5 R$ g( A: f2 M& n  {  c[i*n+v]=0.0;
+ O+ L  s  L" c   for(k=0;k&lt;n;k++)
% a) E  P: u& v" Z    c[i*n+v]+=p[i*n+k]*a[k*n+v];
+ ?* K$ B- v9 [7 K% R9 a: h! f  }</P>  Z+ a% Q+ M$ v3 V5 U
<>
$ ^3 d. I7 H% \( W( F. I     for(i=0;i&lt;n;i++); w8 J9 }" P; F$ f" @0 ^0 U
   for(v=0;v&lt;n;v++)/ U; W6 C' \4 B0 [9 o1 D% C
   {4 M9 {# u, p4 d5 P/ S
    a[i*n+v]=0.0;) f0 L0 s: K1 B% _1 |9 ^7 h$ u
    for(k=0;k&lt;n;k++)
, G  V9 x/ _) X. A3 R9 I" ?' v     a[i*n+v]+=c[i*n+k]*p[k*n+v];
. v0 L9 X/ x$ s   }</P>
* P: y! L% ]! ]6 {! @$ p<>
0 B/ }3 K4 W# Y( X# D}//最开始的for的结束的大括号
6 S+ c7 [: {8 ^ return;
2 X4 }) ^& p- n8 E6 Q; y1 G  }</P>
5 O0 e( A/ E5 m" B
- Q9 w8 Z/ G9 w) j/ y% c<>自己写的运行总是错误</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-11 12:45 , Processed in 0.516307 second(s), 63 queries .

    回顶部