QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
; M1 [- {* Q* y. P6 J1 y#include"stdio.h"</P>! K5 b3 @/ B- h: g7 X) C. g
<>  void strp(a,p,c, n,u)
7 i; ?9 C' [" A      int n;! d7 i! G. J2 D' ]; Y# L% T/ q
   double a[],p[],c[],u[];. P0 H. a& C1 Z5 }- x  f
{   
" z; S0 k$ w7 r% K$ r4 R0 w/ B   int i,j,k,v;, W9 y- L* W3 p
   double sum,asum;
5 t7 u+ G1 o* \! z7 X3 h& }for(j=0;j&lt;n-2;++j)
6 H$ _2 v7 L3 d( {+ }+ y{// 最开始的for 循环7 |6 R; s, @; p- E4 ~) |2 q
       for(i=0;i&lt;n;++i)//初始化u[]全为零
, e5 i% r) R& O3 v     u=0.0;</P>
) _' b+ C- F! ~1 t5 W" d5 b<>8 A6 X5 I, B& q- o) \
      sum=0.0;
  _  {+ ?" k0 I; r& p- P7 M& M   for(i=j+1;i&lt;n;++i)//实现a
" O- v6 b# g: I# H! E/ U      {# R. V* _6 F) P
       k=i*n+j;
  `/ E# C' C* a: Z8 y. [    sum+=a[k]*a[k];" f$ {5 ]& n( o
   }! e! ~2 r& i, y  H! q5 S
      asum=sqrt(sum);</P>
, {" i; s$ G% X* j" S- I  e<>      for(i=j+1;i&lt;n;++i)" w, G, }3 v! X) q
   {
' _6 L7 d* P' \: k; }+ {. a8 w    3 B: ]! m% Z$ G) n4 h
    if(i==j+1)% {$ m8 |* }+ B1 _- X
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;: O  [. J; t4 i: b$ k
    else
5 r1 ^+ ?6 {2 m* M     u=a[i*n+j];- j5 t+ w: o" @- ]4 z
   }2 Z) r& _; _/ N; P' S% e
      </P>4 Z" P" ]/ ^8 _; p
<>0 Q' p1 W  g, L  c$ S) q* M8 \
   sum=0.0;  //实现P
, d9 X" S) F6 D5 N3 G8 k   for(i=0;i&lt;n;++i)3 v1 ^0 M0 i7 C& F+ \, B
    sum+=(u*u);</P>
: ]& X0 i) k& Q* c! `/ t% O  C/ F2 z<>   for(i=0;i&lt;n;++i)
) ~# Z1 d/ h" N2 R: c* n: K   {for(k=0;k&lt;n;++k)
) y' J! x, A+ z: e, z, r$ Y5 _    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
! d8 e/ L) \. ]3 x7 \0 O    printf("%13.7e  ",p[i*n+k]);}! `6 G; g5 R7 |& s7 j
         2 ?7 \4 R5 q; _8 Z" X9 U
   printf("\n");}</P>
1 M: f" M+ P0 J# t7 Z* e' k" Q$ Q' i1 d/ O( E
<>9 g1 R* e+ m0 Q$ H7 D+ {2 I
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
8 ~9 i- F/ Q. X6 p        for(v=0;v&lt;n;v++)2 y) d. _5 N4 `/ n3 ~6 X! l
  {  c[i*n+v]=0.0;
3 E+ J4 y  w: X; Y( y0 n' }" H   for(k=0;k&lt;n;k++)
+ P0 |; H" F9 `    c[i*n+v]+=p[i*n+k]*a[k*n+v];) g' w( F* c5 p5 W0 u* S
  }</P>& ?, ^% C7 w% K
<>. p8 e5 Q( V2 a8 B
     for(i=0;i&lt;n;i++)
- F5 s$ D  ]) E6 t5 s0 `   for(v=0;v&lt;n;v++)& o% x/ p, m3 s& G
   {% {$ u, J6 q, s1 u7 f# g$ F
    a[i*n+v]=0.0;
3 d% f, v5 ]7 u2 t    for(k=0;k&lt;n;k++)- _7 j) f- D. W8 j; h
     a[i*n+v]+=c[i*n+k]*p[k*n+v];# A7 m& R( S: r. Z( h( U2 T, x
   }</P># P/ t) [9 V: `& h
<>
0 `3 m, o- H! f0 x  P1 v6 m0 @}//最开始的for的结束的大括号& q1 ?( j' P( r) b  u; O4 \
return;
$ N, q. ]: C& d2 O  U" a5 \1 c  }</P>
5 Y+ b( p4 b  L+ J5 G+ f5 y- X
, `9 H8 W) \, t+ {" V4 m, E<>自己写的运行总是错误</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 07:07 , Processed in 0.427253 second(s), 63 queries .

    回顶部