QQ登录

只需要一步,快速开始

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

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

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

2

主题

0

听众

19

积分

升级  14.74%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2005-4-24 22:33 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<># include "math.h"6 w  U. n# M; w4 v
#include"stdio.h"</P>
1 L0 M  v" L; `" C3 S0 w8 E<>  void strp(a,p,c, n,u)
' y" Y! v+ }- {( k0 W9 i2 i      int n;- Y* o+ `7 i; D9 y( D. \* f% E
   double a[],p[],c[],u[];4 m7 D! G9 z7 H! Z" K
{   
3 _9 D- ]3 Z- B# k: g: O   int i,j,k,v;+ F- B# Z9 U/ R6 n
   double sum,asum;/ N" ~0 I- i' @1 X$ C4 d0 e
for(j=0;j&lt;n-2;++j)+ e$ K7 G- a  {% {; u" d9 Y: V. Q
{// 最开始的for 循环
7 l: n! v! F6 y: n" Q0 b6 y% F- w1 S       for(i=0;i&lt;n;++i)//初始化u[]全为零
5 u! ^0 Y& X( r     u=0.0;</P>
' f/ e7 N8 A. E5 O& X$ p( H<>
! o" g9 E7 o* j, c( N" n  b      sum=0.0;
0 `1 Z1 [  m8 M9 y4 J   for(i=j+1;i&lt;n;++i)//实现a
8 U- n* I5 e5 ^% b2 P. i      {) F7 `; L. C" d7 e  F
       k=i*n+j;" D2 _+ O, h# }  d( |
    sum+=a[k]*a[k];9 \$ J4 Y, P( ^# @# E# u4 F
   }* x9 b; t8 y) L: q' E0 n' A
      asum=sqrt(sum);</P>+ f  [! E1 a3 i  \1 X# b. O5 v
<>      for(i=j+1;i&lt;n;++i)
; {$ {5 t8 j7 J+ h) _- {   {
' s5 T( l+ ?& p7 I9 I% g9 W- y   
1 v0 I. }# {! Z, N7 n) b6 E    if(i==j+1)
! B+ S  u0 w; ]" C6 n     u=a[i*n+j]+(a[i*n+j]&gt;0 ? 1.0:-1.0)*asum;
. y4 N2 \6 X& i# x    else
4 \8 d7 a' X! M9 E$ e) v     u=a[i*n+j];6 d+ f$ b: y/ p/ f7 a$ g; c4 {
   }" {# n3 J4 ]% g. |; M# ^
      </P>! M5 T- R3 ?' U9 }: y
<>
% N4 R2 q. W- v" T! a8 d4 O" \   sum=0.0;  //实现P4 `: b! M- V1 f& D% J$ Y
   for(i=0;i&lt;n;++i)
6 ^; w7 Y/ m( s3 @0 ^3 {    sum+=(u*u);</P>9 y, o8 E6 s7 z
<>   for(i=0;i&lt;n;++i)
1 k1 a- T% ?+ e) t6 u# |) k   {for(k=0;k&lt;n;++k)8 g% s& z$ y* u/ @
    {p[i*n+k]=(i==k?1.0:0.0)+((-2.0)*u*u[k])/sum;
& k: Q" V% n6 K3 z    printf("%13.7e  ",p[i*n+k]);}
! \3 T6 s6 A' f# P# R$ D0 |         
7 g( Z; d" e) K! ?+ ^   printf("\n");}</P>
( ~0 K' _$ y* J9 H) V6 b4 O, L
2 z" n" F, c; A2 H* r<>
- N, n  u$ N0 I  ]7 F+ s# n4 |" D  for(i=0;i&lt;n;i++) //实现最后的矩阵相乘
/ C5 ]% _2 j7 Z6 o- p        for(v=0;v&lt;n;v++)9 ~! d; G. `+ q% |4 K
  {  c[i*n+v]=0.0;( S+ O; }9 i' g" c  R, R& F$ E
   for(k=0;k&lt;n;k++)
7 T: q1 ~: P4 }" l' @    c[i*n+v]+=p[i*n+k]*a[k*n+v];
9 h) E/ V6 b: ~  }</P>
$ Z' t* D% S  I+ A0 Z* g+ N3 @; G4 D<>4 I, ~- x" F3 V* ]* Z' k
     for(i=0;i&lt;n;i++)6 |8 \( A3 [/ ]2 @, n2 {
   for(v=0;v&lt;n;v++)
- O6 F  H* {) i' v. J" h+ ?   {
6 g1 l5 n" n5 x; ?( n0 ?    a[i*n+v]=0.0;
8 Q  K$ K( R* i& @    for(k=0;k&lt;n;k++)6 G$ m8 t) ~9 @8 k, c6 S
     a[i*n+v]+=c[i*n+k]*p[k*n+v];
7 T3 C  m6 ~% M: }" c) M   }</P>6 L+ \, k) f/ K8 s6 y* ~; `3 m
<>
0 A) |1 _. [$ `4 d9 t8 ~}//最开始的for的结束的大括号( I* J/ X# o' N5 H
return;
1 ~8 s; ]4 E. f' g& M  }</P># L; v7 _) A' [" H6 V
( f; r: r# v+ P! R9 j; e; P+ h
<>自己写的运行总是错误</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-6-3 15:38 , Processed in 1.064046 second(s), 63 queries .

    回顶部