QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h". k2 m! _: |" z5 D& T
#include"stdio.h"</P>
# B  ^; b7 `/ K5 n, l& v- u, q: _1 G<>  void strp(a,p,c, n,u)4 f3 V# C: @, V
      int n;+ E; G) c/ j( A3 ~9 G$ B
   double a[],p[],c[],u[];
! U7 t! h1 N* k# N: e7 `+ a{   : r* ^4 E  B  r* J) h' ?
   int i,j,k,v;
7 T* N5 r* Q$ M8 b! F* r% d   double sum,asum;
0 q6 l" S, B/ X1 Rfor(j=0;j&lt;n-2;++j)
* N& N1 S- I4 v% F  Q! m{// 最开始的for 循环: t3 a) F, m9 Z- z% K+ K; l) Y/ f
       for(i=0;i&lt;n;++i)//初始化u[]全为零
" v7 A3 L0 K& c* S8 O# d' q; _     u=0.0;</P>
! S3 f+ t% e5 {<>
' b9 ?7 R4 R( }" R' q  [      sum=0.0;
* E8 R" O  M* ?4 @: l/ u& d$ }  O   for(i=j+1;i&lt;n;++i)//实现a+ o) L7 x3 l7 S3 j
      {. [7 _7 Y! z2 y
       k=i*n+j;8 X( U' l7 q  X4 J/ z
    sum+=a[k]*a[k];
* V: `: P! i  o5 [* b   }0 ]/ O* d- j5 ]9 H6 U
      asum=sqrt(sum);</P>% a' Z) G" m( v: \
<>      for(i=j+1;i&lt;n;++i)( e, f# e/ W* X% R& q
   {  V" n3 |) F+ L! x% K8 D: o1 g
    , A* C3 K8 e0 }# C$ P" {( `
    if(i==j+1)6 q; p2 X7 I2 }& Z" J  ?3 l( V. Q/ H: i
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
& ~# M7 Y- L* R- n  b1 ~* I    else) d% [2 f2 N& q% F" }4 w0 _
     u=a[i*n+j];
" P0 i5 V7 z0 B/ O$ N   }2 W) l$ }- D/ e7 W; R$ S
      </P>
; `3 R8 ?% q+ c/ v% c<>
* W$ d* O0 |9 W3 |  {/ {4 I   sum=0.0;  //实现P# z0 f: f2 c7 S  w# J- B8 Y$ e2 t
   for(i=0;i&lt;n;++i)* r& |! z/ W$ M3 b" l  Y: Q  }
    sum+=(u*u);</P>2 L. y0 @( _) l: r2 d1 B  J
<>   for(i=0;i&lt;n;++i)- [3 w0 L' v  D' G
   {for(k=0;k&lt;n;++k)
- p. F3 L" D& M9 @    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;0 T5 M% n# o/ w+ B" s7 Y9 F4 a" B
    printf("%13.7e  ",p[i*n+k]);}9 h2 |3 @$ c3 {3 f; a
         : u- z; P# }" q! [% Z
   printf("\n");}</P>3 U1 c+ c5 d, x9 I

5 u$ Z1 j  ~3 b3 B<>* n" W5 R5 O9 ]
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
5 r0 o, M1 j. j        for(v=0;v&lt;n;v++)
( d" `2 t3 r3 ~) u, n8 k+ F, k  {  c[i*n+v]=0.0;
: T% T/ f( J' w& F. q8 g& R   for(k=0;k&lt;n;k++)
6 H* C* a" W  ^4 c' {    c[i*n+v]+=p[i*n+k]*a[k*n+v];6 R+ ~( V" @% A6 {& r) t
  }</P>  p( F% a, W$ H! u0 I8 W
<>2 d! v; q4 n# [  b
     for(i=0;i&lt;n;i++)
3 K: i/ b& Q/ z; @# |   for(v=0;v&lt;n;v++)
0 O: k2 e' K1 z5 n, f4 U   {3 e: D$ F0 ]- R2 W# b2 \
    a[i*n+v]=0.0;: ?* R. l5 n- e( f( n# U( _. f
    for(k=0;k&lt;n;k++)8 z8 o! s2 H' @8 ?, J
     a[i*n+v]+=c[i*n+k]*p[k*n+v];
2 H3 e7 z% h. t, d( }& C1 S   }</P>/ g5 N( X6 F3 |3 X
<>7 D# H) x$ ^. r7 L  [& |
}//最开始的for的结束的大括号
0 ]% R0 r0 H. ~6 E; Q0 m return; ( k$ l. P% U# d# f. U
  }</P>/ g& D& z" p% G1 [! U

- v) I8 u8 q& ^& ?9 x<>自己写的运行总是错误</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 10:26 , Processed in 0.439899 second(s), 62 queries .

    回顶部