计算方法大作业

上传人:鲁** 文档编号:499177011 上传时间:2023-05-03 格式:DOC 页数:21 大小:347KB
返回 下载 相关 举报
计算方法大作业_第1页
第1页 / 共21页
计算方法大作业_第2页
第2页 / 共21页
计算方法大作业_第3页
第3页 / 共21页
计算方法大作业_第4页
第4页 / 共21页
计算方法大作业_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《计算方法大作业》由会员分享,可在线阅读,更多相关《计算方法大作业(21页珍藏版)》请在金锄头文库上搜索。

1、实验一 牛顿下山法一、 实验目的:1、 掌握牛顿下山法求解方程根的推导原理。2、 理解牛顿下山法的具体算法与相应程序的编写。二、 实验内容:采用牛顿下山法求方程2x3-5x-17=0在2附近的一个根。三、 实验实现:1、 算法:下山因子从开始,逐次将减半进行试算,直到能使下降条件成立为止。再将得到的循环求得方程根近似值。2、 程序代码如下:function p,k=NewtonDownHill(f,df,p0)N=2000;Tol=10(-5);e=10(-8);for k=1:N lamda=1; p1=p0-lamda*f(p0)/df(p0); while (abs(f(p1) = ab

2、s(f(p0) & lamdae) lamda=lamda/2; p1=p0-lamda*f(p0)/df(p0); end if abs(p1-p0)Tol break end p0=p1;endans=p13、 运行结果:四、 实验体会:牛顿下山法可以较快求的方程结果,对于该题,只需要5步。运用计算机的数值迭代法可以很快求得满足精度要求的结果。实验二 矩阵的列主元三角分解一、 实验目的:学会矩阵的三角分解,并且能够用MATLAB编写相关程序,实现矩阵的三角分解,解方程组。二、 实验内容:用列主元消去法求解方程组(实现PA=LU) 要求输出: (1)计算解X; (2)L,U; (3)正整型数

3、组IP(i),(i=1,n) (记录主行信息)。三、 实验实现:1、算法: 列主元三角分解和普通Dooliitle分解不同,第k步分解时为了避免用绝对值很小的数作除数,引进量 若,则将矩阵的第t行与第k行元素互换,再进行正常的Doolittle分解。2、程序代码如下:clear all;clc;A=1 1 1 1 1 1 1;2 1 1 1 1 1 1;3 2 1 1 1 1 1;4 3 2 1 1 1 1;5 4 3 2 1 1 1;6 5 4 3 2 1 1;7 6 5 4 3 2 1;b=7;8;10;13;17;22;28;n=length(A);IP=eye(n);U=zeros(n

4、);L=eye(n);m,p=max(A(:,1);C1=b(1);b(1)=b(p);b(p)=C1;C2(1:n)=IP(1,:);IP(1,:)=IP(p,:);IP(p,:)=C2(1:n);C2(1:n)=A(1,:);A(1,:)=A(p,:);A(p,:)=C2(1:n);U(1,:)=A(1,:);for k=2:n L(k:n,k-1)=A(k:n,k-1)/U(k-1,k-1); j=1; for i=k:n S(j)=A(i,k)-L(i,1:k-1)*U(1:k-1,k); j=j+1; end m,p=max(abs(S(:) ; C2(1:n)=A(k,1:n);A

5、(k,1:n)=A(k+p-1,1:n);A(k+p-1,1:7)=C2(1:n); C2(1:n)=IP(k,1:n);IP(k,1:n)=IP(k+p-1,1:n);IP(k+p-1,1:n)=C2(1:n); U(k,k:n)=A(k,k:n)-L(k,1:k-1)*U(1:k-1,k:n); if kn A(k+1:n,k)=A(k+1:n,k)-L(k+1:n,1:k-1)*U(1:k-1,k); end enddisp(L=);disp(L);disp(U=);disp(U);disp(IP=);disp(IP);y=Lb;x=Uy;disp(y=);disp(y);disp(x=

6、);disp(x);4、 运行结果:四、 实验体会:列主元三角分解原理很简单,用MATLAB实现起来却不容易。对MATLAB还需要深入学习。实验三 SOR迭代法一、 实验内容:采用SOR方法求解方程采用0向量为初始向量,迭代以结束,但迭代次数不操作1000次,松弛因子使用 其中,给出使用的各松弛因子及对应迭代次数。二、 实验实现:1、程序代码如下:A= 10 -1 0; -1 10 -2; 0 -2 10;b=9;7;6;x0=0;0;0;e=10(-6);n=1000;x=x0;j=18;w=0.1*j; for k=1:n for i=1:length(b) x(i)=w*(b(i)-A(

7、i,:)*x)/A(i,i)+x(i); if norm(x-x0)e disp(w);disp(x);disp(k);disp(-) return end x0=x; end end 2、运行结果如下:上图显示为松弛因子分别为0.5、1、1.5和1.8时的结果。实验四 多项式插值一、 实验内容:下列数据点的插值x01491625364964y012345678可以得到平方根函数的近似,在区间0,64上作图. (注:画图时以步长0.1计算出各点插值,再画出641个点的图,若能给出具体解析式,直接画出连续图)(1)用这九个点作8次多项式插值L8(x).,作图,从得到的结果看在0,64上,哪个插值

8、区间更精确?(2)使用三次插值(不是三弯矩,每个点采用距离最近的四个结点进行三次插值,如插值点为10,则取1,4,9,16四点做三次插值),作图,从得到的结果看在0,64上,哪个插值区间更精确?(3)比较(1)(2)的结果。二、 实验实现:1、程序代码如下:x=0 1 4 9 16 25 36 49 64;y=0 1 2 3 4 5 6 7 8; x1=0:0.1:64; y1=zeros(641,1);y2=zeros(641,1); for j=1:1:641 for k=1:9 t=1; for i=1:9 if i=k t=t*(x1(j)-x(i)/(x(k)-x(i); end e

9、nd y1(j)=y1(j)+t*y(k); end end x2=0:0.1:64; for j=1:41 for k=1:4 t=1 for i=1:4 if i=k t=t*(x2(j)-x(i)/(x(k)-x(i); end end y2(j)=y2(j)+t*y(k); end end for j=42:1:91 for k=2:5 t=1 for i=2:5 if i=k t=t*(x2(j)-x(i)/(x(k)-x(i); end end y2(j)=y2(j)+t*y(k); end end for j=92:1:161 for k=3:6 t=1 for i=3:6 if

10、 i=k t=t*(x2(j)-x(i)/(x(k)-x(i); end end y2(j)=y2(j)+t*y(k); end end for j=162:1:251 for k=4:7 t=1 for i=4:7 if i=k t=t*(x2(j)-x(i)/(x(k)-x(i); end end y2(j)=y2(j)+t*y(k); end end for j=252:1:361 for k=5:8 t=1 for i=5:8 if i=k t=t*(x2(j)-x(i)/(x(k)-x(i); end end y2(j)=y2(j)+t*y(k); end end for j=362

11、:1:641 for k=6:9 t=1 for i=6:9 if i=k t=t*(x2(j)-x(i)/(x(k)-x(i); end end y2(j)=y2(j)+t*y(k); end end subplot(2,1,1) plot(x,y,ro,x1,y1,b.,x1,sqrt(x1),r) grid on;axis(0 70 0 10);subplot(2,1,2) plot(x,y,ro,x2,y2,k.,x1,sqrt(x1),r) grid on;axis(0 70 0 10); 2、运行结果如下:3、结果分析(1)由九个点做八次插值,由上图可知,仅在区间0 16上较精确,其他区间均与真实值有较大差距,区间25 64上,甚至出现严重波动。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号