QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
+ W6 t* R, V  ?6 H: o+ B#include"stdio.h"</P>
. r3 g+ q1 `0 g6 g( u! k<>  void strp(a,p,c, n,u)# Y9 k; F7 n0 X
      int n;
5 B" [0 L4 \8 \+ s$ N, n8 d   double a[],p[],c[],u[];
7 o0 x( L" p  a! J4 c& `3 f{   
' V, ]9 a4 {/ C$ s   int i,j,k,v;
# y# B" j' q, h% u- g   double sum,asum;
% W$ E5 J) C2 Efor(j=0;j&lt;n-2;++j)
5 P/ x* G  @$ d- Y) A{// 最开始的for 循环
' K; P) Y1 y# {/ B/ ^       for(i=0;i&lt;n;++i)//初始化u[]全为零; ]$ @# W( s8 D  @0 o) ~
     u=0.0;</P>- z& h+ V+ b( \( `, M, [- q
<>
' P, q, ~- S- p: N0 ]3 T, ]/ T      sum=0.0;' G3 @% y" A9 |+ l) S3 x/ N
   for(i=j+1;i&lt;n;++i)//实现a( N: Q; g/ f$ U, Z. b
      {
) S9 q0 M6 e/ z# ?8 B4 q' K( w& P       k=i*n+j;7 b+ `  C7 C4 `
    sum+=a[k]*a[k];
9 V' K) u% ?, \; ~# v/ Y   }) x; x( o" G) O
      asum=sqrt(sum);</P>
  f  c# g7 }, k) H+ q' s& a9 z<>      for(i=j+1;i&lt;n;++i)
9 b- f7 F; Q3 l   {
; Q  R* j2 @! T. T. i/ J    / v) n! f* P# K5 q" `& [& V/ J' q
    if(i==j+1)
- S* h+ x( F' a3 e3 ~$ u     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
2 {% w5 }- o* ?/ Z1 s    else0 u5 \- Y' C! V- \" x
     u=a[i*n+j];1 o" O" k, W' F" S
   }8 V, J* {+ S4 I$ G
      </P>
& e$ p  S3 b# ^' h<>
! x1 ^' G8 `! r; A   sum=0.0;  //实现P* Z4 b" [0 y: m- B. f
   for(i=0;i&lt;n;++i)0 ~" V9 p3 G$ c9 T
    sum+=(u*u);</P>1 p, P3 G: C& m1 ?, n
<>   for(i=0;i&lt;n;++i)6 a$ C1 V+ p5 U
   {for(k=0;k&lt;n;++k)
# a6 T4 ^: V: @5 }  I* R7 e    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;; m6 i' B7 ]* g" F
    printf("%13.7e  ",p[i*n+k]);}
5 z- ]$ Q! f5 g# r0 G8 I         
7 @7 b& O4 f8 a8 T& T   printf("\n");}</P>
' c/ p$ Y+ j" @6 K
- B" W) E1 \8 c: P; }. p<>) w" g' {. Q0 z6 ]: l9 H9 M
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘4 t# Q, K; _; x  Y9 v- a
        for(v=0;v&lt;n;v++)  W9 J) H, g( D: d! W
  {  c[i*n+v]=0.0;* O& O) F9 K  P  q7 h# z
   for(k=0;k&lt;n;k++)3 Y) }; B) a% D/ p/ h5 g
    c[i*n+v]+=p[i*n+k]*a[k*n+v];- a" i! j8 [" V
  }</P>
0 m- H2 ~$ f7 f. |/ f<>+ G9 \2 q( J( |  A  p
     for(i=0;i&lt;n;i++)9 B" V, c" G% S
   for(v=0;v&lt;n;v++)$ D5 N, O3 T" F
   {* @. H! H- ^: Q2 P6 h0 q
    a[i*n+v]=0.0;1 O( A! X& b1 O' e' A
    for(k=0;k&lt;n;k++)
. A% Y- J# R3 _- s! p- n/ j     a[i*n+v]+=c[i*n+k]*p[k*n+v];; N" [; Y7 G) Y- N6 N9 e
   }</P>+ y& B: x) @; g
<>) J+ Q/ F7 ^  f( p4 ?9 b) |0 ~
}//最开始的for的结束的大括号$ }, I$ [1 L7 K. l+ G  ]2 C
return; . T1 Y' i- o! k9 u# u- ?1 A
  }</P>
/ @, H, V5 {8 B$ t; m( y( F
  {6 z' a* _* k# `, m9 Z- J" B<>自己写的运行总是错误</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-7-19 16:56 , Processed in 0.467803 second(s), 63 queries .

    回顶部