当前位置:文档之家› 数值分析计算方法实验报告

数值分析计算方法实验报告

x=zeros(1,n);
disp('x=');
for k=1:Maxtime
disp(x);
for i=1:n
s=0.0;
for j=1:n
if i~=j
s=s+A(i,j)*x(j);
end
end
x(i)=(A(i,n+1)-s)/A(i,i);
end
if sum((x-floor(x)).^2)<Eps
%Jacobi迭代法求解实验1
% A为方程组的增广矩阵
clc;
A=[2 10 0 -3 10;-3 -4 -12 13 5;1 23 -4 -2;4 14 9 -13 7]
MAXTIME=50;
eps=1e-5;
[n,m]=size(A);
x=zeros(n,1);
y=zeros(n,1);
k=0;
end
end
x=zeros(length(b),1);
x(n)=A(n,c)/A(n,n);
for k=n-1:-1:1
x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k);
end
disp('X=');
disp(x);
format short;
输出结果:
2.Jacobi迭代法:
end
if maxeps<=eps
for i=1:1:n
x(i)=y(i);
end
return;
end
for i=1:1:n
x(i)=y(i);
y(i)=0.0;
end
k=k+1;
if k>MAXTIME
error('超过最大迭代次数,退出');
return;
end
end
输出结果:
由于不收敛,故出现上述情况。
课程
名称
计算方法
实验项目
名称
线性方程组的数值解法
实验项目类型
验证
演示
综合
设计
其他
指导
教师
胡小兵
成绩

1.实验目的:
(1)高斯列主元消去法求解线性方程组的过程
(2)熟悉用迭代法求解线性方程组的过程
(3)设计出相应的算法,编制相应的函数子程序
2.实验内容
分别用高斯列主元消去法,Jacobi迭代法,Gauss--Saidel迭代法,超松弛迭代法求解线性方程组
3.实验原理
写出本次实验所用算法的算法步骤叙述或画出算法程序框图
4.实验环境及实验文件存档名
写出实验环境及实验文件存档名
5.实验结果及分析
输出计算结果,结果分析和小结等。
(1)拉格朗日法
程序:
functionlagrange(x)
formatlong;
x0=[1.1 2.3 3.9 5.1];
y0=[3.887 4.276 4.651 2.117];
format long;%显示15位
x0=[1 4 9];%x的值
y0=[1 2 3];%y的值
x=5;%插值点
n=max(size(x0));
y=y0(1);%迭代初始值
disp(y);
s=1;
dx=y0;
for i=1:n-1%构造差商表
dx0=dx;
for j=1:n-i
dx(j)=(dx0(j+1)-dx0(j))/(x0(i+j)-x0(j));
b=[10,5,-2,7]'
[m,n]=size(A);
if m~=n
error('矩阵A的行数和列数必须相同');
return;
end
if m~=size(b)
error('b的大小必须和A的行数或A的列数相同');
return;
end
if rank(A)~=rank([A,b])
error('A矩阵的秩和增广矩阵的秩不相同,方程不存在唯一解');
end
end
if abs(A(i,i))<1E-10 | k>=Maxtime
error('已达最大迭代次数或矩阵系数近似为0,无法进行迭代');
return;
end
s=s/A(i,i);
x(i)=(1-w)*x(i)+w*s;
end
if norm(y-x,inf)<Eps
break;
end
k=k+1;
n=length(x0);
s=0;
forj=0:(n-1)
t=1;
fori=0:(n-1)
ifi~=j
t=t*(x-x0(i+1))/(x0(j+1)-x0(i+1));
end
end
s=s+t*y0(j+1);
end
s
formatshort;
运行结果:
(2)牛顿差值法:
functionNewton(x)
break;
end;
end;
X=x;
disp('迭代结果:');
X
format short;
输出结果:
因为不收敛,故出现上述情况。
4.超松弛迭代法:
%SOR法求解实验1
%w=1.45
%方程组系数矩阵
clc;
A=[2,10,0,-3;-3,-4,-12,13;1,2,3,-4;4,14,9,-13]
b=[10,5,-2,7]'
3.Gauss--Saidel迭代法
%Gauss_Seidel迭代法求解实验1
% A为方程组的增广矩阵
clc;
format long;
A=[2 10 0 -3 10;-3 -4 -12 13 5;1 23 -4 -2;4 14 9 -13 7]
[n,m]=size(A);
Maxtime=50;
Eps=10E-5;
end
df=dx(1);
s=s*(x-x0(i));
y=y+s*df;%计算
disp(y);
end
运行结果:
实际结果是2.236066797749979.有一定的误差。总体来说还是很准确的
disp('迭代过程X的值情况如下:')
disp('X=');
while 1
disp(x');
for i=1:1:n
s=0.0;
for j=1:1:n
if j~=i
s=s+A(i,j)*x(j);
end
y(i)=(A(i,n+1)-s)/A(i,i);
end
end
for i=1:1:n
maxeps=max(0,abs(x(i)-y(i)));
w=1.45;
Maxtime=100;
Eps=1E-5;
format long;
n=length(A);
k=0;
x=ones(n,1);
y=x;
disp('迭代过程:');
disp('x=');
while 1
y=x;
disp(x');
for i=1:n
s=b(i);
for j=1:n
if j~=i
s=s-A(i,j)*x(j);
end
disp('最后迭代结果:');
X=x'
format short;
输出结果:
由于不收敛,故出现上述情况。
课程
名称
计算方法
实验项目
名称
插值方法
实验项目类型
验证
演示
综合
设计
其他
指导教师胡小兵源自成绩√1.实验目的:
(1)学会拉格朗日插值、牛顿插值等基本方法
(2)设计出相应的算法,编制相应的函数子程序
(3)会用这些函数解决实际问题
3.实验环境及实验文件存档名
写出实验环境及实验文件存档名
4.实验结果及分析
输出计算结果,结果分析和小结等。
解:1.高斯列主元消去法:
%用高斯列主元消去法解实验1
%高斯列主元消元法求解线性方程组Ax=b
%A为输入矩阵系数,b为方程组右端系数
%方程组的解保存在x变量中
format long;
A=[2,10,0,-3;-3,-4,-12,13;1,2,3,-4;4,14,9,-13]
return;
end
c=n+1;
A(:,c)=b;
for k=1:n-1
[r,m]=max(abs(A(k:n,k)));
m=m+k-1;
if(A(m,k)~=0)
if(m~=k)
A([k m],:)=A([m k],:);
end
A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c);
2.实验内容
(1)设计拉格朗日插值算法,编制并调试相应的函数子程序
(2)设计牛顿插值算法,编制并调试相应的函数子程序
(3)给定函数四个点的数据如下:
X
1.1
2.3
3.9
5.1
Y
3.887
4.276
4.651
2.117
试用拉格朗日插值确定函数在x=2.101,4.234处的函数值。
4)已知 用牛顿插值公式求 的近似值。
相关主题