文档详情

列主元高斯消去法LU三角分解法龙贝格Romberg算法最小二乘法的Matlab程序及运行结果.doc

发布:2017-04-15约字共8页下载文档
文本预览下载声明
列主元高斯消去法 M文件 function[x]=gauss(a,b) n=length(a); x=zeros(n,1); a=[a b]; for k=1:n-1 max=k; for i=k+1:n if a(i,k)a(max,k) max=i; end end temp=a(k,k:n+1); a(k,k:n+1)=a(max,k:n+1); a(max,k:n+1)=temp; for i=k+1:n a(i,k)=-a(i,k)/a(k,k); a(i,k+1:n+1)=a(i,k+1:n+1)+a(i,k)*a(k,k+1:n+1); end end x(n,1)=a(n,n+1)/a(n,n); for i=n-1:-1:1 sum=0; for j=i+1:n sum=sum+x(j,1)*a(i,j); end x(i,1)=(a(i,n+1)-sum)/a(i,i); end Matlab运行结果 2.LU三角分解法 M文件 function y=LU(A,B); n=length(A); A=[A B]; for k=1:n-1; for i=k:n; if(abs(A(i,k))==max(abs(A(k:n,k)))) P(k)=i; temp=A(k,:); A(k,:)=A(i,:); A(i,:)=temp; end end for j=k+1:n; A(j,k)=A(j,k)/A(k,k); A(j,k+1:n+1)=A(j,k+1:n+1)-A(j,k)*A(k,k+1:n+1); end end P(n)=n; L(1,1)=1; L(2:n,1)=A(2:n,1); L(1,2:n)=0; U(1,1)=A(1,1); U(2:n,1)=0; U(1,2:n)=A(1,2:n); for i=2:n; L(i,1:i-1)=A(i,1:i-1); L(i,i)=1; L(i,i+1:n)=0; U(i,1:i-1)=0; U(i,i:n)=A(i,i:n); end x(n) = A(n,n+1)/U(n,n); for k = n-1:-1:1 x(k)=A(k,n+1); for p=n:-1:k+1; x(k) = x(k)-U(k,p)*x(p); end x(k)=x(k)/U(k,k); end x L U P End Matlab运行结果 3.龙贝格(Romberg)算法 M文件 function[t]=romberg(f,a,b,e) t=zeros(15,4); t(1,1)=(b-a)/2*(f(a)+f(b)); for k=2:4 sum=0; for i=1:2^(k-2) sum=sum+f(a+(2*i-1)*(b-a)/2^(k-1)); end t(k,1)=0.5*t(k-1,1)+(b-a)/2^(k-1)*sum; for i=2:k t(k,i)=(4^(i-1)*t(k,i-1)-t(k-1,i-1))/(4^(i-1)-1); end end for k=5:15 sum=0; for i=1:2^(k-2) sum=sum+f(a+(2*i-1)*(b-a)/2^(k-1));
显示全部
相似文档