QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
1 `* d8 S; G1 X3 ~" p#include"stdio.h"</P>1 u9 f1 q1 g8 ?
<>  void strp(a,p,c, n,u)
& ~/ U; F* W8 {9 X& N$ ^, ^      int n;
* \; {9 i% l$ U( z: |! {   double a[],p[],c[],u[];9 p; G/ v- s/ Y$ h, o
{   2 c" J9 L+ M8 X' B& t
   int i,j,k,v;
% e0 b/ V  R$ b; k; j7 K   double sum,asum;/ V0 t9 F5 [: U
for(j=0;j&lt;n-2;++j)0 ]. \+ I6 O% L) T, J8 [) J
{// 最开始的for 循环3 S3 T. F7 H' `
       for(i=0;i&lt;n;++i)//初始化u[]全为零
0 @' g9 J" r) j0 w     u=0.0;</P>
% J- k$ F8 E; x: c<>  h) S; E$ C0 X# E4 v1 Q
      sum=0.0;
- n  P& O& u- ?( k   for(i=j+1;i&lt;n;++i)//实现a
! `3 S" m% K: p      {
8 e8 g$ j* {* {+ H! Z       k=i*n+j;
8 c' j9 h7 n, j: L0 L$ }    sum+=a[k]*a[k];! d6 W- a& l# I$ L6 f& @9 D
   }
) c, R$ w: h$ ?6 @: A; S6 J6 f, {      asum=sqrt(sum);</P>* g: i; g2 S  Q' N/ T' c! ?
<>      for(i=j+1;i&lt;n;++i)8 T: X( ~, q1 Z/ I
   {
' u0 K: t4 n1 H' l   
, N/ F: Y3 U# z0 I5 j. y5 ?    if(i==j+1)
: L, j: R7 L$ y7 R     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;" F& {4 b) _! z( s+ `: g: h" a
    else8 d* _8 P" h& R2 D0 X
     u=a[i*n+j];6 g6 }1 B* e# g7 h% f
   }
! H( O/ c1 t7 {1 }      </P>. _; I/ w& k8 o
<>0 ]! J$ G, V/ E2 s+ O" D
   sum=0.0;  //实现P( Y5 X, o( C' [: j1 m/ X2 e
   for(i=0;i&lt;n;++i)' k6 e: _3 b! {- \
    sum+=(u*u);</P>2 w0 h2 _1 G- G- G7 |
<>   for(i=0;i&lt;n;++i)
* H; j7 |+ _) U3 `4 b: k   {for(k=0;k&lt;n;++k)
( X3 \  \$ p3 P" n' N% S" N8 X$ }    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
0 S4 [8 t$ y: A    printf("%13.7e  ",p[i*n+k]);}( D: ^; A) \6 \# i$ T/ U$ ], t
         1 ^8 D6 h  N# |, w3 i# p! I# w
   printf("\n");}</P>. E; r  C( @2 ?7 V
6 Q3 T; ^; e$ b6 X& H6 S
<>. k- I5 Y. K. o+ ?4 g( d" ~
  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
2 h3 T/ X, O3 N, O% N5 W        for(v=0;v&lt;n;v++)
: G/ t# K' s6 i8 l  {  c[i*n+v]=0.0;+ ^% `* a8 o& V4 X7 T. R
   for(k=0;k&lt;n;k++)
# E3 Y$ f8 z. T1 h* `. |) ~2 D# I# J7 N    c[i*n+v]+=p[i*n+k]*a[k*n+v];
' _: `5 C/ v- g( E: p6 r# x  }</P>
$ \* X6 K1 a3 I% S% s2 c<>
! t% c' d, B# b( M/ Y0 M0 t" p     for(i=0;i&lt;n;i++): Y& i1 J7 V, T; R
   for(v=0;v&lt;n;v++)! I5 s9 i( A" h$ m2 s
   {
# h2 k1 U; {3 f$ C, ]8 o* l    a[i*n+v]=0.0;
0 |  N" F( c/ C- E    for(k=0;k&lt;n;k++)! N/ B% J9 R( |" k0 q
     a[i*n+v]+=c[i*n+k]*p[k*n+v];
! L* ~* K3 _: p8 I- T* w   }</P>
5 u. V  Q' `) d1 s<>7 \  G' T* U7 H" ^' I8 h
}//最开始的for的结束的大括号1 S3 ^2 N" H% P  K4 `
return; % j: b, j) M  s
  }</P>8 }; B' X% w' P4 q& M

6 F1 \% H. a- r. @! W4 v# [% T/ A( v<>自己写的运行总是错误</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 16:01 , Processed in 0.579515 second(s), 63 queries .

    回顶部