文档详情

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

发布:2022-06-08约5.29千字共18页下载文档
文本预览下载声明
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
显示全部
相似文档