QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
! a2 @6 Q2 B% Z6 a- I6 w#include"stdio.h"</P>9 }: G0 B4 r8 R  @
<>  void strp(a,p,c, n,u)
7 r7 M3 g4 O5 x8 ~7 S      int n;
0 w: C2 a1 a! z7 P7 l0 _1 B/ F) t2 n   double a[],p[],c[],u[];
* e* B3 v5 S6 r8 P! t{   ' |7 s3 L) r8 A+ `2 ?
   int i,j,k,v;
" v5 [7 q) w# H   double sum,asum;
3 r* F2 [& s' l; d3 W' y/ Z+ dfor(j=0;j&lt;n-2;++j)( U; h6 `7 e4 \+ M5 [/ y. Y3 N* g
{// 最开始的for 循环
" \( _- o; F$ g8 z6 j1 S' Y, j* c1 p       for(i=0;i&lt;n;++i)//初始化u[]全为零. h3 U. }% Z% @3 W! c4 q$ C
     u=0.0;</P>: @: F5 f, \! N. W8 @3 k
<>
3 a& k$ n! N* @" Z$ A      sum=0.0;; K- G; D' r3 x2 D; b  O& F1 B
   for(i=j+1;i&lt;n;++i)//实现a5 R# p$ _. E( O4 B9 M) ]; I
      {( z5 N% u4 J7 u. X9 f
       k=i*n+j;2 ^/ I% g0 p& b  F
    sum+=a[k]*a[k];/ _( O2 I/ L. F9 j& x( l; y
   }
, ?7 Q) X- @2 r6 V- u: g      asum=sqrt(sum);</P>
* f2 m. d* m+ _- u4 N; h<>      for(i=j+1;i&lt;n;++i)& ^* B& y0 k# G- o6 |1 g
   {
3 D( _  c& u" W6 l4 p   
/ n3 {8 p2 h; M3 s' ^- D3 K    if(i==j+1). [5 l9 s1 k% M
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
8 {- J7 c1 p! m    else' Q4 v4 Y6 {1 @  V6 @: |; u1 @
     u=a[i*n+j];
  w+ G, d* u. ~. e5 o. J   }$ E! B; f+ U; b) \+ T# _
      </P>
5 A: v' t" ^) E4 |& i) p* R<>% b4 o  Y! a; q' c- n! P
   sum=0.0;  //实现P
$ U* v2 r( q' Q7 ~( @# t   for(i=0;i&lt;n;++i)
! b  l, l5 j0 l% Z9 X. }    sum+=(u*u);</P>; d$ W5 _: k9 F: ?# B" W
<>   for(i=0;i&lt;n;++i)) M. v3 {/ B% S8 x
   {for(k=0;k&lt;n;++k)
% O! h1 m$ r- f' J) C    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
+ ?1 v% G7 Q* W! n: Y4 _( W    printf("%13.7e  ",p[i*n+k]);}; _7 I; B) ]7 s) ?0 j+ ?7 c0 q, A; k
         7 W+ v9 G% z3 _/ |0 p7 ~
   printf("\n");}</P>
" k8 m( d# [" A5 t* G. A+ M. i8 x+ ]$ n5 ]* v5 E/ N. d
<>% Y; I. |# T$ W4 \& N& g
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘2 b- V. \) L. ~8 }- u7 p
        for(v=0;v&lt;n;v++)
+ {0 r: [' C% x9 g  {  c[i*n+v]=0.0;, N, m, E: ]) e) Z0 w$ n' s( ^" w
   for(k=0;k&lt;n;k++)
& e: C; g  m$ I5 `, T    c[i*n+v]+=p[i*n+k]*a[k*n+v];
2 W' _* i1 p$ C: O  V  }</P>$ ~6 m  e2 `9 \, a8 ^; B$ j
<>; N, j) L7 s5 k
     for(i=0;i&lt;n;i++)
8 E( w( _" K; B: ]   for(v=0;v&lt;n;v++)3 Z/ r, {& n' W! a
   {6 T7 m8 t+ L  j0 _
    a[i*n+v]=0.0;
( h! i0 ]( c! c0 y! N2 X  H    for(k=0;k&lt;n;k++)9 G7 B5 Y) h$ A$ D, V: x. b, h
     a[i*n+v]+=c[i*n+k]*p[k*n+v];
$ j6 w3 C# n: q   }</P>
/ v6 F8 n4 N3 g<>
) q: q3 N& c/ j2 ?: u3 w; i% o! B}//最开始的for的结束的大括号% m  h! f) K+ P6 Z0 B3 P. r
return; ' X& R: A3 s9 ~$ i5 C. R, j: ^
  }</P>5 Z2 ]" d8 u1 r$ B+ B

: M* v! D3 b) Q- T: r, 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-9-3 04:26 , Processed in 0.440179 second(s), 63 queries .

    回顶部