数值分析上机第四次作业
-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
数值分析上机第四次作业
实验项目:共轭梯度法求解对称正定的线性方程组 实验内容:用共轭梯度法求解下面方程组
?2?100??x1??3????x????13?10??2????2? (1) ??0?14?1??x3??1???????00?15???x4??5?迭代20次或满足x(k)?x(k?1)??10?11时停止计算。
(2) Ax?b,A是1000阶的Hilbert矩阵或如下的三对角矩阵, A[i,i]=4,A[i,i-1]=A[i-1,i]=-1,i=2,3,..,n b[1]=3, b[n]=3, b[i]=2,i=2,3,…,n-1
迭代10000次或满足r(k)?b?Ax(k)?10?7时停止计算。 (3)*考虑模型问题,方程为
?2u?2u?2?(x2?y2)exy,(x,y)?D?(0,1)?(0,1)2?x?y u(0,y)?1,u(1,y)?ey,0?y?1
u(x,0)?1,u(x,1)?ex,0?x?1用正方形网格离散化,若取h?1/N,N?10,得到n?100的线性方程组,并用共轭梯度法(CG法)求解,并对解作图。
0实验要求:迭代初值可以取uij?1(i,j?1,...,N),计算到||rk||2?10?3停
k止.本题有精确解u(x,y)?exy,这里uk表示以uij为分量的向量,u表示在相应
点(i,j)上取值作为分量的向量.
实验一: (1)
编制函数子程序CGmethod。 function [x,k]=CGmethod(A,b)
n=length(A);x=zeros(n,1);r=b-A*x;rho=r'*r; k=0;
while rho>10^(-12) & k<20 k=k+1; if k==1 p=r; else
beta=rho/rho1; p=r+beta*p;
2
end w=A*p;
alpha=rho/(p'*w); x=x+alpha*p; r=r-alpha*w; rho1=rho; rho=r'*r; end
编制主程序shiyan1_1: clear,clc
A=[2,-1,0,0;-1,3,-1,0;0,-1,4,1;0,0,-1,5]; b=[3,-2,1,5]';
[x,k]=CGmethod(A,b)
运行结果为: x =
1.3882 -0.2855 -0.0222 0.9367 k = 20 (2)
编制函数子程序CGmethod_1
function [x,k]=CGmethod_1(A,b)
n=length(A);x(1:n,1)=0;r=b-A*x;r1=r; k=0;
while norm(r1,1)>=10^(-7)&k<10^4 k=k+1; if k==1 p=r; else
beta=(r1'*r1)/(r'*r);p=r1+beta*p; end r=r1; w=A*p;
alpha=(r'*r)/(p'*w); x=x+alpha*p; r1=r-alpha*w; end
编制主程序shiyan1_2: clear,clc n=1000; A=hilb(n);
3
b=sum(A')';
[x,k]=CGmethod_1(A,b)
运行结果为:x的值,均接近1,迭代次数k=32 实验二
实验目的:用复化Simpson方法、自适应复化梯形方法和Romberg方法求数值积分。
实验内容:计算下列定积分
12001?x6?2?xxdxdx ?x?xdx(1) ?? (2) (3) ???050?10x??2实验要求:
(1)分别用复化Simpson公式、自适应复化梯形公式计算要求绝对误差限1为???10?7,输出每种方法所需的节点数和积分近似值,对于自适应方法,
2显示实际计算节点上离散函数值的分布图;
(2)分析比较计算结果。
2、实验目的:高斯数值积分方法用于积分方程求解。
实验内容:线性的积分方程的数值求解,可以被转化为线性代数方程组的求解问题。而线性代数方程组所含未知数的个数,与用来离散积分的数值方法的节点个数相同。在节点数相同的前提下,高斯数值积分方法有较高的代数精度,用它通常会得到较好的结果。对第二类Fredholm积分方程
y(t)??k(t,s)y(s)ds?f(t),a?t?b
ab首先将积分区间[a,b]等分成n份,在每个子区间上离散方程中的积分就得到线性代数方程组。
实验要求:分别使用如下方法,离散积分方程中的积分
1.复化梯形方法;2.复化辛甫森方法;3.复化高斯方法。求解如下的积分方程
21ttt,方程的准确解为, ey(t)?ey(s)ds?e?0e?1并比较各算法的优劣。
实验二
1、复化Simpson方法) 输入积分区间下限0 输入积分区间上限2 输入等分份数20
输入被积函数(以x为自变量)x^6/10-x^2+x S =
1.1619
输入积分区间下限0 输入积分区间上限1
4
输入等分份数20
输入被积函数(以x为自变量)x*sqrt(x) S =
0.4000
输入积分区间下限5 输入积分区间上限200 输入等分份数20
输入被积函数(以x为自变量)1/sqrt(x)
S =
23.8218
2、自动变步长Simpson方法 函数1:
输入积分区间下限0 输入积分区间上限2
输入为课本的第几个函数(第一个这输入1):1 S =1.619(过程省略) i =
19 函数2:
输入积分区间下限0 输入积分区间上限1
输入为课本的第几个函数(第一个这输入1):2 S =0.4(过程省略) i = 17 函数3:
输入积分区间下限5 输入积分区间上限200
输入为课本的第几个函数(第一个这输入1):3 S=23.8121(过程省略) i = 111
编制程序如下: Clear,clc syms x
a=input('输入积分区间下限'); b=input('输入积分区间上限'); n=input('输入等分份数');
ff=input('输入被积函数(以x为自变量)'); h=(b-a)/n;
f=inline(ff,'x');
5