QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
* L# _0 E. G' W$ a$ X#include"stdio.h"</P>
* g5 ^- ?! d5 g1 |<>  void strp(a,p,c, n,u)! w- f5 Q, }0 `7 \
      int n;4 S# j! C! W% ~9 ^
   double a[],p[],c[],u[];& M7 m0 g& P. y5 G* g  m
{   
8 K5 k9 g% R9 T  o" i4 ?   int i,j,k,v;* C' x  E& A7 {: ?+ x
   double sum,asum;3 o4 M$ C, ]) F' u9 b+ V1 H
for(j=0;j&lt;n-2;++j)
4 S( M, Y( q& R0 _+ n8 G& h{// 最开始的for 循环
4 o" Z: V: G# D. F' q       for(i=0;i&lt;n;++i)//初始化u[]全为零5 p% a: k7 l0 W3 e& n: c/ z' i
     u=0.0;</P>
7 W6 ]' l& n7 |$ q) f<>+ T4 x6 M7 a, F3 f
      sum=0.0;
6 a- D$ w0 A3 Y   for(i=j+1;i&lt;n;++i)//实现a- ?! F3 o! e. Z: d5 K" }4 A9 C
      {
) o- j+ C* i7 X' Y6 `. S       k=i*n+j;
, `8 E9 M7 m% k    sum+=a[k]*a[k];
1 A3 b' d9 ]# B% G3 c' f   }% L: Y, r  q( J1 A2 I2 r! h8 T1 C' J5 r
      asum=sqrt(sum);</P>8 [8 u1 \+ A3 j& b% |
<>      for(i=j+1;i&lt;n;++i)7 L; e) E# \3 y5 }: q
   {9 m+ d8 ^1 f) s1 r# D/ p7 x7 L/ q
   
; Y9 N0 X# j5 B4 G# S0 {9 z. z4 e4 E    if(i==j+1)$ l0 F/ Q% G. G
     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;0 i- ?- e2 l: z
    else
5 r: u# E" ^' F7 w+ X2 g     u=a[i*n+j];9 Q/ h$ u/ b. M4 U# n5 {: I
   }
- }9 u6 M: C$ _4 N' I      </P>
' d: g( s* k% s, i6 H& ~' _<>4 `/ W$ v4 u* X0 \' S! w$ r
   sum=0.0;  //实现P
" Z3 b2 m! @5 ?   for(i=0;i&lt;n;++i)  I/ [: P% A6 p/ {, T& w/ a  i
    sum+=(u*u);</P>6 v3 K3 P8 V3 U! r  D* ^: v
<>   for(i=0;i&lt;n;++i)% d9 Z! u8 p- X( ?( e
   {for(k=0;k&lt;n;++k)
8 r4 \2 s0 d0 V- ]  Q    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;9 M# F) g, y& W' o) x
    printf("%13.7e  ",p[i*n+k]);}0 }* ]7 v5 i/ s" [4 J: ?) g
         
6 F! [0 ]5 _5 g0 @8 }   printf("\n");}</P>
% ]0 J8 u7 _/ Q0 p* p* }; Q3 Z
9 \3 Y/ W* X: I<>
- y/ {; T, i4 U$ k  m  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘6 U* {7 U% X9 s1 j, g$ N
        for(v=0;v&lt;n;v++), `) c. O# {7 Y
  {  c[i*n+v]=0.0;
: J: t; A; S$ B3 v9 `; v0 {   for(k=0;k&lt;n;k++)
8 ~8 u% @: H2 [* A8 b' b    c[i*n+v]+=p[i*n+k]*a[k*n+v];+ b8 J: g! _. z
  }</P>
% w/ Q& _2 Q; M9 v- X/ Q) i<>
" F' K- z) U+ I     for(i=0;i&lt;n;i++)
" M6 W3 y) g! B* ~: ^+ @3 |1 f   for(v=0;v&lt;n;v++)8 M/ T" p* d' T4 D5 A
   {' o" T* U& s3 W' b" x
    a[i*n+v]=0.0;* \: Q7 D. o4 S( I. J
    for(k=0;k&lt;n;k++)
: G' n. p( A3 [: n- H3 g" x* s! s     a[i*n+v]+=c[i*n+k]*p[k*n+v];0 D! e9 S. t/ ^1 F3 g6 ?$ g6 Q
   }</P>( `- t0 \7 L5 I. D- n
<>
, o; D) Z2 y8 g}//最开始的for的结束的大括号
* d" C- Y: u+ M) A, a$ I return;
# e) A% N' l4 f6 S3 u; \) W6 q) W, X2 h  }</P>; |* O2 r: |2 n. z* l
, |' I7 a' L! p/ z5 N& A; a
<>自己写的运行总是错误</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-9-3 08:21 , Processed in 0.422027 second(s), 62 queries .

    回顶部