QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"0 W! I4 ?8 h3 Q0 e+ N7 m
#include"stdio.h"</P>3 a& K3 K# A% k' U8 E
<>  void strp(a,p,c, n,u), W9 e9 \  b' f, z& N3 T/ P" Z
      int n;2 n* f. U1 [; |
   double a[],p[],c[],u[];
& R( \- ?- ]% E: R1 Y0 P{   ( s" ]. E, {# E0 f7 Z' A
   int i,j,k,v;/ N) M) K! N7 O7 Q/ b- y. {
   double sum,asum;4 D0 j8 _9 }3 w: E1 p
for(j=0;j&lt;n-2;++j)
7 o& F' u9 X1 A  I0 n: B) L{// 最开始的for 循环
' f7 \, z5 h+ |, Z# X       for(i=0;i&lt;n;++i)//初始化u[]全为零* x" {$ t# I' v8 p; v7 w1 a
     u=0.0;</P>
9 ^/ {6 h  b+ D. r, I<>% o' _# \* N# M' `
      sum=0.0;
6 s( C- X/ ^7 T   for(i=j+1;i&lt;n;++i)//实现a
5 U& @6 |( j6 Z      {
  ~$ {$ j: r! r; ]0 v       k=i*n+j;
! S3 ]$ h  l+ E2 J    sum+=a[k]*a[k];! S8 X! z* g! x  t- _
   }2 a! q. q; L; }2 ~* s5 Y
      asum=sqrt(sum);</P>0 v/ P2 M2 t- L7 y
<>      for(i=j+1;i&lt;n;++i)
- H0 n% G: V. l   {
" N: s5 U) s; ?9 X  u3 z5 D' P    8 @+ ~9 c9 o8 O4 Y  _2 @
    if(i==j+1)
# z- X, }2 {- p% D* f) P* N     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
8 G% j  I4 s2 ^. g* x+ R    else
3 D+ W3 I* t# j; _1 ?9 N     u=a[i*n+j];
/ X/ E, T+ R* h9 v  |5 X   }
. N: R" [' n& M      </P>
2 t  b6 q0 Q4 x0 A2 N4 p$ y8 \<>
2 O: K  W1 g3 a4 N5 h" B- f   sum=0.0;  //实现P
+ ~2 A3 ?9 G$ [   for(i=0;i&lt;n;++i)/ c1 e" o# a( r) C+ a! a* s$ X
    sum+=(u*u);</P>
4 C$ o' U/ b1 Y! X; s, a' H" P) u<>   for(i=0;i&lt;n;++i)
* {; M9 }; M9 m   {for(k=0;k&lt;n;++k)
7 s8 d6 k4 o2 d# J    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;8 F" E$ `5 h- h5 g9 R! S
    printf("%13.7e  ",p[i*n+k]);}
+ t" n6 O( f: c- a2 ?         
  _$ o5 l% v( R; d% F$ V: A   printf("\n");}</P>
, |- Q# j  o! ^% ^. p4 M
0 Z0 S/ b% d4 u4 b/ I<>/ @2 n1 [5 X, Q2 ?4 X! e) U; _
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
9 }1 T0 b( W* E( F3 p        for(v=0;v&lt;n;v++)
# d2 A0 G8 M/ k) m  {  c[i*n+v]=0.0;
' j/ P( M: X6 q+ p& q   for(k=0;k&lt;n;k++)
# I) r# P- s$ S  N9 g" \    c[i*n+v]+=p[i*n+k]*a[k*n+v];
% _: h0 Z7 l  h7 O  }</P>
! t4 y& W( [! t5 d! x! W7 ?: \& L+ V<>, d# s9 T# X6 ~* ]5 T' u& x
     for(i=0;i&lt;n;i++)/ o6 l+ @1 U+ Z" L
   for(v=0;v&lt;n;v++)7 m; t% B6 N4 W; W# p0 s
   {" f/ {) g: Y5 t* b3 f6 Q% f
    a[i*n+v]=0.0;
- u! y( G: F3 B7 ~" L    for(k=0;k&lt;n;k++)
( x/ }, O  U3 R5 c  W% F     a[i*n+v]+=c[i*n+k]*p[k*n+v];# B$ }. p3 h: Y4 E; m- p- F. K
   }</P>
. F1 l) B4 W# w+ U0 B$ B# k0 r0 u<>2 ~- Z2 L  d" r6 Z. n
}//最开始的for的结束的大括号
" f$ q% X& j1 H& h return;
0 P) ?  R9 M$ m% ^2 V! @5 p  }</P>
% D6 Z+ c7 v4 u+ I/ j) d9 c# P) n( g
  w+ G5 l+ ~  {# j<>自己写的运行总是错误</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 15:03 , Processed in 0.479108 second(s), 63 queries .

    回顶部