QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"% o, Y0 u6 q9 Q3 N/ X
#include"stdio.h"</P>+ M* s5 C* E' z5 R6 k2 M5 ]
<>  void strp(a,p,c, n,u)
9 n3 l9 @! \9 W, w      int n;8 F7 p/ D; H9 o$ D2 D- {
   double a[],p[],c[],u[];
0 u, V5 c( V( |{   1 @4 p$ H: U' h0 v2 Z. @
   int i,j,k,v;: P" G5 _$ u2 k& i! U8 c2 M4 U
   double sum,asum;% \1 l9 ^8 t* }5 [7 }
for(j=0;j&lt;n-2;++j)
7 d/ ]  y# |8 k+ B& \- b{// 最开始的for 循环
. c8 [) c4 A6 R' [6 \# n# b       for(i=0;i&lt;n;++i)//初始化u[]全为零
$ x$ a" l+ g' v4 O5 O     u=0.0;</P>, A$ W, }3 F  a$ I
<>
" r* u6 R# y+ D. Z8 }6 W      sum=0.0;) L3 i* b( k% E" u4 e5 x
   for(i=j+1;i&lt;n;++i)//实现a
* u' D8 i' @! y; `      {: v1 y& C) i' V7 |
       k=i*n+j;
% c) N  [! ?. }    sum+=a[k]*a[k];& u; C8 n- h) a8 z4 f
   }
$ F$ T+ J; \# l" F$ J) q$ R* w7 O      asum=sqrt(sum);</P>* P, s) E) L! y7 x7 o" |7 M
<>      for(i=j+1;i&lt;n;++i)* a5 a6 t- T4 f8 d4 @- O* x3 ^
   {
6 v2 e2 s9 T7 _3 X5 V0 R- r   
! C. r6 g% h( Q5 m    if(i==j+1)8 m+ E$ v4 H! A0 |5 h
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;& J0 P* s* }5 t# t  a. J
    else
0 G2 @4 w& E2 L# B: A, s; r     u=a[i*n+j];% p! X/ v" R  H! m, m
   }
2 F$ U5 C5 \) @      </P>
: h9 ?/ @6 Z! W<>, j  x0 Z/ s9 Y
   sum=0.0;  //实现P
/ ?. X) F- `# \5 R  H   for(i=0;i&lt;n;++i)
& I( T5 X4 S# ?1 x+ o. i. [) j    sum+=(u*u);</P>& J6 z4 C$ v# t+ d/ K+ S, K9 u- y  |
<>   for(i=0;i&lt;n;++i)6 n" W4 k5 c# O& u" g( {0 X
   {for(k=0;k&lt;n;++k)
  n: l0 ^% G" y# {  C2 i    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
3 H, W0 p7 C, U( s" y* o4 G5 g    printf("%13.7e  ",p[i*n+k]);}
, Q8 i$ j1 G* w( L6 L8 M8 V         8 N. h* }6 T! M: T
   printf("\n");}</P>6 t: p9 l1 Y! ?1 y
8 E. O* w  K; D: [" F
<>
, k, Q2 g. l7 O+ q" _  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
; B. B% Q% C4 B; u! p+ B        for(v=0;v&lt;n;v++)9 G/ y1 E$ B' V- W- n. @* u
  {  c[i*n+v]=0.0;8 m, \) }5 r& k7 \# R& n, u
   for(k=0;k&lt;n;k++)( z$ G" J  Q% F2 c% G* b; L, I) L
    c[i*n+v]+=p[i*n+k]*a[k*n+v];6 C0 Z$ `4 l# p
  }</P>
. h: O* f% e9 L  c! a. p2 Z<>) ^& X: f% x( J) R# l0 i3 y
     for(i=0;i&lt;n;i++)
$ A/ ]) }7 K" i$ T   for(v=0;v&lt;n;v++)1 z4 M1 N. m! m; `1 Z/ s
   {- f' }# j9 V( R8 t* z
    a[i*n+v]=0.0;  s. h$ g, G4 A. y
    for(k=0;k&lt;n;k++)/ M* \0 ^4 S1 B* H
     a[i*n+v]+=c[i*n+k]*p[k*n+v];
0 L+ k( c2 a+ B   }</P>
6 _# R: U7 m) G- [) c- `<>
: B6 P+ @  ^0 q4 ^6 j}//最开始的for的结束的大括号' u" F8 m1 `& J
return; ' K7 l$ x) u* P, f& |7 p
  }</P>/ h0 E0 K# l9 j# R! ?/ H! ^
  M( W( g$ C- q0 |. N* k
<>自己写的运行总是错误</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-7-30 05:17 , Processed in 0.318354 second(s), 62 queries .

    回顶部