数值分析实验报告.docx

上传人:b****6 文档编号:7491976 上传时间:2023-01-24 格式:DOCX 页数:21 大小:400.09KB
下载 相关 举报
数值分析实验报告.docx_第1页
第1页 / 共21页
数值分析实验报告.docx_第2页
第2页 / 共21页
数值分析实验报告.docx_第3页
第3页 / 共21页
数值分析实验报告.docx_第4页
第4页 / 共21页
数值分析实验报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

数值分析实验报告.docx

《数值分析实验报告.docx》由会员分享,可在线阅读,更多相关《数值分析实验报告.docx(21页珍藏版)》请在冰豆网上搜索。

数值分析实验报告.docx

数值分析实验报告

实验报告

课程名称:

学院:

专业:

班级:

姓名:

学号:

日期:

 

实验作业1

1.实验目标与任务

了解matlab的基本操作

2.实验内容

三.程序实现与结果

(2)

functionjiechenghe=funn(x)

jiechenghe=0;

s=1;

fori=1:

x

s=s*i;

jiechenghe=jiechenghe+s;

end

结果:

>>x=20;funn(x)

ans=

2.5613e+18

(3)

functionhaishu=fu(x,y)

f=x.^4-2*x.^2*y+x.^2-2*x*y+2*y.^2+(9/2)*x-4*y+4

>>fu(1,2)

f=

2.5000

(4)

functionpic_z

x=-2:

0.1:

3;

y=-1:

0.1:

7;

[X,Y]=meshgrid(x,y);

Z=X.^4-2*Y.*X.^2+X.^2-2*X.*Y+2*Y.^2+(9*X)/2-4*Y+4;

[c,h]=contour(X,Y,Z,[0,1,2,3,4,5,10,15,20,30,40,50]);clabel(c,h)

end

四.实验成绩

五.教师评语

实验作业2

1.实验内容

拉格朗日与分段线性插值的matlab编程实现

二实验内容

三.程序实现与结果

1.

(1)

functiony=lagr1(x0,y0,x)

n=length(x0);m=length(x);

fori=1:

m

z=x(i);

s=0.0;

fork=1:

n

p=1.0;

forj=1:

n

ifj~=k

p=p*(z-x0(j))/(x0(k)-x0(j));

end

end

s=p*y0(k)+s;

end

y(i)=s;

end

x=-1:

0.1:

1;

y=1./(1+25.*x.^2);

z=0*x;

x0=-1:

2/(n-1):

1;

y0=1./(1+25.*x0.^2);

y1=lagr1(x0,y0,x);plot(x,z,'r',x,y,'k:

',x,y1,'r')

gtext(['Lagr.',num2str(n)])

holdon

end

title(

'Lagrange'

legend('Largr插值','f(x)图像')

end

(2)

n=input('n=');

x0=linspace(-1,1,n+1);

y0=1./(1+25*x0.^2);

x=[-1:

0.01:

1];

a=length(x0);

b=length(x);

forj=1:

b;

fori=1:

a-1;

if(x(j)>=x0(i))&&(x(j)<=x0(i+1));

y(j)=y0(i)*((x(j)-x0(i+1))/(x0(i)-x0(i+1)))+y0(i+1)*((x(j)-x0(i))/(x0(i+1)-x0(i)));

end

end

end

plot(x,y)

title('分段线性插值')

n=4

n=8

n=20

2.

Chashang.m文件:

functionsum=ChaShang(x,y0,n)

sum=0;

fori=1:

n

t=1;

forj=1:

n

ifj~=i

t=t*(x(i)-x(j));

end

end

sum=sum+y0(i)/t;%f(x(i))/t;

end

sum;

end

Newton.m文件:

functionN=Newton(x0,y0,x,i,n)

ifi<=n

c=ChaShang(x0,y0,i);

p(i)=c+Newton(x0,y0,x,i+1,n)*(x-x0(i));

else

p(i)=0;

end

N=p(i);

end

Tmain.m文件:

W=0:

0.1:

15;

m=length(W);

x0=[035791112131415];

y0=[01.21.72.02.12.01.81.21.01.6];

n=length(x0);

fori=1:

m

P(i)=Newton(x0,y0,W(i),1,n);

end

plot(W,P);

运行结果:

四.实验成绩

五.教师评语

 

实验作业3

1.实验目标与任务

掌握最小二乘拟合,计算平方误差和,并学会作图

2.实验内容

三.程序实现与实验结果

functionf=fun(p,t)

f=p

(1)*exp(-p

(2)*(t-p(3)).^2)

曲线拟合程序:

t=0:

1:

24;

x=[15141414141516182022232528313231292725242220181716];

p2=polyfit(t,x,2);

f2=polyval(p2,t);

c2=(x-f2).^2

p3=polyfit(t,x,3);

f3=polyval(p3,t);

c3=(x-f3).^2

p4=polyfit(t,x,4);

f4=polyval(p4,t);

c4=(x-f4).^2

p5=lsqcurvefit('fun',[111],t,x);

f5=fun(p5,t);

c5=(x-f5).^2

plot(t,x,'-p',t,f2,'.',t,f3,'-.',t,f4,'-',t,f5,'-o')

legend('样本点','二次拟合曲线','三次拟合曲线','四次拟合曲线','曲线x(t)=a*exp(-b*(t-c)^)')

误差分析程序:

t=0:

1:

24;

x=[15141414141516182022232528313231292725242220181716];

p2=polyfit(t,x,2);

f2=polyval(p2,t);

c2=(x-f2).^2;

p3=polyfit(t,x,3);

f3=polyval(p3,t);

c3=(x-f3).^2;

p4=polyfit(t,x,4);

f4=polyval(p4,t);

c4=(x-f4).^2;

p5=lsqcurvefit('fun',[111],t,x);

f5=fun(p5,t);

c5=(x-f5).^2;

plot(t,c2,'-p',t,c3,'.',t,c4,'-.',t,c5,'-o')

legend('二次曲线拟合误差平方','三次曲线拟合误差平方','四次曲线拟合误差平方','曲线x(t)=a*exp(-b*(t-c)^)误差平方')

4.实验成绩

五.教师评语

实验作业4

1.实验目标与任务

学会用复化梯形公式与复化simpson公式求积分的方法

2.实验内容

3.程序实现与结果

functionf=fun(x)

f=x/(4+(x.^2));

functionf=fun(x)

f=x.^(1/2);

functionf=fun(x)

f=(4-sin(x).^2).^(1/2);

Main.m文件:

a=input('a=');

b=input('b=');

n=input('n=');

h=(b-a)/n;

s1=0;s2=0;

fori=1:

n-1

s1=s1+fun(i*h);

end

fori=0:

n-1

s2=s2+fun((i+0.5)*h);

end

T=h/2*(fun(a)+2*s1+fun(b))

S=h/6*(fun(a)+4*s2+2*s1+fun(b))

实验结果:

a=0

b=1

n=8

T=0.1114S=0.1116

a=1

b=9

n=4

T=15.7274S=15.3943

a=0

b=pi/6

n=6

T=1.0356S=1.0358

4.实验成绩

5.教师评语

贝奇儿曲线

一.实验目标与任务

贝奇尔曲线的程序实现

2.实验内容

编写Bezier曲线拟合通用程序

3.程序实现与结果

function[X,Y]=bezier(x,y)

%用法:

%bezier(x,y)

%生成n-1次贝塞尔曲线,其中x和y是n个点的坐标

%h=bezier(x,y)

%生成n-1次贝塞尔曲线并返回曲线句柄

%[X,Y]=bezier(x,y)

%返回n-1次贝塞尔曲线的坐标

%例子:

%bezier([5,6,10,12],[05-5-2])

n=length(x);

t=linspace(0,1);

xx=0;yy=0;

fork=0:

n-1

tmp=nchoosek(n-1,k)*t.^k.*(1-t).^(n-1-k);

xx=xx+tmp*x(k+1);

yy=yy+tmp*y(k+1);

end

ifnargout==2

X=xx;Y=yy;

end

h=plot(xx,yy);

ifnargout==1

X=h;

end

end

bezier([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24],[15,14,14,14,14,15,16,18,20,22,23,25,28,31,32,31,29,27,25,24,22,20,18,17,16])

4.实验成绩

五.教师评语

实验作业5

1.实验目标与任务

掌握一般迭代法与steffensen加速迭代法的步骤与程序

2.实验内容

3.程序实现与实验结果

1.考虑迭代公式

一般迭代法:

iterate.m

function[x_star,index,it]=iterate(phi,x,ep,it_max)

ifnargin<4it_max=100;end

ifnargin<3ep=1e-5;end

index=0;k=1;

whilek<=it_max

x1=x;x=feval(phi,x)

ifabs(x-x1)

index=1;break;

end

k=k+1;

end

x_star=x;it=k;

phi=inline('0.99*x-x^2');

[x_star,index,it]=iterate(phi,0.5)

结果

x_star=0.0053

index=0

it=101

加速迭代法:

steffensen.m

function[x_star,index,it]=steffensen(phi,x,ep,it_max)

ifnargin<4it_max=100;end

ifnargin<3ep=1e-5;end

index=0;k=1;

whilek<=it_max

x1=x;y=feval(phi,x);z=feval(phi,y);

x=x-(y-x)^2/(z-2*y+x);

ifabs(x-x1

index=1;break;

end

k=k+1

end

x_star=x;it=k;

phi=inline('0.99*x-x^2');

[x_star,index,it]=steffensen(phi,0.5)

结果

x_star=0.1623

index=1

it=1

2.定积分的应用:

functionf=f(x)

R=6371.0;

H=3484.0;

h=439.0;

a=(2*R+H+h)/2;

c=(H-h)/2;

f=a*sqrt(1-(c/a)^2*(sin(x))^2);

function[n,t2]=compT(a,b,eps)

%利用复化梯形递推公式求fun在[a,b]的定积分;

%输入积分下限a;输入积分上限b;精度eps;

%输出分半次数n和积分值t2;具体问题1的值s;

h=b-a;%节点步长

t1=(f(a)+f(b))*h/2;%梯形值T0:

h=h/2;

t2=t1/2+h*f(a+h);%经1次分半复合梯形值

err=t2-t1;%误差

n=1;

whileabs(err)>eps

sum=0;

h=h/2;

t1=t2;

n=n+1;

k=1;

whilek<2^n

sum=sum+f(a+k*h);

k=k+2;

end

t2=t1/2+h*sum;

err=t2-t1;end

>>[n,t2]=compT(0,pi/2,0.00001)

n=2

t2=1.297872245148920e+04

四.实验成绩

五.教师评语

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1