线性代数方程组的通用性迭代解法的程序实现.docx_第1页
线性代数方程组的通用性迭代解法的程序实现.docx_第2页
线性代数方程组的通用性迭代解法的程序实现.docx_第3页
线性代数方程组的通用性迭代解法的程序实现.docx_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

线性代数方程组的通用性迭代解法的程序实现李安志( 成都市 510 信箱 , 成都 610003)摘要 给出利用线性代数方程组的通用性迭代解法求线性代数方程组的一个特解的算法描述及 c 语言实现.关键词 线性代数方程组 ; 特解 ; 收敛性中图法分类号 o214. 5 ; tp3111 概述线性代数方程组的通用性迭代解法与传统的迭代解法相比1 :它的算法更简单 ,收敛速度 更快 ,判断方程是否有解更准确. 其思想描述如下 :(1) 用 (,) 表示两向量的内积 ,用 2 表示向量的欧氏范数.定义 1. 1将 n m 阶线性代数方程组( 5 i , x)( x rm , 未知) ,= bi ,5 i 2 = 1 ,i = 1 , 2 , n19 st其中 x0 为迭代初值 , k 为迭代次数 , xk 为解的 k 次近似值.该算法的正确性证明请参考文献2 .2算法描述2. 1变量说明head :存放长度为 n ( m + 1) 的连续空间的起始地址 , 该空间用于按行排列存放方程组的增广矩阵. p ,p1 :分别存放两个长度为 n 的连续空间的起始地址 ,该空间分别用3 中国工程物理研究院预研基金资助项目收稿日期 1998 - 05 - 24李安志 男 32 岁 讲师89第 1 期李安志 : 线性代数方程组的通用性迭代解法的程序实现于存放一次迭代前后的近似解. m , n : 分别存放方程组中方程的个数和变量的个数. t : 存放迭代的精度.2. 2调用的过程和函数input ( ) : 输入方程组的增广矩阵存放到以 head 为起始地址的连续 空间中 ,并法式化该方程组. didai () :用迭代法求方程组的根.算法procedure didai ()begin2. 3输入 m ,n ,t 的值 ;动态分配连续空间 head ,p ,p1 ;input () ; 初始化 p ,p1 ; s t)begin/ 3 迭代过程 3 /( ) for i = 1 to mbegin(1) p 0 . . n - 1 - p1 0 . . n + 1 ; (2) q = 0 . 0 ;(3) for k = 0 to n - 1q = q + head (i - 1) 3 ( n + 1) + k(4) for k = 0 to n - 13 p k ;p1 k = p k +( head i 3 ( n + 1) - 1 - q) 3 head ( i - 1) 3 ( n + 1) +k ;end.( ) s = (p1 0 . . n - 1 - p 0 . . n - 1 ( ) s = sqrt ( s) ;end) (p1 0 . . n - 1 - p 0 . . n - 1) ;(7) for i = 1 to m / 3 判断 p1 是否为方程的根 3 /begin(i) p 0 . . n - 1 - p1 0 . . n - 1 ; (ii) q = 0 . 0 ;(iii) for k = 0 to n - 1q = q + head (i - 1) 3 ( n + 1) + k 3 p k ; (iv) for ( k = 0 ; k t) break ;) ;end(8) if (i m)输出方程的解 p ;else方程无解endp3 程序运行例子有方程组为 :2 x1 + x2 - 5 x3 + x4 = 8 .x1 - 3 x2 - 6 x42 x2 - x3 + 2 x4= 9 ,= - 5 ,( x1 + 4 x2 - 7 x3 + 6 x4 = 0.91第 1 期李安志 : 线性代数方程组的通用性迭代解法的程序实现# define l en sizeof ( double)double 3 head , 3 p ;int m ,n ;void input () int k ,b ;double d ;printf “( n 请输入方程组中方程的个数 m : ”)scanf “( %d”, &m) ;printf “( 请输入方程组中变量的个数 n : ”) ;scanf “( %d”, &n) ;printf “( 请输入方程组的计算精度 t : ”) ;scanf “( %lf”, &t) ;b = m 3 ( n + 1) ;head = ( double 3 ) calloc ( b ,l en) ;p = ( double 3 ) calloc ( n ,l en) ;printf “( 请输入方程组的增广矩阵 : n”) ;printf “( 开始 : n”) ;for ( k = 1 ; k = m 3 ( n + 1) ; k + + ) / 3 输入增广矩阵 3 /scanf “( %lf”, &d) ;head k - 1 = d ;for ( k = 1 ; k = m ; k + + ) / 3 法式化 3 / d = 0 ;for ( b = 1 ; b = n ; b + + )d = d + head ( n + 1) 3 ( k - 1) + b - 1 d = sqrt ( d) ;for ( b = 1 ; b = n + 1 ; b + + )head ( n + 1) 3 ( k - 1) + b - 1 = head3 head ( n + 1) 3 ( k - 1) + b - 1 ;( n + 1) 3 ( k - 1) + b - 1 / d ;int didai () int i ,k ;double 3 p1 ,s ;p1 = ( double 3 ) calloc ( n ,l en) ; for ( k = 0 ; k t) / 3 迭代求解 3 /for (i = 1 ;i = m ;i + + )92四川师范大学学报 (自然科学版)22 卷for ( k = 0 ; k = n - 1 ; k + + )p k = p1 k ;s = 0. 0 ;for ( k = 0 ; k = n - 1 ; k + + )s = s + head (i - 1) 3 ( n + 1) + k 3 p k ;for ( k = 0 ; k = n - 1 ; k + + )( headi 3 ( n + 1) - 1 - s ) 3 head (i - 1) 3 ( n + 1) + k ;pl k = p k +s = 0. 0 ;for ( k = 0 ; k = n - 1 ; k + + )s = s + (p1 k - p k s = sqrt ( s) ;) 3 (p1 k - p k) ;for (i = 1 ;i = m ;i + + ) / 3 判断该解是否为方程的根 3 /for ( k = 0 ; k = n - 1 ; k + + )p k = p1 k ;s = 0. 0 ;for ( k = 0 ; k = n - 1 ; k + + )s = s + head (i - 1) 3 ( n + 1) + k 3 p k ;for ( k = 0 ; k = n - 1 ; k + + )( headi 3 ( n + 1) - 1 - s ) 3 head(i - 1) 3 ( n + 1) + k ;p1 k = p k +s = 0. 0 ;for ( k = 0 ; k t) break ;) 3 (p1 k - p k) ;if (i m) return (1) ;else

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论