实验三 非线性方程的牛顿法和线性方程组的迭代数值求解 信息与计算科学金融 崔振威 201002034031 一、 实验目的: 设计牛顿迭代算法和线性方程组的常用迭代算法 二、 实验内容:p69
3、p129
1 三、 实验要求: 1、 根据题目要求构造迭代格式 2、 对线性方程组的迭代求解要求构造三种迭代格式 3、 试比较牛顿迭代法和不动点迭代法的优劣(p69
3) 4、 试比较线性方程组三种迭代的优劣(收敛和收敛速度) 主程序: a、牛顿迭代法程序: function [x,k]=newton(f,p0,e) %求f(x)=0 在给定 p0 的根
%f 为所求的函数f(x),p0 为迭代初始值,e 为迭代精度
k 为迭代次数 %diff(f)为对函数求导,subs 是赋值函数,用数值替代符号变量替换函数例 xa=p0; xb=xa-subs(f,xa)/subs(diff(f),xa); k=1; while abs(xa-xb)>e, k=k+1; xa=xb; xb=xa-subs(f,xa)/subs(diff(f),xa); end x=xb; b、雅克比迭代法程序 function [x,n]=Jacobi_Solve(A,b,x0,eps,varargin) %求解线性方程组的迭代法 %A 为方程组的细数矩阵 %b 方程组的右端项数字的向量组 %eps 为精度要求,默认值为 1e-5 %varargin 为最大迭代次数,值为 100 %x为方程组的解 %n 为迭代次数 if nargin==3 eps=1
0e-6; M =200; elseif nargin=eps x0=x; x=B*x0+f; n=n+1; if(n>=M) disp('迭代次数太多,可能不收敛
'); return; end end c、高斯_赛德尔迭代程序 fu