- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
消元法實验报告8
西京学院数学软件实验任务书
课程名称 数学软件实验 班级 *** 学号 *** 姓名 *** 实验课题 线性方程组高斯消去法,高斯列主元消去法,高斯全主元消去法 实验目的 熟悉线性代数方程组高斯消去法,高斯列主元消去法,高斯全主元消去法 实验要求 运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成 实验内容 线性方程组高斯消去法
线性方程组高斯列主元消去法
线性方程组高斯全主元消去法 成绩 教师
实验1
线性方程组高斯消去法
高斯顺序消去法是一种古老的求解线性方程组的方法,对于线性方程组,作如下运算不会改变方程组的解:
1) 交换任意两个方程的顺序。
2) 方程中组任一方程乘上一个非零数。
3) 方程组中任一方程加上另一个方程的倍数。
这是高斯消元的理论依据。
实验内容及数据来源
用列主元消去法计算方程组
实验步骤
步骤一:编写列主元消去法的程序。
打开 Editor 编辑器,输入以下语句:
function maintest2
clc
clear all
%num=input(please input the order n=)
%A=zeros(num,num);
%for i=1:num
% for j=1:num
% A(i,j)=input();
% end
%end
%A
%if det(A)~=0
%for i=1:num
% b(i)=input();
%end
%b=b
A=[1 2 3;1 3 5;1 3 6];%系数矩阵
b=[2 3 4]%常数项
num=length(b)
for k=1:num-1
for i=k+1:num
if A(k,k)~=0
l=A(i,k)/A(k,k);
A(i,:)=A(i,:)-A(k,:).*l;
b(i)=b(i)-b(k)*l;
end
end
end
A
B
%回代求x
x(num)=b(num)/A(num,num);
for i=num-1:-1:1
sum=0;
for j=i+1:num
sum=sum+A(i,j)*x(j);
end
x(i)=(b(i)-sum)/A(i,i);
end
x
end
运算结果
A =
1 2 3
0 1 2
0 0 1
b =
2
1
1
x =
1 -1 1
实验结论
高斯消元能很好的求解线性方程组,和用克莱姆法则求解方程组该算法简单而且计算次数少。但是高斯顺序消元是有缺陷的,它并没有考虑主对角元素相对其他同列元素绝对值很小,有时会导致用绝对值较小的数字做分母而出现较大的数字与较小数字进行相加减运算而被“吞掉”的现象,以至于产出某一未知元较小的误差却引起其他元更大的误差。
实验2
列主元消去法计算线性方程组
高斯顺序消元法最后指出了在逐次消元过程中,如果主对角元素相对其他同列元素绝对值很小,有时会导致用绝对值较小的数字做分母而出现较大的数字与较小数字进行相加减运算而被“吞掉”的现象,以至于产出某一未知元较小的误差却引起其他元更大的误差。
为了使消元过程中见效舍入误差和不至于中断,我们可以不按照自然顺序进行消元。事实上,在第步消元的时候,我们不一定选取作为主元,而从同列中选择绝对值最大的作为主元素,即使
如此我们就得到了列主元消去法。
实验内容及数据来源
用列主元消去法计算方程组
实验步骤
步骤一:编写列主元消去法的程序。
打开 Editor 编辑器,输入以下语句:
function maintest
clc
clear all
n=input(please input the order n=)
A=zeros(n,n);
for i=1:n
for j=1:n
A(i,j)=input();
end
end
A
if det(A)~=0
for i=1:n
b(i)=input();
end
b=b
zengguang=[A,b]
for k=1:n-1
% %取出各列绝对值最大的放在上面作为主元
[Y,j]=max(abs(zengguang(k:n,k)));
C=zengguang(k,:);
zengguang(k,:)= zengguang(j+k-1,:);
文档评论(0)