数值分析实验报告1

更新时间:2023-11-10 05:22:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数值分析上机实验报告

(注:本实验报告中所有程序均为MATLAB语言程序)

班级: 姓名: 学号:

一章

1、利用数值积分计算In=e目的:定积分数值求解 原理:梯形公式法 程序:

clear

format long; k=input('k='); m=input('m='); for n=1:k h=1/m; x=0:h:1;

f=x.^n.*exp(x.^2); for i=1:m

s(i)=(f(i)+f(i+1))*h/2; end

s=sum(s);

I(n)=exp(-1)*s; end I

?1nxx?edx(n=0,1,2,……).

2运行结果:

k=9

m=1000 I =

Columns 1 through 6

0.3160604988 0.2309605799 0.1839401373 0.1535601302 0.1321211422 0.1161015912

Columns 7 through 9

0.1036390735 0.0936475974 0.0854476226

2、利用秦九韶算法计算当a0=5,an=2an?1+3;n=100,x=0.5;n=150,x=13多项式pn(x)=anxn+…an?1xn?1…a1x+a0的值。

目的:通过调整程序以简化计算步骤,减少运算次数 原理:秦久韶算法 程序:

n=input('n='); x=input('x='); a(1)=5; for k=1:n;

a(k+1)=2.*a(k)+3; end

s(n+1)=a(n+1); for i=n:-1:1

s(i)=x.*s(i+1)+a(i); end

Pnx=s(1)

运行结果:

n=100 x=0.5

Pnx =

802.0000000

n=150 x=13

Pnx =

1.4659714820e+213

3、设Y0=28,按递推公式Yn= Yn?1-1/100783计算到Y100,Y500。若取783?27.982(五位有效数字),试问计算Y100、Y500将有多大的误差。 目的:使用递推公式计算求数列第n项值 原理:用递推公式迭代 程序:

clear

k=input('k=') Y0=28;

Y(1)=Y0-sqrt(783)/100; for n=2:k

Y(n)=Y(n-1)-sqrt(783)/100; end

y(1)=Y0-27.982/100; for n=2:k

y(n)=y(n-1)-27.982/100; end

y100=y(100) y500=y(500)

e1=y(100)-Y(100) e2=y(500)-Y(500)

运行结果:

k=500 k =

500

y100 =

0.01800000000

y500 =

-1.1191000000e+002 e1 =

1.3715926637e-004 e2 =

6.8579633158e-004

二章

目的:掌握插值原理和不同插值方法

3、给出f(x)=lnx的数值表,用线性插值级二次插值计算ln0.54的近似值。 x 0.4 0.5 Lnx -0.916291 -0.693147 原理:matlab线性插值函数 线性插值程序:

0.6 -0.510826 0.7 -0.357765 0.8 -0.223144 x1=input('x1='); x=[0.4:0.1:0.8];

y=[-0.916291 -0.693147 -0.510826 -0.357765 -0.223144]; y1=interp1(x,y,x1,'linear')

运行结果:

x1=0.54

y1 =

-0.620218600

原理:二次插值 二次插值程序:

format long;

x0=[0.4 0.5 0.6 0.7 0.8];

y0=[-0.916291 -0.693147 -0.510826 -0.356675 -0.223144]; x=0.54;

n=length(x0); s=0;

for j=0:(n-1) t=1;

for i=0:(n-1) if i~=j

t=t*(x-x0(i+1))/(x0(j+1)-x0(i+1)); end end

s=s+t*y0(j+1); end s

运行结果:

s =

-0.6161427152

4、给出cosx,的函数表,步长h=研究用线性插值求cosx近似值时的总误差限。 原理:线性插值 程序:

clear i=1;

while i<5402

x=0:pi/180/60:pi/2; a=cos(x); x1=x; x(i)=[]; a(i)=[];

b(i)=interp1(x,a,x1(i),’linear’); i=i+1; end b;

x=0:pi/180/60:pi/2; a=cos(x); a(1)=[]; a(5400)=[]; b(1)=[]; b(5400)=[]; c=b-a;

e1=max(abs(c))

=若函数表具有五位有效数字,

运行结果:

e1 =

4.2307972903e-008

21、求f(x)=1/(1?x)在-5?原理:线性插值 程序:

format long clear x=-5:5;

f=1./(1+x.^2); for i=1:10

Ihm(i)=(f(i)+f(i+1))/2; xm(i)=(x(i)+x(i+1))/2; fm(i)=1./(1+xm(i).^2); e(i)=Ihm(i)-fm(i); end Ihm fm e

2x?5上取n=10,按等距节点求分段线性差值函数Ih(x),并计

算各节点间终点处的Ih(x)与f(x)的值,并估计误差。

运行结果:

Ihm =

Columns 1 through 6

0.04864253394 0.07941176471 0.1500000000 0.3500000000 0.7500000000 0.7500000000

本文来源:https://www.bwwdw.com/article/0yzv.html

Top