中南大学数值分析计算方法实验报告完整版.docx
- 文档编号:11515142
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:30
- 大小:109.36KB
中南大学数值分析计算方法实验报告完整版.docx
《中南大学数值分析计算方法实验报告完整版.docx》由会员分享,可在线阅读,更多相关《中南大学数值分析计算方法实验报告完整版.docx(30页珍藏版)》请在冰豆网上搜索。
中南大学数值分析计算方法实验报告完整版
计算方法实验报告
姓名:
学号:
专业班级:
指导老师:
***
实验一
学号
班级
姓名
指导教师
易昆南
实验题目
非线性方程与方程组的数值解法
评分
1、实验目的:
2、实验内容:
3、详细设计:
symsx
y1=1+1/x^2;
y2=(1+x^2)^(1/3);
y3=1/sqrt(x-1);
a1=diff(y1);
a2=diff(y2);
a3=diff(y3);
w1=subs(a1,1.5);
w2=subs(a2,1.5);
w3=subs(a3,1.5);
ifabs(w1)<1
disp('y1是收敛的');
else
disp('y1是发散的');
end
ifabs(w2)<1
disp('y2是收敛的');
else
disp('y2是发散的');
end
ifabs(w3)<1
disp('y3是收敛的');
else
disp('y3是发散的');
end
k=input('输入迭代次数')
x1=1.5;
x2=1.5;
x3=1.5;
fori=1:
k
x1(i+1)=1+1/(x1(i))^2
x2(i+1)=(1+x2(i)^2)^(1/3)
x3(i+1)=1/sqrt(x3(i)-1)
end
4、实验结果:
>>diedai1
y1是收敛的
y2是收敛的
y3是发散的
输入迭代次数1
k=
1
x1=
1.50001.4444
x2=
1.50001.4812
x3=
1.50001.4142
>>
5、实验总结:
实验二
学号
班级
姓名
指导教师
易昆南
实验题目
非线性方程与方程组的数值解法
(2)
评分
1、设计目的:
2、实验内容:
3、详细设计:
(1)symsx
y=exp(x)+10*x-2;
f=solve('exp(x)+10*x-2=0');
a=0;
b=1;
k=input('设置检验次数')
fori=1:
k
l(i)=subs(y,0)%l
(1)为负值
k(i)=subs(y,1)%k(i)为正值
m=subs(y,(a+b)/2);
ifm<0
a=(a+b)/2
else
b=(a+b)/2
end
end
(2)clearall
formatlong
k=input('请输入迭代次数');
x
(1)=0
fori=1:
k
x(i+1)=(2-exp(x(i)))/10
end
4、实验结果:
(1)>>erfenfa
设置检验次数3
k=
3
l=
-1
k=
10.718281828459045
b=
0.500000000000000
l=
-1-1
k=
10.71828182845904510.718281828459045
b=
0.250000000000000
l=
-1-1-1
k=
10.71828182845904510.71828182845904510.718281828459045
b=
0.125000000000000
>>
(2)>>diedai2
请输入迭代次数2
x=
0
x=
00.100000000000000
x=
00.1000000000000000.089482908192435
5、实验总结:
实验三
学号
班级
姓名
指导教师
易昆南
实验题目
牛顿下山法
评分
1、实验目的:
2、实验内容:
用牛顿下山法
0.6附近的根。
3、详细设计:
此程序有一个主函数,储存在一个M文件中,实验时调用函数完成。
主函数一(niudunxiashan1)
clearall
x
(1)=0.6;
fori=1:
inf
x(i+1)=x(i)-(x(i)^3-x(i)^2-1)/(3*x(i)^2-2*x(i));
y(i)=x(i)^3-x(i)^2-1;
y(i+1)=x(i+1)^3-x(i+1)^2-1;
ifabs(y(i+1))>abs(y(i))
fork=1:
50
x(i+1)=x(i)-(1/2^(k-1))*(x(i)^3-x(i)^2-1)/(3*x(i)^2-2*x(i));
y(i+1)=x(i+1)^3-x(i+1)^2-1;
ifabs(y(i+1)) break end end end iffloor(y(i+1)*10000)==0 j=i+1; break end end disp(['迭代次数为: ']) disp(j) x 4、实验结果: 输入 >>niudunxiashan1 输出 迭代次数为: 8 x= 0.60000.0042-0.00321.21031.56091.47341.46561.4656 5、实验总结: 实验四 学号 班级 姓名 指导教师 易昆南 实验题目 史蒂芬孙迭代法 评分 1、设计目的: 2、实验内容: 求 在0.6附近的根,迭代公式为 (1) (2) (3) 3、详细设计: 此程序有两个主函数,储存在两个M文件中,实验时分别调用函数完成。 主函数一(steffensen1) clearall x (1)=0.6; fori=1: inf y(i)=1+1/x(i)^2; z(i)=1+1/y(i)^2; x(i+1)=x(i)-(y(i)-x(i))^2/(z(i)-2*y(i)+x(i)); iffloor(x(i+1)*1000)==floor(x(i)*1000) j=i+1; break end end y(j)=0; z(j)=0; A=['k','x','y','z']; M=zeros(j,4); fori=1: j M(i,1)=i-1; M(i,2)=x(i); M(i,3)=y(i); M(i,4)=z(i); end xlswrite('E: \ProgramFiles\MATLAB\bin\迭代加速\steffensen.xls',A,'sheet1','A1: D1'); xlswrite('E: \ProgramFiles\MATLAB\bin\迭代加速\steffensen.xls',M,'sheet1','A2: D7'); 主函数二(diedai) clearall x (1)=0.6; fori=1: inf y(i)=(1+x(i)^2)^(1/3); z(i)=(1+y(i)^2)^(1/3); x(i+1)=x(i)-(y(i)-x(i))^2/(z(i)-2*y(i)+x(i)); iffloor(x(i+1)*1000)==floor(x(i)*1000) j=i+1; break end end y(j)=0; z(j)=0; A=['k','x','y','z']; M=zeros(j,4); fori=1: j M(i,1)=i-1; M(i,2)=x(i); M(i,3)=y(i); M(i,4)=z(i); end xlswrite('E: \ProgramFiles\MATLAB\bin\迭代加速\steffensen.xls',A,'sheet2','A1: D1'); xlswrite('E: \ProgramFiles\MATLAB\bin\迭代加速\steffensen.xls',M,'sheet2','A2: D5'); 4、实验结果: 输入 >>steffensen1 输出 输入 >>steffensen2 输出 5、实验总结: 实验五 学号 班级 姓名 指导教师 易昆南 实验题目 迭代法的计算 评分 1、实验目的: 2、实验内容: 用列主元高斯法解下列线性方程组: 3.01006.03001.9900x11 1.27004.1600-1.2300x2=1 0.9870-4.81009.3400x31 3.00006.03001.9900x11 1.27004.1600-1.2300x2=1 0.9900-4.81009.3400x31 用雅可比迭代法和高斯-塞得尔迭代法解下列线性方程组并检查收敛性: 5x1+2x2+x3=-12 -x1+4x2+2x3=20 +2x1-3x2+10x3=3 3、详细设计: (1)functionx=gauss_lie(A,b) n=length(b); p=1: n;lu=A; y=[]; fork=1: n [c,i]=max(abs(lu(k: n,k))); ik=i+k-1; ifik~=k m=p(k);p(k)=p(ik);p(ik)=m; ck=lu(k,: );lu(k,: )=lu(ik,: );lu(ik,: )=ck; end ifk==n break; end lu(k+1: n,k)=lu(k+1: n,k)/lu(k,k); lu(k+1: n,k+1: n)=lu(k+1: n,k+1: n)-lu(k+1: n,k)*lu(k,k+1: n); end l=diag(ones(n,1))+tril(lu,-1); u=triu(lu); y (1)=b(p (1)); fori=2: n y(i)=b(p(i))-l(i,1: i-1)*y(1: i-1)'; end x(n)=y(n)/u(n,n); fori=n-1: -1: 1 x(i)=(y(i)-u(i,i+1: n)*x(i+1: n)')/u(i,i); end A b detA=det(A) x=x'; end (2) functionx=gauss_seidel(A,b,x0,tol) if(nargin==2) x0=ones(size(b)); tol=1e-6; elseif(nargin==3) tol=1e-6; else sprintf('USAGE: Gauss_Seidel(A,b,x0,tol)') end D=diag(diag(A)); U=triu(A,1); L=tril(A,-1); G=-(D+L)\U; d1=(D+L)\b; x=G*x0+d1; n=1; whilenorm(x-x0)>=tol x0=x; x=G*x0+d1; n=n+1; end n functionx=Jacobi(A,b,x0) n=10000;%最大迭代次数 ee=1e-4;%精度 n1=length(b); x1=zeros(n1,1); p=0; fori=1: n p=p+1; forj=1: n1 s=0; fork=1: n1 ifk~=j s=s+A(j,k)*x0(k); end end x1(j)=(b(j)-s)/A(j,j); end ifnorm(x1-x0) break end x0=x1; end n=p x=x1; 4、实验结果: (1)将代码保存为gauss_lie.m,在Matlab主界面输入下述代码,得到结果: >>A=[3.01,6.03,1.99;1.27,4.16,-1.23;0.987,-4.81,9.34]; >>b=[1,1,1]'; >>gauss_lie(A,b) >>A=[3.00,6.03,1.99;1.27,4.16,-1.23;0.990,-4.81,9.34]; >>b=[1,1,1]'; >>gauss_lie(A,b) (2)将代码保存为Jacobi.m和Gauss_Seidel.m,在Matlab主界面输入下述代码,得到结果: >>A=[5,-1,2;2,4,-3;1,2,10]'; >>b=[-12,20,3]'; >>x0=[0,0,0]'; >>Jacobi(A,b,x0) >>gauss_seidel(A,b) 5、实验总结: 实验六 学号 班级 姓名 指导教师 易昆南 实验题目 列主元三角分解 评分 1、设计目的: 2、实验内容: 编写列主元矩阵分解法的程序,并以实例验证。 A= . 3.详细设计: 此程序有一个主函数,储存在一个M文件中,实验时调用函数完成。 主函数一(liezhuyuanxiaoqu(A) functionoutput=liezhuyuanxiaoqu(A) n=size(A); forr=2: n fori=r: n-1 b=0; t=0; fork=1: r-1 b=A(r,k)*A(k,i)+b; end A(r,i)=A(r,i)-b; s(i)=A(r,i); [a,m]=max(abs(s)); B=A(r,: ); A(r,: )=A(r+m-1,: ); A(r+m-1,: )=B; fork=1: r-1 t=A(i+1,k)*A(k,r)+t; end A(i+1,r)=(A(i+1,r)-t)/A(r,r); end b=0; fork=1: r-1 b=A(r,k)*A(k,n)+b; end A(r,n)=A(r,n)-b; end L=eye(n); fori=1: n-1 L(i+1: n,i)=A(i+1: n,i); end U=zeros(n); fori=1: n U(1: i,i)=A(1: i,i); end A L U end 4、实验结果: 输入 >>A=[1/41/51/6 1/31/41/5 1/212] >>liezhuyuanxiaoqu(A) 输出 A= 0.25000.20000.1667 0.50001.00001.9167 0.33330.1167-0.0792 L= 1.000000 0.50001.00000 0.33330.11671.0000 U= 0.25000.20000.1667 01.00001.9167 00-0.0792 5、实验总结 实验七 学号 班级 姓名 指导教师 易昆南 实验题目 牛顿插值 评分 1、设计目的: 2、实验内容: 编写牛顿插值的计算程序,并以实例验证。 t=1.7 3.详细设计: 此程序有一个主函数,储存在一个M文件中,实验时调用函数完成。 主函数一(niudunchazhi(x,y,t)) functions=niudunchazhi(x,y,t) symsp; n=length(x); s=y (1); dd=0; dxs=1; fori=1: n-1 forj=i+1: n dd(j)=(y(j)-y(i))/(x(j)-x(i)); end temp1(i)=dd(i+1); dxs=dxs*(p-x(i)); s=s+temp1(i)*dxs; y=dd; end simplify(s); ifnargin==2 s=subs(s,'p','x'); s=collect(s); s=vpa(s,4); else m=length(t); fori=1: m temp(i)=subs(s,'p',t(i)); end s=temp; end 4、实验结果: 输入 >>x=1: 7; >>y=[00.67890.79631.03751.29361.37451.7954]; >>niudunchazhi(x,y) >>niudunchazhi(x,y,1.7) 输出 ans= 0.0001021*x^6+0.003798*x^5-0.1044*x^4+0.8751*x^3-3.295*x^2+5.88*x-3.359 ans= 0.5975 5、实验总结 实验八 学号 班级 姓名 指导教师 易昆南 实验题目 书上习题 评分 1、设计目的: 2、实验内容: 分别用梯形公式和辛普森公式计算下列积分 (1) ,n=8; (2) ,n=6. 3、详细设计: 此程序有两个主函数,储存在两个M文件中,实验时调分别用函数完成。 主函数一(twoone) n=8; symsx y=x/(4+x^2); a=0; b=1; fa=subs(y,'x',a); fb=subs(y,'x',b); T=fa+fb; S=fa+fb; h=(b-a)/n; c=a+h/2; fc=subs(y,'x',c); S=S+4*fc; fork=1: (n-1) xk=a+k*h; fk=subs(y,'x',xk); T=T+2*fk; end T=T*h/2; fork=1: (n-1) xk=a+k*h; xkb=xk+h/2; fkb=subs(y,'x',xkb); fk=subs(y,'x',xk); S=S+4*fkb+2*fk; end S=S*h/6; disp('用梯形公式结果为: '); disp(T); disp('用辛普森公式结果为: '); disp(S); 主函数一(twothree) clc clearall n=6; symsx y=sqrt(4-(sin(x))^2); a=0; b=pi/6; fa=subs(y,'x',a); fb=subs(y,'x',b); T=fa+fb; S=fa+fb; h=(b-a)/n; c=a+h/2; fc=subs(y,'x',c); S=S+4*fc; fork=1: (n-1) xk=a+k*h; fk=subs(y,'x',xk); T=T+2*fk; end T=T*h/2; fork=1: (n-1) xk=a+k*h; xkb=xk+h/2; fkb=subs(y,'x',xkb); fk=subs(y,'x',xk); S=S+4*fkb+2*fk; end S=S*h/6; disp('用梯形公式结果为: '); disp(T); disp('用辛普森公式结果为: '); disp(S); 4、实验结果: 输入 >>twoone 输出 用梯形公式结果为: 0.111402354529548 用辛普森公式结果为: 0.111571813252631 输入 >>twothree 输出 用梯形公式结果为: .0356******** 用辛普森公式结果为: .0357******** 5、实验总结 实验九 学号 班级 姓名 指导教师 易昆南 实验题目 梯形公式辛普森公式 评分 1、设计目的: 2、实验内容: 用龙贝格求积方法计算下列积分,使误差不超过 (1) ; (2) . 3、详细设计: 此程序有两个主函数,储存在两个M文件中,实验时分别调用函数完成。 主函数一(eightone) clc clearall T=zeros(10,10); symsx y=2*exp(-x)/sqrt(pi); a=0; b=1; fa=subs(y,'x',a); fb=subs(y,'x',b); T(1,1)=(fa+fb)/2; fork=1: 9 g=0; forn=1: (2^(k-1)) xk=a+(2*n-1)*(b-a)/(2^k); fk=subs(y,'x',xk); g=g+fk; end T(k+1,1)=T(k,1)/2+(b-a)*g/(2^k); end fori=2: 10 forj=2: i m=j-1; l=4^m; T(i,j)=(l*T(i,j-1)-T(i-1,j-1))/(l-1); end ifceil(T(i,j)*100000)==ceil(T(i,j-1)*100000) c=i; d=j; break end end T T(i,j) 4、实验结果: 输入 >>eightone 输出 ans= 0.713271669814180 输入 >>eightthree 输出 ans= 10.162443613495572 5、实验总结 实验十 学号 班级 姓名 指导教师 易昆南 实验题目 龙格贝塔迭代原理 评分 1、设计目的: 2、实验内容: 用辛普森公式的自适应积分计算 ,允许误差 3.详细设计: 此程序有一个主函数,储存在一个M文件中,实验时调用函数完成。 主函数一(nine) clc clearall symsx y=(x^2)*log(x); a=1; b=1.5; c=(a+b)/2; fa=subs(y,'x',a); fb=subs(y,'x',b); fc=subs(y,'x',c); S=(b-a)*(fa+4*fc+fb)/6; d=(a+c)/2; e=(c+b)/2; fd=subs(y,'x',d); fe=subs(y,'x',e); s2=(c-a)*(fa+4*fd+fc)/6; s3=(b-c)*(fc+4*fe+fb)/6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 数值 分析 计算方法 实验 报告 完整版