📄 func8p1.asv
字号:
m=zeros(10)
x=linspace(0,0,10)
x1=linspace(0,10,10)
b=[2,1,1,1,1,1,1,1,1,2]
xx=x'
tol=0.0001
%func8p1.m用不同的方法解方程组
n=10,j=0
for i=1:10
m(i,i)=4
if(i~=1)&(i~=10)
m(i,i-1)=1
m(i,i+1)=1
end
m(1,2)=1;m(10,9)=1
end
%1.(1)直接法,解为 ( 0.4793 0.0829 0.1891 0.1606
%0.1680 0.1677 0.1609 0.1890 0.0829 0.4793 )
y=m\b'
%1.(2)Jacobi,迭代11次,按模精度0.0001
while (abs(norm(xx,inf)-norm(x1,inf))>tol)
x1=x; xx=x'
xx=(-m*x'+4*x1'+b')/4
x=xx'
j=j+1
end
%1.(3)GS,迭代 6次,按模精度0.0001,而在精度为0.001的情况下,Jacobi 8次,GS 5次,GS法均有较大优势
j=0;xx=b';x=linspace(0,0,10);x1=linspace(0,10,10)
while (abs(norm(xx,inf)-norm(x,inf))>tol)
xx=x
for k=1:n
for l=1:n
x(k)=(-m(k,:)*x'+m(k,k)*x(k)+b(k))/m(k,k)
end
end
j=j+1
end
m=zeros(20,20)
x=linspace(0,0,20)
x1=linspace(0,20,20)
b=linspace(0,0,20);b(1)=1
xx=x'
tol=0.0001
n=20,j=0
for i=1:n
m(i,i)=5
if(i~=1)&(i~=20)&(i~=2)&(i~=19)
m(i,i-1)=-2;m(i,i-2)=1
m(i,i+1)=-2;m(i,i+2)=1
end
m(1,2)=-2;m(1,3)=1;m(1,2)=-2;m(1,3)=1;m(2,4)=1;m(2,3)=-2;m(2,1)=-2;m(19,20)=-2;m(19,18)=-2;m(19,17)=1;m(20,19)=-2;m(20,18)=1
end
%2.(1)直接法,解为 ( 0.2421 0.0944 -0.0218 -0.0314 -0.0069 0.0049 0.0036 0.0002 -0.0008 -0.0004 0.0001
%0.0001 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 -0.0000 -0.0000 )
y=m\b'
%1.(2)Jacobi,迭代4445次,解为( -0.4211 0.7196 -1.0333 1.3166 -1.5738 1.7966 -Inf Inf -Inf Inf -Inf Inf -Inf
% Inf -1.7966 1.5738 -1.3166 1.0333 -0.719 6 0.4211)
%显然不正确,这是由于迭代矩阵中带有接近零的除数,使计算机处理时发生错误
while (abs(norm(xx)-norm(x1))>tol)
x1=x; xx=x'
xx=(-m*x'+m(1,1)*x1'+b')/m(1,1)
x=xx'
j=j+1
end
disp(xx)
%1.(3)GS,迭代 6次,按模精度0.0001,与直接法的解相当接近,再次验证了GS法的优越性
j=0;xx=b';x=linspace(0,0,20);x1=linspace(0,10,20)
while (abs(norm(xx,inf)-norm(x,inf))>tol)
xx=x
for k=1:n
for l=1:n
x(k)=(-m(k,:)*x'+m(k,k)*x(k)+b(k))/m(k,k);
end
end
j=j+1
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -