matlab高斯法实验题答案.doc_第1页
matlab高斯法实验题答案.doc_第2页
matlab高斯法实验题答案.doc_第3页
matlab高斯法实验题答案.doc_第4页
matlab高斯法实验题答案.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

高斯-若当全主元消去法解线性方程组 我们知道对于一个方程组而言,如果做相应的变换使系数矩阵变为单位阵的话那么就能得到它的解了,高斯-若当法就是这样的,但是为了减少误差,使用了全选主元法,下面是程序。保存为gauss.m在matlab中运行function ans=gauss(a,n,b)indexC=; %用于纪录主元indexR=;ipiv=;m=1;for j=1:n ipiv(j)=0;endfor i=1:n big=0; for j=1:n if(ipiv(j)= 1) for k=1:n if abs(a(j,k)big %寻找最大的主元 big=abs(a(j,k); irow=j; icol=k; end end end end ipiv(icol)=ipiv(icol)+1; if(irow=icol)%需要调换 for l=1:n temp=a(irow,l); a(irow,l)=a(icol,l); a(icol,l)=temp; end for l=1:m temp=b(irow,l); b(irow,l)=b(icol,l); b(icol,l)=temp; end end indexR(i)=irow; indexC(i)=icol; if(a(icol,icol)=0) disp(error); end pivinv=1/a(icol,icol); for l=1:n a(icol,l)=a(icol,l)*pivinv; end for l=1:m b(icol,l)=b(icol,l)*pivinv; end for ll=1:n if(ll=icol) dum=a(ll,icol); a(ll,icol)=0.0; for l=1:n a(ll,l)=a(ll,l)-a(icol,l)*dum; end for l=1:m b(ll,l)=b(ll,l)-b(icol,l)*dum; end end endendfor l=n:-1:1 %已经进行过交换,现在交换回来 if(indexR(l)=indexC(l) for k=1:n temp=a(k,indexR(l); a(k,indexR(l)=a(k,indexC(l); a(k,indexC(l)=a(k,indexR(l); end endendans=b;下面解这个简单的方程组 a=1 0 0 0;0 2 0 0 ;0 0 3 0 ;0 0 0 4a = 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4 b=10;40;60;80b = 10 40 60 80 gauss(a,4,b)ans = 10 20 20 20昨天才回答过这个问题.你可以再搜搜的Gauss消去法的分析。其包括两个过程:消去过程:把方程组系数矩阵A化为同解的上三角矩阵;回代过程:按相反的顺序,从xn至x1逐个求解上三角方程组。%高斯消去法的MATLAB程序function x=gauss(a,b); %编写高斯消去法函数%a表示方程组的系数矩阵,b表示方程组的值%X表示最终的输出结果,即方程组的解n=length(b); %计算方程组的维数%下面的程序在不断的消去,直到变成a变成上三角矩阵未知 for k=1:n-1 for i=k+1:n a(i,k)=a(i,k)/a(k,k); for j=k+1:n a(i,j)=a(i,j)-a(i,k)*a(k,j); end b(i)=b(i)-a(i,k)*b(k); end end %表示高斯消去法的回带过程x=zeros(n,1);x(n)=b(n)/a(n,n); for k=n-1:-1:1 s=b(k); for j=k+1:n s=s-a(k,j)*x(j); end x(k)=s/a(k,k);end实例验证: %调用编好的消去法函数 A=1,2,3;2,2,3;-1,-3,10;B=0,3,2;gauss(A,B)ans = 3.0000 -1.5517 0.0345 A=1,2,3;2,2,3;-1,-3,10;B=0,3,2;x=gauss(A,B)x = 3.0000 -1.5517 0.0345 A*x %反代求解进行比较ans = 0.0000 3.00002.0000matlab程序报错意思释疑(转自他处) 1.Subscript indices must either be real positive integers or logicals中文解释:下标索引必须是正整数类型或者逻辑类型出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab 的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。解决办法:自己调试一下程序,把下标为 0 或者负数的地方修正。2.Undefined function or variable a中文解释:函数或变量 a 没有定义3.Input argument x is undefined中文解释:输入变量 x 没有定义4.Matrix dimensions must agreeInner matrix dimensions must agree中文解释:矩阵的维数必须一致出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab 通过“.”来区分矩阵运算和元素运算5.Function definitions are not permitted at the prompt or in scripts中文解释:不能在命令窗口或者脚本文件中定义函数出错原因:一旦在命令窗口写 function c = myPlus(a,b),此错误就会出现,因为函数只能定义在 m 文件中6. 1) X must have one or two columns 2.)Vectors must be the same lengths中文解释:1. X 必须是 1 或者 2 列2. 向量长度必须一致7.One or more output arguments not assigned during call to .中文解释:在调用.函数过程中,一个或多个输出变量没有被赋值8.? Error using = mpowerMatrix must be square中文解释:错误使用mpwoer函数,要求矩阵必须是方阵9.Explicit integral could not be found.中文解释:显式解没有找到10.Index exceeds matrix dimensions.Attempted to access b(3,2); index out of bounds because size(b)=2,2.中文解释:索引超出矩阵的范围附本人遇到的问题:Attempted to access x(3); index out of bounds because numel(x)=2.表示x矩阵元素不够,导致x(3)无法索引。11.In an assignment A(I) = B, the num

温馨提示

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

评论

0/150

提交评论