资源描述:
《数值分析matlab程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、%高斯赛德尔迭代解线性方程组a=input('请输入系数矩阵a:')%输入系数矩阵adisp(a)[m,n]=size(a)ifm~=n%若a不是方阵则显示错误disp('false')endde=det(a);ifde==0%判断矩阵a是否为奇异矩阵disp('矩阵奇异')endb=input('请输入b矩阵:')%输入矩阵bdisp(b)x=input('请输入迭代初始值:')disp(x)k=x;jindu=10e-7%迭代精度p=jindu+1;whilep>=jindu%迭代次数控制条件s
2、=zeros(m,1);te=zeros(m,1);fori=1:m%迭代计算forj=1:i-1s(i)=s(i)+a(i,j)*k(j);endforj=i+1:nte(i)=te(i)+a(i,j)*x(j);x=k;endk(i)=(b(i)-s(i)-te(i))/a(i,i)endifnorm(k(i)-x(i),inf)>jindu%迭代终止条件的控制p=abs(k(i)-x(i));elsebreak拉格朗日算法#includeintmain(){floatx
3、;//插值floatp[10][2];//已知(x0,y0),(x1,y1)...intn;//输入已知插值组数floaty,t;intk;cout<<"输入插值组数:"<>n;cout<<"输入"<>p[i][0]>>p[i][1];}cout<<"输入插值:"<>x;y=0;k=0;for(k=0;k4、(i!=k){t=t*(x-p[i][0])/(p[k][0]-p[i][0]);//keystep}}y=y+p[k][1]*t;}cout<<"插值结果:"<5、n)fprintf('输入等号右边第%d个系数',i);y(i,1)=input('');endfor(i=1:n)fprintf('输入第%d个变量的初值',i);x(i,1)=input('');endfprintf('输入精确度');p=input('');for(i=1:n)for(j=1:n)ifi~=jb(i,j)=-a(i,j)/a(i,i);elseb(i,j)=0;endg(i,1)=y(i,1)/a(i,i);endg(i,1)=y(i,1)/a(i,i)
6、;endwhilee>p
7、e<-px1=b*x+g;e1=x1(1,1)-x(1,1);e2=x1(2,1)-x(2,1);e3=x1(3,1)-x(3,1);e4=min(e1,e2);e5=min(e1,e3);e=min(e4,e5);x=x1;endfor(i=1:n)fprintf('x%d=%f',i,x(i,1));end雅克比迭代二function[x,n]=jacobi(A,b,x0,eps,M)%雅可比迭代求解线性方程组%x解n达到所需精度实际用的步数%对输入单数进行默认设置
8、x0初始值eps精度M限制步数ifnargin==3eps=1.0e-6;M=200;elseifnargin==4M=200;elseifnargin<3error;return;endD=diag(diag(A));B=inv(D)*(D-A);f=inv(D)*b;x=B*x0+f;%迭代公式n=1;whilenorm(x-x0)>=epsx0=x;x=B*x0+f;n=n+1;%如果不收敛从此退出if(n>=M)disp('迭代次数过多可能不收敛!!');return;endend实验四:多
9、项式最小二乘法程序1:要求给出插值次数的多项式最小二乘法symsxf;xx=input('请输入插值节点as[x1,x2...]');ff=input('请输入插值节点处对应的函数值as[f1,f2...]');m=input('请输入要求的插值次数m=');n=length(xx);fori=1:(m+1)symsfaix;fai=x^(i-1);forj=1:nx=xx(j);H(i,j)=eval(fai);endendA=ff*(H)'*inv(H*(