QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |正序浏览
|招呼Ta 关注Ta
<># include "math.h"
: S& u. L0 ]2 |+ Z; ?# ^% Y- N#include"stdio.h"</P>& I7 ]9 F- q" D: E* C: }2 n3 X/ Z
<>  void strp(a,p,c, n,u)5 t2 p* y- ^2 B, O0 j
      int n;, J, h$ j7 T4 p  Z; d( m
   double a[],p[],c[],u[];
: u. A  N4 u, A" T{   4 j1 G/ X0 [$ G5 T9 s
   int i,j,k,v;% k( @1 b# G  ]+ t7 n  l9 E5 K
   double sum,asum;
# Y. W5 I3 Z6 {: p' i+ Gfor(j=0;j&lt;n-2;++j)
2 i' N2 i8 p6 H! S6 x{// 最开始的for 循环  M' |- Z* r, {. A
       for(i=0;i&lt;n;++i)//初始化u[]全为零
" s0 t, r- d' o3 ^7 ]$ D) z) s     u=0.0;</P>! `; M% z4 L+ W
<>' t7 [1 w% r% M: ]; l5 d# W* }
      sum=0.0;
. Z  ?4 j% C# k+ m1 V   for(i=j+1;i&lt;n;++i)//实现a) c$ D; |1 u' _* I5 }
      {
3 P& M8 G! t5 E. l3 j7 Z/ ?3 d       k=i*n+j;
! t, b5 J. D$ E5 r6 m, T+ T' F    sum+=a[k]*a[k];
2 f' }( z$ L+ G   }- \( I# E2 u( x1 Z$ c
      asum=sqrt(sum);</P>! H* u9 F! G' g" J3 s  X0 g1 a
<>      for(i=j+1;i&lt;n;++i)
: H! L6 ^# a+ p- J   {9 k4 d2 A. j1 z
   
$ j% ^0 Z3 z( ?: @5 ?$ u( Z, h    if(i==j+1)
& Q7 @2 C9 P6 |* B* G1 c% x     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;! ^, `9 Y  Z/ @& I8 M! U: q
    else
$ {* r; p/ N% g. N/ y+ J     u=a[i*n+j];: O  w: |0 I1 \$ a
   }8 l! k: h& U: R
      </P>. t- N( ]- L) K. X# u! X
<>& u, R9 I8 k/ @, D: D! H
   sum=0.0;  //实现P- g- g: u5 K7 k  F
   for(i=0;i&lt;n;++i)0 X! i: A+ b; p7 n
    sum+=(u*u);</P>, H) {% y. ?* V
<>   for(i=0;i&lt;n;++i)8 E* }/ t, `  V: |$ _/ X
   {for(k=0;k&lt;n;++k)* A) {9 Z/ D7 ~. F# \9 r8 }
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;& w7 @5 `8 F! S
    printf("%13.7e  ",p[i*n+k]);}
, S6 \/ Q. A$ O$ a' e( E% X         
) h( N" ~$ z& {   printf("\n");}</P>3 B. l3 u% F. q! p* K
% x4 z& c% h+ T
<>: z/ [5 |) w: Y3 N
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
  A6 P4 b2 S5 o5 T' X# ~6 n0 _. O        for(v=0;v&lt;n;v++)
* \4 r: v9 p! J0 W$ Q. h# \+ ^& ^* S1 P  {  c[i*n+v]=0.0;: @, t/ H: U3 D( a
   for(k=0;k&lt;n;k++)2 {, v0 ?# h8 L4 j5 n6 P0 Z7 `& X
    c[i*n+v]+=p[i*n+k]*a[k*n+v];$ @* f; {% p* s  U8 `/ F
  }</P>
$ w# `/ P5 V5 v<>
; ?, `7 z* ?) J; D( C* u: c     for(i=0;i&lt;n;i++)
& b. s+ s5 r% _   for(v=0;v&lt;n;v++)  [" V. |7 \- n6 O& j3 ~) E% g
   {1 L: p' u8 C- e. n3 M0 ]& S
    a[i*n+v]=0.0;) X+ K$ b- d4 k
    for(k=0;k&lt;n;k++)# ~" ~, U% s* x
     a[i*n+v]+=c[i*n+k]*p[k*n+v];
7 E  ~5 c% j$ {/ c. E   }</P>
: w7 w' ~1 o* t+ s' l, ^<>/ _7 _+ o$ ]2 o( b$ q# V3 m% M
}//最开始的for的结束的大括号1 |" p- C( Z7 r1 ]& e3 q. _5 V
return; 7 ~4 n3 m9 v4 A; @) }2 s
  }</P>
3 r0 q* ]7 S$ F- h* ?( N( B' v
6 N+ s; H( }5 F- o<>自己写的运行总是错误</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 23:38 , Processed in 2.256512 second(s), 64 queries .

    回顶部