列主元高斯消去法LU三角分解法龙贝格Romberg算法最小二乘法的Matlab程序及运行结果.doc
文本预览下载声明
列主元高斯消去法
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));
显示全部