数值分析上机试题对应参考答案Word文档下载推荐.docx

上传人:b****6 文档编号:21836282 上传时间:2023-02-01 格式:DOCX 页数:24 大小:91.41KB
下载 相关 举报
数值分析上机试题对应参考答案Word文档下载推荐.docx_第1页
第1页 / 共24页
数值分析上机试题对应参考答案Word文档下载推荐.docx_第2页
第2页 / 共24页
数值分析上机试题对应参考答案Word文档下载推荐.docx_第3页
第3页 / 共24页
数值分析上机试题对应参考答案Word文档下载推荐.docx_第4页
第4页 / 共24页
数值分析上机试题对应参考答案Word文档下载推荐.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

数值分析上机试题对应参考答案Word文档下载推荐.docx

《数值分析上机试题对应参考答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数值分析上机试题对应参考答案Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。

数值分析上机试题对应参考答案Word文档下载推荐.docx

(4)返回到2,直到k=M,输出A的主对角元素。

10、什么是高斯型求积公式与高斯点?

一般可设求积公式=In(ƒ),为具有n个节点的插值求积公式,且具有2n+1次最高代数精度,则称其求积点x0,x1,…,xn称为高斯点具有,相应的公式称为高斯型求积公式。

11、什么是插值计算的龙格现象?

增加插值节点,提高插值多项式的次数,可以使插值函数在更多的点与所逼近的函数取相同的值,但会使插值函数在两端发生激烈的振荡,这就是插值计算的龙格现象。

12、龙格—库塔方法的基本思想是什么?

基本思想是,在每一步内多预报几个点的斜率值,将其加权平均作为平均斜率,从而构造出更高的计算格式。

具体做法是,用函数f(x,y)在若干点上的函数值的线性组合来构造近似公式,构造时让近似公式在(xi,yi)处的泰勒展开式与解y(x)在xi处的泰勒展开式的前面几项重合,从而使近似公式达到所需要的阶数,这样既避免求偏导数,又提高了计算方法的精度。

二、计算题

1、随机生成4*4的矩阵,做列主元的三角分解,并验证等式PA=LU。

解:

>

A=rand(4)%随机生成的四位矩阵

A=

0.81470.63240.95750.9572

0.90580.09750.96490.4854

0.12700.27850.15760.8003

0.91340.54690.97060.1419

[L,U,P]=lu(A)

L=

1.0000000

0.99171.000000

0.8920-0.32501.00000

0.1390-0.45520.25671.0000

U=

0-0.44480.00240.3447

000.09250.9426

0000.6955

P=

0001

0100

1000

0010

P*A%验证PA=LU

ans=

L*U

2、用Lagrange插值和Newton插值拟合[0,2*pi]上的sin函数,并画图比较。

建立拉格朗日函插值函数

function[yt,L]=LagInterp1(x,y,xt)

%拉格朗日差值

%x,y:

差值条件

%xt:

用拉格朗日插值函数要计算的自变量,可以是多个

%yt:

用拉格朗日插值函数计算出xt对应的函数值数组

%L:

拉格朗日插值多项式表达式

symst;

n=length(x);

ny=length(y);

ifn~=ny

error('

差值节点x与函数值y不一致'

);

end

L=0.0;

fork=1:

n

lk=1;

forj=1:

ifj~=k

lk=lk*(t-x(j))/(x(k)-x(j));

end

end;

L=L+y(k)*lk;

end

simplify(L);

%简化拉格朗日插值多项式表达式

L=collect(L);

%将拉格朗日插值多项式展开

yt=subs(L,'

t'

xt);

%计算插值点处的函数值

 

建立牛顿函数:

function[yt,N]=NewtInterp(x,y,xt)

%已知数据点的牛顿插值

要计算的插值点,可以是多个

用牛顿插值函数算出xt对应的函数值数组

牛顿插值多项式表达式

a=zeros(1,n);

N=y

(1);

w=1;

fork=1:

n-1

yy=zeros(1,n);

%记录差商

forj=k+1:

yy(j)=(y(j)-y(k))/(x(j)-x(k));

a(k)=yy(k+1);

w=w*(t-x(k));

N=N+a(k)*w;

y=yy;

yt=subs(N,'

simplify(N);

N=collect(N);

%将插值多项式展开

N=vpa(N,6);

%系数转化为6位精度

命令:

x=0:

pi/10:

2*pi;

y=sin(x);

z=0:

pi/20:

y1=LagInterp1(x,y,z);

%拉格朗日拟合法

y2=NewtInterp(x,y,z);

%牛顿拟合法

figure;

plot(z,sin(z),'

--r'

z,y1,'

-b'

z,y2,'

-.k'

)%绘制函数图象

holdon

plot(x,y,'

+'

xlabel('

x'

ylabel('

y'

3、对不同初值用Jacobi迭代法解方程组Axb,其中

建立雅可比函数

functiontx=jacobi(A,b,imax,x0,acc)

%利用Jacobi迭代法解线性方程组AX=b,迭代初值为x0,迭代次数为imax,精度为acc

%利用Jacobi迭代法解线性方程组AX=b,

%迭代初值为x0,

%迭代次数为imax,

%精度为acc

del=10^(-10);

%主对角元素不能太小

tx=[x0];

n=length(x0);

fori=1:

dg=A(i,i);

ifabs(dg)<

del

disp('

主对角元素太小'

return

imax

fori=1:

sm=b(i);

forj=1:

ifj~=i

sm=sm-A(i,j)*x0(j);

x(i)=sm/A(i,i);

tx=[tx;

x];

ifnorm(x-x0)<

acc

else

x0=x;

A=[2,-1,0,0,0,0;

-1,2,-1,0,0,0;

0,-1,2,-1,0,0;

0,0,-1,2,-1,0;

0,0,0,-1,2,-1,;

0,0,0,0,-1,2];

b=[1,0,1,0,0,1];

acc=1.0*10^(-6);

imax=20;

(10,20,30都可取)

x0=zeros(1,6);

tx=jacobi(A,b,imax,x0,acc)(此命令一行一行的复制)

tx=

000000

0.500000.5000000.5000

0.50000.50000.50000.25000.25000.5000

0.75000.50000.87500.37500.37500.6250

0.75000.81250.93750.62500.50000.6875

0.90630.84381.21880.71880.65630.7500

0.92191.06251.28130.93750.73440.8281

1.03131.10161.50001.00780.88280.8672

1.05081.26561.55471.19140.93750.9414

1.13281.30271.72851.24611.06640.9688

1.15141.43071.77441.39751.10741.0332

1.21531.46291.91411.44091.21531.0537

1.23141.56471.95191.56471.24731.1077

1.28231.59172.06471.59961.33621.1237

1.29581.67352.09561.70041.36161.1681

1.33681.69572.18701.72861.43431.1808

1.34791.76192.21221.81061.45471.2171

1.38091.78002.28621.83351.51391.2274

1.39001.83362.30671.90011.53041.2569

1.41681.84842.36681.91861.57851.2652

1.42421.89182.38351.97271.59191.2893

4、用最小二乘法求一个多项式,使它与下列数据相拟合

x

-1.0

-0.5

0.0

0.5

1.0

1.5

2.0

y

-4.447

-0.452

0.551

0.048

-0.447

0.549

4.552

(1)求拟合曲线y=Pn(x),(n=1,2,3)

(2)求拟合误差

(3)画出y=Pn(x)的图像

(1)命令

x=[-1.0-0.50.00.51.01.52.0];

y=[-4.447-0.4520.5510.048-0.4470.5494.552];

p1=polyfit(x,y,1)%一次多项式拟合

p1=

2.0001-0.9495

p2=polyfit(x,y,2)%二次多项式拟合

p2=

0.00101.9991-0.9502

p3=polyfit(x,y,3)%三次多项式拟合

p3=

1.9991-2.9977-0.00000.5491

z=-1.0:

0.1:

2.0;

y1=polyval(p1,z);

y2=polyval(p2,z);

y3=polyval(p3,z);

即拟合的多项式为:

y1=28001/14000*x-5317/5600

y2=1152921504607243/1152921504606846976*x^2+27987/14000*x-13303/14000

y3=2249/1125*x^3-8993/3000*x^2-45750853357891/1152921504606846976*x+23063/42000

(2)

(3)>

o'

-r'

z,y3,'

-k'

)%绘制拟合函数图象

5、分别用欧拉公式、梯形公式和改进欧拉方法求解:

取步长h=0.1.要求列表输出解的结果,并比较不同方法的精度。

建立函数欧拉公式

function[x,y]=naeuler(dyfun,xspan,y0,h)

x=xspan

(1):

h:

xspan

(2);

y

(1)=y0;

forn=1:

length(x)-1

y(n+1)=y(n)+h*feval(dyfun,x(n),y(n));

x=x'

;

y=y'

梯形公式的Matlab实现程序

function[x,y]=tixing(dyfun,xspan,y0,h)

y(n+1)=iter(dyfun,x(n+1),y(n),h);

x=x'

functiony=iter(dyfun,x,y,h)

y0=y;

e=1e-4;

K=1e+4;

y=y+h*feval(dyfun,x,y);

y1=y+2*e;

k=1;

whileabs(y-y1)>

e

y1=y;

y=y0+h*feval(dyfun,x,y);

k=k+1;

ifk>

K,error('

迭代发散'

改进欧拉公式的Matlab实现程序:

Function[x,y]=naeuler2(dyfun,xspan,y0,h)

k1=feval(dyfun,x(n),y(n));

y(n+1)=y(n)+h*k1;

k2=feval(dyfun,x(n+1),y(n+1));

y(n+1)=y(n)+h*(k1+k2)/2;

dyfun=inline('

y+2*x/y^2'

[x,y]=naeuler(dyfun,[0,1],1,0.1);

%调用欧拉公式

[x,y]

01.0000

0.10001.1000

0.20001.2265

0.30001.3758

0.40001.5450

0.50001.7331

0.60001.9397

0.70002.1655

0.80002.4119

0.90002.6806

1.00002.9737

[x,y]=tixing(dyfun,[0,1],1,0.1);

%调用梯形公式

0.10001.1286

0.20001.2810

0.30001.4549

0.40001.6492

0.50001.8644

0.60002.1017

0.70002.3631

0.80002.6510

0.90002.9682

1.00003.3182

[x,y]=naeuler2(dyfun,[0,1],1,0.1);

%调用改进欧拉公式

0.10001.1133

0.20001.2520

0.30001.4128

0.40001.5936

0.50001.7939

0.60002.0143

0.70002.2560

0.80002.5207

0.90002.8107

1.00003.1287

1;

y=sqrt(1+2.*x);

%精确解

[x'

y'

]

0.10001.0954

0.20001.1832

0.30001.2649

0.40001.3416

0.50001.4142

0.60001.4832

0.70001.5492

0.80001.6125

0.90001.6733

1.00001.7321

6、分别用复化梯形公式、复化辛普森公式计算

(区间10等分),并与积分精确值作比较。

建立函数复化梯形公式

functionI=T_quad(x,y)

m=length(y);

ifn~=m

wrong'

return;

h=(x(n)-x

(1))/(n-1);

a=[12*ones(1,n-2)1];

I=h/2*sum(a.*y);

建立复化辛普森公式

functionI=S_quad(x,y)

hh'

ifrem(n-1,2)~=0

I=T_quad(x,y);

N=(n-1)/2;

h=(x(n)-x

(1))/N;

N

a(2*k-1)=a(2*k-1)+1;

a(2*k-1)=a(2*k)+4;

a(2*k+1)=a(2*k+1)+1;

I=h/6*sum(a.*y);

命令

y=sqrt((1-exp(-x)))./exp(x);

T=T_quad(x,y)%复化梯形公式求积分

T=

0.3284

S=S_quad(x,y)%复化辛普公式求积分

S=

0.2012

symsx;

%定义符号变量

a=int('

sqrt((1-exp(-x)))/exp(x)'

0,1)%使用int函数求函数积分

a=

(2*(1-1/exp

(1))^(3/2))/3%有理说解

vpa(a)%转化为数值解

0.33504922214016864454877581388462

综合题第一题

v0=100%初速度

L=200%击球处离本垒的水平距离

g=9.8/0.3048%重力加速度,转为英尺/平方秒

symsa

a=30%速度与水平夹角

x=a*pi/180%转为弧度制

vx=v0*cos(x)%水平速度

vy=v0*sin(x)%垂直方向速度

t=L/vx

LH=vy*t-0.5*g*t^2

if(LH+3>

35)

可以飞过围墙'

else

不可以飞过围墙'

symsx

vx=v0*cos(x)

vy=v0*sin(x)

t=L/vx

symsh

h=vy*t-0.5*g*t^2-32

fzero(inline(h),0)

v0=

100

200

g=

32.1522

30

x=

0.5236

vx=

86.6025

vy=

50.0000

t=

2.3094

LH=

29.7308

不可以飞过围墙

100*cos(x)

100*sin(x)

2/cos(x)

h=

200*sin(x)/cos(x)-24500/381/cos(x)^2-32

0.5372

验证性的题目:

2.2.2第1题

(1)>

fun=inline('

x^2-0.8*x+0.15'

[x_star,inedx,it]=bisect(fun,0.1,0.6)

x_star=

0.08000.0300

inedx=

0

it=

当index=0时,表明初始区间不是有根区间。

(3)

3.2.1第1题

A=[12-1;

012;

-364];

B=[-101;

022;

351]

C=B'

D=A+B

E=A*B

F=A^2

G=inv(A)*B

H=A*B

B=

-101

022

351

C=

-103

025

121

D=

020

034

0115

E=

-4-14

6124

153213

F=

4-2-1

-61310

-152431

G=

-1.00000

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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