上机作业.docx

上传人:b****7 文档编号:9067296 上传时间:2023-02-03 格式:DOCX 页数:14 大小:375.76KB
下载 相关 举报
上机作业.docx_第1页
第1页 / 共14页
上机作业.docx_第2页
第2页 / 共14页
上机作业.docx_第3页
第3页 / 共14页
上机作业.docx_第4页
第4页 / 共14页
上机作业.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

上机作业.docx

《上机作业.docx》由会员分享,可在线阅读,更多相关《上机作业.docx(14页珍藏版)》请在冰豆网上搜索。

上机作业.docx

上机作业

计算方法上机作业

1.用二分法求方程x3-x-1=0在[1,2]内的近似根,要求误差不超过10-3.

2.证明方程f(x)=ex+10x-2=0在[0,1]内有唯一实根;用二分法求这一实根,要求误差不超过

*10-2.

二分代码

functionrtn=bisection(fx,xa,xb,n,delta)

%Bisection二分法

%fx函数

%xa左边界

%xb右边界

%n计算次数

%delta误差

x=xa;fa=eval(fx);

x=xb;fb=eval(fx);

disp('[nxaxbxcfc]');

fori=1:

n

xc=(xa+xb)/2;x=xc;fc=eval(fx);

X=[i,xa,xb,xc,fc];

disp(X),

iffc*fa<0

xb=xc;

elsexa=xc;

end

if(xb-xa)

end

方程f

f='x^3-x-1';

计算结果

bisection(f,1,2,20,10^(-3))

[nxaxbxcfc]

1.00001.00002.00001.50000.8750

2.00001.00001.50001.2500-0.2969

3.00001.25001.50001.37500.2246

4.00001.25001.37501.3125-0.0515

5.00001.31251.37501.34380.0826

6.00001.31251.34381.32810.0146

7.00001.31251.32811.3203-0.0187

8.00001.32039.00001.32421.32811.3242-0.0021

1.32811.32620.0062

10.00001.32421.32621.32520.0020

可以看出近似根为1.3252

.2.因为f(x)严格单调,固在[0,1]有唯一实根

二分代码同一

f=e^x+10*x-2

二分7次结果为0.0898

第一章

题目

代码

functiony=lagrange(x0,y0,x)

ii=1:

length(x0);y=zeros(size(x));

fori=ii

ij=find(ii~=i);y1=1;

forj=1:

length(ij),y1=y1.*(x-x0(ij(j)));end

y=y+y1*y0(i)/prod(x0(i)-x0(ij));

end

 

取i=0,1,2

结果为

对第2小问将xy互换

取i=1,2,3

 

F(x)=a3x^3+a2x^2+a1x+a0+c(x+1)x(x-1)(x-3)

先求a3a2a1a0

代码

a3=-0.0833333333333336

a2=0

a1=.0833********

a0=1

在求c

所以c=1.83333333333333/-8=-0.229166666666666

第三章

题目

1.分别用显式和隐式的二阶亚当姆斯方法求解初值问题y’=1-y,y(0)=0,令y(0.2)=0.181,取h=0.2,计算y(1.0).

显式代码

functionA=Adams2PC(f,a,b,N,y0,y1)

h=(b-a)/N;

x=zeros(1,N+1);

y=zeros(1,N+1);

x=a:

h:

b;

y

(1)=y0;

y

(2)=y1;

%½øÐÐÔ¤´¦Àí£¬½«ÏàÓ¦µÄµ¼ÊýÖµ´æÈëdy1ºÍdy2

dy1=feval(f,x

(1),y

(1));

dy2=feval(f,x

(2),y

(2));

fori=2:

N

y(i+1)=y(i)+h*(3*dy2-dy1)/2;

dy1=dy2;

dy2=feval(f,x(i+1),y(i+1));

end

A=[x',y'];

函数F5

functionz=f5(x,y)

%UNTITLED4Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

z=1-y;

end

结果

可以看出结果为0.6265

隐式代码

functionA=Adams2PC(f,a,b,N,y0,y1)

h=(b-a)/N;

x=zeros(1,N+1);

y=zeros(1,N+1);

x=a:

h:

b;

y

(1)=y0;

y

(2)=y1;

%½øÐÐÔ¤´¦Àí£¬½«ÏàÓ¦µÄµ¼ÊýÖµ´æÈëdy1ºÍdy2

dy1=feval(f,x

(1),y

(1));

dy2=feval(f,x

(2),y

(2));

fori=2:

N

y(i+1)=y(i)+h*(3*dy2-dy1)/2;

%ÏÔʽ

P=feval(f,x(i+1),y(i+1));

y(i+1)=y(i)+h*(P+dy2)/2;

%Òþʽ

dy1=dy2;

dy2=feval(f,x(i+1),y(i+1));

end

A=[x',y'];

 

结果为

 

第四章

题目

用牛顿法求下列方程的根,要求计算结果又4位有效数字

1.x³-3x-1=0,x0=2

2.x²-3x-exp(x)+2=0,x0=1

牛顿法代码

functionrtn=newton1(fx,dfx,x0,tol,N)

%newton1Å£¶Ù·¨

%fxº¯Êý.

%dfx΢·Ö

%x0¸ø¶¨µÄ³õʼֵ.

%tol¾«È·¶È

%Nµü´ú´ÎÊý

x=x0;f0=eval(fx);df0=eval(dfx);

n=0;

disp('[nxnxn+1fn+1]');

whilen<=N

x1=x0-f0/df0;

x=x1;f1=eval(fx);

X=[n,x0,x1,f1];

disp(X);

ifabs(x0-x1)

fprintf('Theprocedurewassuccessful.')

return

else

n=n+1;

x0=x1;f0=f1;

end

end

ifn==N+1

fprintf('themethodfailedafterNiterations.'),

end

结果

1.

固第一题为1.8794

2

固结果为0.2575

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

当前位置:首页 > 解决方案 > 学习计划

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

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