1、for i=(m-1):-1:1x(i)=(A(i,n)-A(i,i+1:m)*x(i+1:m)/A(i,i);x2.运行结果:高斯选列主元消元法1. 程序: numb=int2str(i);次选列主元后的增广矩阵temp=max(abs(A(i:m,i); a,b=find(abs(A(i:m,i)=temp);tempo=A(a(1)+i-1,:);A(a(1)+i-1,:)=A(i,:A(i,:)=tempo) for j=(i+1):m A(j,: end A disp() x(m)=A(m,n)/A(m,m);1 x(i)=(A(i,n)-A(i,i+1: x追赶法1. 程序:fun
2、ction x,L,U=zhuiganfa(a,b,c,f) a=input(输入矩阵-1对角元素a=b=input(输入矩阵对角元素b=c=input(输入矩阵+1对角元素c=f=input(输入增广矩阵最后一列元素f=n=length(b);% 对A进行分解 u(1)=b(1);for i=2:n if(u(i-1)=0) l(i-1)=a(i-1)/u(i-1); u(i)=b(i)-l(i-1)*c(i-1); else break;end L=eye(n)+diag(l,-1);U=diag(u)+diag(c,1);x=zeros(n,1);y=x;% 求解Ly=b y(1)=f(
3、1); y(i)=f(i)-l(i-1)*y(i-1);% 求解Ux=y if(u(n)=0) x(n)=y(n)/u(n);for i=n-1: x(i)=(y(i)-c(i)*x(i+1)/u(i);高斯-塞德尔迭代格式1.程序:function x=Gauss_Seidel(a,b)输入系数矩阵a=输入增广矩阵最后一列b=e=0.5e-7;N=50;t=zeros(n,1);for k=1:N sum=0; E=0; t(1:n)=x(1:n); for i=1: x(i)=(b(i)-a(i,1:(i-1)*x(1:(i-1)-a(i,(i+1):n)*t(i+1):n)/a(i,i)
4、; end if norm(x-t)e k 2. 运行结果:雅戈比迭代格式function x=Jocabi(a,b)N=100;y=zeros(n,1);n y(i)=(b(i)-a(i,1:n)*x(1:n)+a(i,i)*x(i)/a(i,i); sum=sum+(y(i)-x(i)2; if sqrt(sum) else x(i)=y(i);if k=N warning(未能找到近似解逐次超松弛法(SOR)function n,x=sor22(A,b,X,nm,w,ww)%用超松弛迭代法求解方程组Ax=b%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,n
5、m为最大迭代次数,w为误差精度,ww为松弛因子%输出:x为求得的方程组的解构成的列向量,n为迭代次数输入系数矩阵A=输入方程组右端的列向量b=X=input(输入迭代初值构成的列向量X=nm=input(输入最大迭代次数nm=w=input(输入误差精度w=ww=input(输入松弛因子ww=n=1;m=length(A);D=diag(diag(A); %令A=D-L-U,计算矩阵DL=tril(-A)+D; %令A=D-L-U,计算矩阵LU=triu(-A)+D; %令A=D-L-U,计算矩阵UM=inv(D-ww*L)*(1-ww)*D+ww*U); %计算迭代矩阵g=ww*inv(D-
6、ww*L)*b; %计算迭代格式中的常数项%下面是迭代过程while n=nm x=M*X+g; %用迭代格式进行迭代 if norm(x-X,inf)eps x=(a+b)/2; %检查是否大于值 if (x3)-3*x-1)M b=x a=x k=k+1Newton 迭代法(切线法)function x=nanewton(fname,dfname,x0,e,N)%newton迭代法解方程组%fname和dfname分别表示F(x)及其导函数的M函数句柄或内嵌函数,x0为迭代初值,e为精度要求x=x0;x0=x+2*e;if nargine&k x=x1-(x1-x0)/(feval(fna
7、me,x1)-feval(fname,x0)*feval(fname,x1); if feval(fname,x)*feval(fname,x0)0, x1=x; numb=int2str(k); disp(次计算后x= fprintf(%fnn,x);Newton插值%保存文件名为New_Int.m%Newton基本插值公式%x为向量,全部的插值节点%y为向量,差值节点处的函数值%xi为标量,是自变量%yi为xi出的函数估计值function yi=newton_chazhi(x,y,xi)n=length(x);m=length(y);if n=merror(The lengths of
8、X ang Y must be equal!return;%计算均差表YY=zeros(n);Y(:,1)=y;n-1n-kif abs(x(i+k)-x(i)the DATA is error!Y(i,k+1)=(Y(i+1,k)-Y(i,k)/(x(i+k)-x(i);%计算牛顿插值公式yi=0;z=1;i-1z=z*(xi-x(k);yi=yi+Y(1,i)*z;Lagrange插值function y0 = Language(x,y,x0)syms t l;if length(x)=length(y) n = length(x);elsex和y的维数不相等! %检错h=sym(0); l=sym(y(i); for j=1: l=l*(t-x(j)/(x(i)-x(j); end; for j=i+1: h=h+l;simplify(h);if nargin = 3 y0 = subs (h,t,x0); %计算插值点的函数值
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1