网站大量收购独家精品文档,联系QQ:2885784924

计算方法上机实验报告-MATLAB.docx

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE 2 《计算方法》实验报告 指导教师: 学 院: 班 级: 团队成员: 一、题目 例2.7应用迭代法求方程在附近的数值解,并使其满足 原理: 在方程解的隔离区间上选取合适的迭代初值,过曲线的点引切线 其与轴相交于点:,进一步,过曲线的点 引切线 其与轴相交于点: 如此循环往复,可得一列逼近方程精确解的点,其一般表达式为: 该公式所表述的求解方法称为迭代法或切线法。 程序: function y=f(x)%定义原函数 y=x^3-x-1; end function y1=f1(x0)%求导函数在x0点的值 syms x; t=diff(f(x),x); y1=subs(t,x,x0); end function newton_iteration(x0,tol)%输入初始迭代点x0及精度tol x1=x0-f(x0)/f1(x0);k=1;%调用f函数和f1函数 while abs(x1-x0)=tol x0=x1;x1=x0-f(x0)/f1(x0);k=k+1; end fprintf(满足精度要求的数值为x(%d)=%1.16g\n,k,x1); fprintf(迭代次数为k=%d\n,k); end 结果: 二、题目 例3.7试利用迭代公式求解方程组 要求数值解满足,其中为方程组的精确解。 原理: 将线性方程组的系数矩阵分解为,其中, , 当对角阵可逆时,方程组 可等价地写成 , 据此可得迭代公式为 , 其中,该迭代公式也可以写成如下的分量形式 程序: function jacobi() %输入矩阵A、b、精度tol% A=[5 -1 -1 -1; -1 10 -1 -1; -1 -1 5 -1; -1 -1 -1 10]; b=[-4 12 8 34]; tol=10^-4; % A=input(系数矩阵A=);%输入矩阵A % b=input(矩阵b= );%输入矩阵b % tol=input(精度要求tol=);%输入精度tol X=inv(A)*b; [n,~]=size(A); D=diag(diag(A)); L=tril(A)-D; U=triu(A)-D; X0=zeros(n,1); X1=inv(D)*b-inv(D)*(L+U)*X0; X0=X1; X2=X-X0; k=1; while abs(norm(X2,2))=tol X1=inv(D)*b-inv(D)*(L+U)*X0; X0=X1; X3=X-X0; %收敛性判断% if norm(X3,2)norm(X2,2) break; else X2=X3; k=k+1; end end % 结果输出% if X2~=X3 fprintf(应用jacobi迭代法不收敛\n); else fprintf(\n应用jacobi迭代公式迭代 k=%d次后\n可得满足精度要求的数值解 X(%d)=\n,k,k); for i=1:n fprintf( %1.15f\n,X1(i)); end fprintf(且其满足计算精度norm(abs(X-X(%d)),2)=%1.15g%.1e\n,k,norm(abs(X-X1),2),tol); end 结果: 三、题目 例3.8试利用迭代公式求解方程组 要求数值解满足,其中为方程组的精确解。 原理: 将线性方程组的系数矩阵分解为,其中, , 当对角阵可逆时,方程组 可等价地写成 , 由此可构造迭代格式, 据此可得迭代公式为 , 该公式也可以写成如下的分量形式 程序: function Gauss_Seidel() %输入矩阵A、b、精度tol% A=[5 -1 -1 -1; -1 10 -1 -1; -1 -1 5 -1; -1 -1 -1 10]; b=[-4 12 8 34]; tol=10^-4; % A=input(系数矩阵A=);%输入矩阵A % b=input(矩阵b=);%输入矩阵b % tol=input(精度要求tol=);%输入精度tol X=inv(A)*b; [n,~]=size(A); D=diag(diag(A)); L=tril(A)-D; U=triu(A)-D; X0=zeros(n,1); X1=inv(D+L)*b-inv(D+L)*U*X0; X0=X1

文档评论(0)

181****7662 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档