QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"
! f& ^+ P: `9 q4 X#include"stdio.h"</P>: O9 y. f0 \: ~( R. A* A
<>  void strp(a,p,c, n,u)  i8 i0 M' i  C7 _* J
      int n;# A1 T8 I# a! V2 @
   double a[],p[],c[],u[];
9 y; P  {# w% f: e' K{   4 m4 g) }) I* M' [7 G( L5 R
   int i,j,k,v;
" @! X5 L; P/ W! P" y   double sum,asum;
3 [2 ~: H+ h4 i2 t; S  `: ]for(j=0;j&lt;n-2;++j)7 O" M6 k# i  A  L' n+ V; U. A
{// 最开始的for 循环
2 ?7 J7 V3 K& J6 N       for(i=0;i&lt;n;++i)//初始化u[]全为零* J6 ~; Z% g/ ^7 E" N6 ]0 A
     u=0.0;</P>
! q) K# Z! ^3 _8 D/ a$ {<>& r8 S! J( f+ I. n" E& ]0 `
      sum=0.0;" W5 Y, }* t8 `: i
   for(i=j+1;i&lt;n;++i)//实现a
) F6 P1 B9 ?. q2 z; t7 f      {. b% z( `2 `% H- ?8 o1 }
       k=i*n+j;
! d  R( ^, b2 U& \% r) V    sum+=a[k]*a[k];
* @! J1 U* G) A7 {# f& V   }8 h7 W# w6 Z, q% ?- `1 g
      asum=sqrt(sum);</P>
/ ]' j) h$ z: ^, Z! \; Q5 z<>      for(i=j+1;i&lt;n;++i)/ a: W8 Z; E4 [& y3 H
   {
- @9 M% p$ I8 _) }# f. K    - K% g. d# |$ T1 B% u% l' x
    if(i==j+1)
: m9 c0 t8 I0 M. s9 U     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;/ ~! W; f9 a- }% ~8 U# S0 h
    else
. Q3 g; g* k! N" k     u=a[i*n+j];
# u4 b. O$ G7 E% Q" t+ Z   }; E! {/ P2 b5 O5 i
      </P>1 T$ }8 l+ z: D0 y( I
<>+ e5 u% c' F: p7 i; q7 X
   sum=0.0;  //实现P
' N3 n, R5 H$ q. w: {2 C   for(i=0;i&lt;n;++i)
3 S% f% D7 m# {* ~' y0 d8 J    sum+=(u*u);</P>: o- M; k5 @1 N4 V
<>   for(i=0;i&lt;n;++i)
$ {, q0 R- |/ S& N   {for(k=0;k&lt;n;++k)$ i* s; _3 ~4 w, ^
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
6 z% D4 `6 [# ?    printf("%13.7e  ",p[i*n+k]);}
! `  |" l3 X$ Y; E$ G4 X: I8 A         * n: D0 F- M1 G$ V; J+ r
   printf("\n");}</P>
  N, d, E5 D/ g: @+ r& m1 R- q% V
5 z4 }" Q( C" ^2 p2 Y. g<>
# J& l6 I" D9 k  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
' E* m8 \: {. D* l        for(v=0;v&lt;n;v++)* i. C# \7 X+ ?: {3 {
  {  c[i*n+v]=0.0;& G6 A5 K, G% S; O  [
   for(k=0;k&lt;n;k++)/ K' i9 L. ?" D/ p
    c[i*n+v]+=p[i*n+k]*a[k*n+v];4 F' j' `3 H: Z( O
  }</P>
& l8 F6 Y3 r, D, c) g<>( X- t" g6 a! J! i0 X
     for(i=0;i&lt;n;i++)
4 c- J4 S, I  R# Y3 Y   for(v=0;v&lt;n;v++)
  |; ]9 e' s1 }. [! w1 H   {
2 Q5 {/ s+ \- A/ N$ @* U    a[i*n+v]=0.0;! Y; s! r& S% N
    for(k=0;k&lt;n;k++)/ B2 [# `0 |+ I8 d- c
     a[i*n+v]+=c[i*n+k]*p[k*n+v];% Q# @2 c5 f9 k: ^% v
   }</P>
4 t, s! c% Y8 j7 n, Y2 i/ A9 ?2 m! D<>. U9 h( E: }( b4 a6 R. X# [8 u0 l9 W
}//最开始的for的结束的大括号
6 ~; {( Z5 O7 q% [9 ? return; 9 }/ C/ s4 J' U3 Z4 |
  }</P>9 q1 B4 o* C2 J8 m( s

2 j8 z* D3 v; m! Q$ M: W7 _<>自己写的运行总是错误</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 13:59 , Processed in 0.424256 second(s), 63 queries .

    回顶部