- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
matlab高斯法实验题答案
matlab高斯法实验题答案
PAGE / NUMPAGES
matlab高斯法实验题答案
高斯 - 若当全主元消去法解线性方程组
我们知道关于一个方程组而言, 假如做相应的变换使系数矩阵变为单位阵的话那么就能获得它的解了,高斯 - 若当法就是这样的,可是为了减少偏差,使用了全选主元法 , 下边是程序。保留为
在 matlab 中运转
function ans=gauss(a,n,b)
indexC=[]; % 用于纪录主元
indexR=[];
ipiv=[];
m=1;
for j=1:n
ipiv(j)=0;
end
for 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
end
end
for 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
end
end
ans=b;
下边解这个简单的方程组
a=[1 0 0 0;0 2 0 0 ;0 0 3 0 ;0 0 0 4]
a =
1
0
0
0
0
2
0
0
0
0
3
0
0
0
0
4
b=[10;40;60;80]
b = 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 =
A=[1,2,3;2,2,3;-1,-3,10];B=[0,3,2];x=gauss(A,B)
x =
A*x % 反代求解进行比较
ans =
matlab 程序报错意思释疑(转自他处)
1.Subscript indices must either be real positive integers or logicals
中文解说: 下标索引一定是正整数
文档评论(0)