C语言线性代数方程组的迭代解法,线性代数方程组的通用性迭代解法的程序实现.docx...

线性代数方程组的通用性迭代解法的程序实现

李安志

(成都市510信箱,成都610003

摘要给岀利用线性代数方程组的通用性迭代解法求线性代数方程组的一个特解 的算法描述及C语言实现.

关键词线性代数方程组;特解;收敛性

中图法分类号0214. 5 ; TP311

1概述

线性代数方程组的通用性迭代解法与传统的迭代解法相比1 :它的算法更简单,收敛速度

更快,判断方程是否有解更准确.其思想描述如下:

(1)用(? , ?)表示两向量的内积,用II ? ^2表示向量的欧氏范数.

定义1. 1将n X m阶线性代数方程组

(5 ' , x) = bi ,( x € Rm ,未知),

115 i I2 = 1 ,

i = 1 ,2,, n 19 st丄

其中X°为迭代初值,k为迭代次数,Xk为解的k次近似值. 该算法的正确性证明请参考文献2 .

2算法描述

2. 1变量说明 head :存放长度为nX ( m + 1)的连续空间的起始地址,该空间用于按行排列 存放方程组的增广矩阵.p ,p1 :分别存放两个长度为 n的连续空间的起始地址,该空间分别用

3中国工程物理研究院预研基金资助项目

收稿日期 1998 - 05 - 24 李安志 男32岁 讲师

于存放一次迭代前后的近似解.m , n :分别存放方程组中方程的个数和变量的个数.t:存放

迭代的精度.

2. 2调用的过程和函数in put ():输入方程组的增广矩阵存放到以head为起始地址的连续

空间中,并法式化该方程组.didai ():用迭代法求方程组的根.

2. 3算法

Procedure didai ()

begin

输入m ,n ,t的值;

动态分配连续空间head ,p ,p1 ;

input ();初始

化 p ,p1 ; s < -

1. 0 ;

while ( s > t) / 3 迭代过程 3 /

■? - ■■"

begi n

(I) for i = 1 to m

begin

.-jL En*N"F—

p 0. . n - 1 < - p1 0. . n + 1 ;

q = 0 . 0 ;

鶯*鶯料 %?

for k = 0 to n - 1

q = q + head (i - 1) 3 ( n + 1) + k 3 p k ;

for k = 0 to n - 1

p1 k = p k +(headi 3 (n +1)-1 - q ) 3 head (i- 1) 3 (n + 1) +

k ;

en d.

(n) s = (p1 0. . n - 1 - p 0. . n - 1) X(p1 0. . n - 1 - p 0. . n - 1);

(川)s = sqrt ( s);

end

for i = 1 to m / 3判断p1是否为方程的根3 /

begin

p 0. . n - 1 < - p1 0. . n - 1 ;

q = 0 . 0 ;

for k = 0 to n - 1

q = q + head (i - 1) 3 ( n + 1) + k 3 p k ;

for ( k = 0 ; k < = n - 1 ; k + + )

p1 k = p k +( headi 3 ( n + 1)-1 - q ) 3 head (i - 1) 3 ( n + 1) + k ;

s = (p1 0. . n - 1 - p 0. . n - 1 X (p1 0. . n - 1 - p 0. . n - 1);

s = sqrt ( s);

if (s > t) break ;

1^94-201』

end

(8) if (i >

m)输出方程的解

p ;

else

方程无解

endp

3程序运行例子

有方程组为:

2 xi

+ X2 -

5 X3

+ X4 = 8 .

<

xi -

3 X2 -

6 X4

=9 ,

2 X2

-X3 +

2 X4

=-5 ,

(I

J Xi +

4 X2 -

7 X3

+ 6 X4 = 0.

?於*血l 5'-

&'.花一.\1! '-0 h

? L V. l>...■*

jj r*_K

粘|1

.—.H T .J.'-气匕

-=''H '” '■?

■」

-i i*H a,."l-~ i .

::污

:.詞'|\

■I

i'i'11.

li 《

■ ■

H□-■%

.以二 3

严泪工;

*■1

■:::,: HI

AA sA hi

\ ?v?, II

:n

Ji

?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值