QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
7 G" G" j4 E' U0 x- W  U7 f& y#include"stdio.h"</P>
, w( R. G4 d( A<>  void strp(a,p,c, n,u)
( T/ V) G- d6 U( P& z6 w      int n;% {: {* C& a7 {3 q
   double a[],p[],c[],u[];0 B3 j1 u8 g# d5 S# w$ e
{   & U% {$ Y( y6 @' i. Y* M
   int i,j,k,v;9 a$ s9 Q0 l! _  I) A9 X
   double sum,asum;* A$ @* w. Y/ V; Z. E
for(j=0;j&lt;n-2;++j)* g9 I5 I* o$ m7 F/ }- U, T% e
{// 最开始的for 循环
! o: h' g2 {+ D. _* A4 U       for(i=0;i&lt;n;++i)//初始化u[]全为零
' |: ~/ V9 c; m4 ?  b     u=0.0;</P>
* m; z- y2 W' U  A2 g: s<>2 m) Z( E9 X: E' D
      sum=0.0;" R5 y& @, B& c7 v! l  ^; j$ k
   for(i=j+1;i&lt;n;++i)//实现a
- O/ ]. l" d0 A' h0 z      {3 H' q, j2 e+ b' \
       k=i*n+j;  o" r% ^! z& l  x
    sum+=a[k]*a[k];
6 l* A9 H, {& l" c& o+ u" V: }" s   }
  v6 E0 a, {  K2 k' ~6 `+ L      asum=sqrt(sum);</P>
( P3 v) G- G: a/ j* q0 W/ |, P/ q8 ]<>      for(i=j+1;i&lt;n;++i)
1 f: s; O; o  ?& [   {' W8 T3 A! w' i* y% _3 D
   
2 y( a* @  c9 l# ^# t    if(i==j+1). ]# a$ g: @; Z' F: U
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
; Z) Z7 A$ p) F: |# w/ j' d    else
/ C, i" L& y, i2 J8 R     u=a[i*n+j];- \, N) M' F1 U
   }( P; D: y1 \8 K- H  J& P
      </P>; A4 f, s+ h( t0 V
<>9 U6 m: u) D* w- F4 p, }. J
   sum=0.0;  //实现P8 o. B% ]8 K3 F9 A
   for(i=0;i&lt;n;++i)
" _* c- _' o' ?0 {7 d' R0 E6 `2 m! f* Y    sum+=(u*u);</P>
) C- y# m7 Z' v" T4 B<>   for(i=0;i&lt;n;++i)) u% Z$ Q* G. ~* ]% t% @9 G
   {for(k=0;k&lt;n;++k)0 Y% G5 F  Z) S! c% n6 Q6 Y
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;+ i: F! K, \* g
    printf("%13.7e  ",p[i*n+k]);}8 S$ b' ]  D3 \3 \8 e( ^3 ]/ X. k
         . r5 ^3 N0 [2 N' N
   printf("\n");}</P>7 V2 d! O3 t. t

* t: A, L8 b0 U7 R4 v$ s& U/ o' H<>
% V( }! L  c: X% u  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
+ \; S$ O( j7 k        for(v=0;v&lt;n;v++)4 \# o+ b$ |8 Y$ t5 b! H7 [4 h
  {  c[i*n+v]=0.0;/ B' N. D) i8 L5 H8 X3 e4 j: `/ J
   for(k=0;k&lt;n;k++)/ _  O3 Z( `% X6 @( u; o
    c[i*n+v]+=p[i*n+k]*a[k*n+v];% Y" n- i& s" e- o* G( N) ^
  }</P>. s: h  X: F# s% q& c
<>& I* d+ h% j; e2 R8 O$ k4 B
     for(i=0;i&lt;n;i++)- W' _2 Q0 R, E! h
   for(v=0;v&lt;n;v++)& q, V5 t+ E& W
   {; U" }/ ^' D& z3 C
    a[i*n+v]=0.0;& v+ E. N: I# n* c" A
    for(k=0;k&lt;n;k++)  r5 @! A( G- D4 Q% m$ i1 q
     a[i*n+v]+=c[i*n+k]*p[k*n+v];- i0 a2 [; `/ c7 T$ r4 D! o" a
   }</P>
. _& ~3 H" W6 M- q+ j<>9 ^2 G$ y" x) C2 E/ S- R
}//最开始的for的结束的大括号
* y' ~$ b" V/ P9 M  H% Z return; % K2 F) Z3 ?$ |4 y$ f1 [+ A
  }</P>
! A* g$ \( k1 O, i$ }) C. w, h$ q5 t( L9 |. L7 Z& M
<>自己写的运行总是错误</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-4-17 20:00 , Processed in 0.547928 second(s), 62 queries .

    回顶部