- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)