- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数值分析实验六
数值分析实验六
MATLAB数值分析
实验目的
掌握应用MATLAB基本运算和函数进行数值分析的方法。
能通过编写MATLAB程序进行数值分析。
能调用自己编写的MATLAB函数进行数值分析。
能进行数值问题的可视化分析。
实验内容
(一)求解线性方程组
1、应用矩阵运算求方程组的根。
实验6.1.1:计算
解:要解上述线性方程组,可以使用矩阵的左除“\”,即X=A\B。
A=[2,1,-3;3,-2,2;5,-3,-1];
B=[5;5;16]; %列向量
X=A\B
X =
1
-3
-2
指出:
线性方程组A*X=B有两种解法:
X=A\B
或
X=inv(A)*B
但一般用第一种解法,在MATLAB中,第二种解法所用时间是第一种解法的50倍。
2、编写MATLAB程序求解线性方程组。
用MATLAB程序进行高斯消元法运算可以采取两种方式,一种是编写针对具体方程组的MATLAB脚本m文件或直接在命令窗口中输入命令进行运算,另一种是编写通用的MATLAB函数,通过调用求解具体的方程组。
利用MATLAB进行高斯消元法解方程计算的程序(函数)如下:
function x=nagauss(a,b,flag)
%用途:高斯消元法解方程ax=b
%格式:x=nagauss(a,b,flag) a系数矩阵,b右端向量,flag若为0显示中间过程,否则不显示,默认为0,x解向量.
if nargin3,
flag=0;
end
n=length(b);
a=[a,b];%将增广矩阵赋值给矩阵a.
%消元
for k=1:(n-1)
a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1));
a((k+1):n,k)=zeros(n-k,1);
if flag==0,
a,
end
end
%回代
x=zeros(n,1);
x(n)=a(n,n+1)/a(n,n);
for k=n-1:-1:1
x(k,:)=(a(k,n+1)-a(k,(k+1):n)*x((k+1):n))/a(k,k);
end
指出:
关于程序说明如下几点:
1、参数flag。
flag在函数中起开关作用,当flag=0时,显示消元的具体过程,否则仅显示方程组的解。
例如
a=[1,1,1;-1,3,1;2,-6,1];
b=[6;4;-5];
x=nagauss(a,b,0)
a =
1 1 1 6
0 4 2 10
0 -8 -1 -17
a =
1 1 1 6
0 4 2 10
0 0 3 3
x =
3
2
1
上述调用过程中flag=0,显示了增广矩阵在消元过程中的变形。这种用法可以用于编制习题和习题答案。
又如
x=nagauss(a,b,1)
x =
3
2
1
此时flag=0,仅显示方程组的解。
2、参数nargin
nargin是一个MATLAB特殊变量名,在m函数内,用于表示该函数的输入变量的个数。相关地,nargout表示该函数输出变量的个数。
在本程序中规定,如果nargin3,即输入变量小于3个,则认定flag=0,显示完整的消元过程。
3、算法设计
程序设计的核心与基础是算法设计。
程序的消元过程中,
①a=[a,b] %将增广矩阵赋值给矩阵a,这样便于后面统一符号,对增广矩阵统一地进行消元变换。
②消元的基本计算公式是:
a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1))
其中,a((k+1):n,(k+1):(n+1))表示系数矩阵中从第k+1行到第n行,第k+1列到第n+1列的元素。
a((k+1):n,k)表示系数矩阵中从第k+1行到第n行,第k列的元素。
a(k,k)表示系数矩阵的第k行到第k列的元素。
a(k,(k+1):(n+1)) 表示系数矩阵中从第k行到第k+1行第n+1列的元素。
例如,当k=1时,
a(2:n,2:(n+1))=a(2:n,2:(n+1))-a(2:n,1)/a(1,1)*a(1,2:(n+1))
具体计算一个值,
a(2,2)=a(2,2)-a(2,1)/a(1,1)*a(1,2)
即a(2,2)的新值是a(2,2)的原值减去
文档评论(0)