计算方法上机实验报告-MATLAB.docx
文本预览下载声明
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
显示全部