QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
5 d: Q! B! s: S" H#include"stdio.h"</P>$ Q1 f# N0 ~' [! s$ q  P3 a/ l
<>  void strp(a,p,c, n,u)6 y! a* f( Z1 h6 f  d9 G( v5 n% n
      int n;" T4 u8 A& w) H: f9 g; K2 Y6 d
   double a[],p[],c[],u[];! s3 p1 V  \5 v; @( F  X
{   8 P& q, E3 K4 E4 @5 }8 p6 K
   int i,j,k,v;. _2 b3 @* t2 L
   double sum,asum;6 b7 D$ O3 x( C2 {
for(j=0;j&lt;n-2;++j)5 j4 R3 D$ Z  F3 X  Z2 o
{// 最开始的for 循环- s& J0 t8 R; X0 m" Z
       for(i=0;i&lt;n;++i)//初始化u[]全为零
( {8 G2 R: I# h4 |     u=0.0;</P>. @, ]: w+ B+ j# t% a% ]# l
<>; F: ]1 f5 ?+ B- l% v4 X/ U. v7 |
      sum=0.0;
/ r& Z& ^. m7 H' w0 s' V   for(i=j+1;i&lt;n;++i)//实现a/ e" Y) z$ h0 \' }/ w1 ~
      {0 q+ B9 b! Y: [" \4 l, o( g
       k=i*n+j;
: q$ }' ^" w4 }    sum+=a[k]*a[k];3 L5 [7 Y$ q7 o
   }
9 Q# J* w' \/ c5 ~; j4 I' t      asum=sqrt(sum);</P>
- O$ }; C7 u8 H3 K<>      for(i=j+1;i&lt;n;++i)
+ r$ l5 p& `: u# [( u2 }7 e   {. W3 M; X5 s9 I% |3 K( T1 Z
   
- w+ B0 b* Z1 m* n5 R% ~! p    if(i==j+1)9 ]  I1 ?5 A" P  q" [$ U" r$ H
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
, Z; R- o$ F, |4 I    else7 O5 |) [8 k, s* |! p# A5 H0 K( v
     u=a[i*n+j];. A! L+ n, O) L6 C* I
   }
0 W* p/ Y  d: o      </P>: X0 Z! d' B" R3 o5 N$ t+ e7 q
<>
/ f5 h& R3 X6 R( r4 v/ R   sum=0.0;  //实现P+ ~& D) V: d1 h8 X
   for(i=0;i&lt;n;++i)3 i5 w: K, n  c
    sum+=(u*u);</P>  J' P0 R8 |. {+ H+ @2 f# f( U
<>   for(i=0;i&lt;n;++i)
! N- x% t# ?* B5 D/ I: k. \* c$ o   {for(k=0;k&lt;n;++k)* [# g% p* Y  Y+ H
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;* s" `/ }6 v! q) F# p( c6 _
    printf("%13.7e  ",p[i*n+k]);}
. P  q" e1 b# G5 g         
$ ]0 W$ j9 @) J   printf("\n");}</P>
6 d; V5 F7 x' |; I  ~  d6 k9 ]/ l2 n$ l: ^  D' \
<>0 X" |, N  F7 R! T8 V  S
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
6 P5 b7 a/ m7 e' D( z- G        for(v=0;v&lt;n;v++)9 q4 V% m8 ^+ G# x" |
  {  c[i*n+v]=0.0;% y" l. ~8 M& c, U4 H% A. d3 u) X
   for(k=0;k&lt;n;k++)$ Q+ a( X7 F) \
    c[i*n+v]+=p[i*n+k]*a[k*n+v];
) `8 c: s' ~& Z6 Q: Y5 h7 e  }</P>
& H; f& J9 n7 @<>. R; {9 y; j% g
     for(i=0;i&lt;n;i++)/ b) }8 y: D! E$ {0 ^% B
   for(v=0;v&lt;n;v++): ]6 [4 E8 T7 [9 w
   {
& ?  d6 W5 I) l$ g4 W5 V# v1 M1 {    a[i*n+v]=0.0;
! [: a& z7 y7 y' u* y% ~    for(k=0;k&lt;n;k++)
; b5 `4 X  U7 D  \9 h     a[i*n+v]+=c[i*n+k]*p[k*n+v];8 @( p; f) e" Y  v! v
   }</P>' ]0 k; j. c2 ~5 _: j- T8 g+ P
<>
8 `4 X0 |2 W) t0 R: L7 |}//最开始的for的结束的大括号( r% X* U" I8 h3 U. I1 q) F
return; 2 z6 |) y/ K$ C0 @6 X
  }</P>
$ E# @  \1 H+ x" V5 S
4 p, N3 q- U1 A7 ?5 Q. m5 A& s<>自己写的运行总是错误</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-6-3 18:28 , Processed in 0.511741 second(s), 63 queries .

    回顶部