数学实验报告利用MALTAB计算非线性方程近似解Word格式.docx

上传人:b****5 文档编号:20902852 上传时间:2023-01-26 格式:DOCX 页数:19 大小:142.57KB
下载 相关 举报
数学实验报告利用MALTAB计算非线性方程近似解Word格式.docx_第1页
第1页 / 共19页
数学实验报告利用MALTAB计算非线性方程近似解Word格式.docx_第2页
第2页 / 共19页
数学实验报告利用MALTAB计算非线性方程近似解Word格式.docx_第3页
第3页 / 共19页
数学实验报告利用MALTAB计算非线性方程近似解Word格式.docx_第4页
第4页 / 共19页
数学实验报告利用MALTAB计算非线性方程近似解Word格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

数学实验报告利用MALTAB计算非线性方程近似解Word格式.docx

《数学实验报告利用MALTAB计算非线性方程近似解Word格式.docx》由会员分享,可在线阅读,更多相关《数学实验报告利用MALTAB计算非线性方程近似解Word格式.docx(19页珍藏版)》请在冰豆网上搜索。

数学实验报告利用MALTAB计算非线性方程近似解Word格式.docx

[i,q]=iterate(150000,1000,15,2,0,1,100,10^-6);

公式表意为:

总贷款量=200000-50000=150000;

每月还款100元;

还款期限15年;

还款方式为按月还款;

迭代区间设定为[0,1];

最大迭代次数为100次;

精度要求为10^-6;

最终结果为:

迭代次数:

45;

使用时间0.0035705s;

利率为0.0089457。

(2)公式

由于函数中出现q在分母位置的情况,故不能将迭代区间设为[0,1],为了能够更好地比较各种方法,因此,这里设置一端为1,一端尽量小。

经测试,当设置值比

还小时,matlab自动认为其为0,故取

所得结果如下:

20

使用时间不稳定,最长使用0.0066s,最短使用0.0014s。

利率为0.0089460

(3)使用自己编写的牛顿迭代公式

按照书中给出的牛顿迭代公式,进行迭代。

迭代次数随初值的设定而不断变化,初值的设置要求更加复杂,不能达到

这样小。

这里仅实验了

的情况,事实上,此时的迭代次数已经相当大,用时也不短。

具体数据如下:

33703

使用时间:

1.7434996s

利率为0.0088815

(4)简要小结

从以上三种计算方法可以看出,各种计算方法的结果均相差不多,可见各种方法的正确性都是有保障的。

与此同时不同的方法有着自己不同的特性:

a.由于涉及公式的使用,第二、三种方法都出现了初值设置的问题。

当然这个问题视具体情况而定,不能一概而论;

b.本次实验中发现,前两种办法在给定区域较广的情况下能够较快地收敛到所求的位置,而牛顿法使用的时间反而较多。

为了进一步确认,我将牛顿法的迭代初值置为1,此时共迭代395次,使用时间为0.0251168。

可以发现仍旧较大。

可见自己编写的迭代方法距matlab所用的混合方法相差较远。

2、第二问

(1)月付款

仍旧使用三种方法并进行比较

 

二次迭代

fzero

自编牛顿法

用时

0.088913

0.005884

0.022

迭代次数

47

23

170

结果

0.0082844

0.0082845

0.008286

(2)年付款

0.009920

0.003590

0.018

44

23

53

0.009241

0.009239

0.009245

从实验结果可以看出,各种方法所得的最终数据基本一致。

由题目假设:

年利率=月利率*12

得到第一中按揭方式的年利率约为0.0,比第二种方法大。

故第二家银行开出的条件较优惠。

3、总结

a.二分迭代和牛顿迭代法通常都能通过迭代收敛得到所要的结果;

b.使用Matlab自带的fzero通常能够更快地得到结果,相比之下牛顿迭代法所用时间较长;

㈤程序清单

1、二重迭代

(1)计算剩余本金的函数

functionleft=Return(All,repay,interest)

All=200000-50000;

repay=1000;

left=All;

fori=1:

15*12

end

(2)主迭代函数

function[i,q]=iterate(All,repay,time,YearOrMonth,a,b,n,tol)

interest=(a+b)/2;

i=0;

diff=Inf;

before=Inf;

while(i<

n&

&

diff>

tol)

left=Return(All,repay,time,YearOrMonth,interest);

if(left>

0)

b=interest;

interest=(a+interest)/2;

else

a=interest;

interest=(b+interest)/2;

end

i=i+1;

diff=abs(before-left);

before=left;

q=interest;

2、fzero

(1)函数

functiony=Function(x)

A=500000;

P=45000;

n=20;

y=A*(1+x)^n-P*((1+x)^n-1)/x;

(2)调用方法

tic;

[q,fv,ef,out]=fzero(@Function,[1*10^-15,1])

time=toc;

3、自编牛顿迭代法

(1)函数的导数

functiony=DeltaFunction(x)

y=A*n*(1+x)^(n-1)-P*(1+x)^(n-2)*((n-2)*x-1)/x^2;

(2)迭代主方法

x0=1;

n=500000;

tol=1e-6;

x=x0;

i=1;

diff=inf;

while(abs(diff)>

tol&

i<

n)

Fxk=Function(x);

FDxk=DeltaFunction(x);

x=x-Fxk/FDxk;

diff=Function(x)-Fxk;

二、气缸阀门

由气缸控制的门关闭状态如图所示。

门宽为a,门枢在H处,与H相距b处有一门销,通过活塞与圆柱形气缸相连。

气缸长

,缸内气体压强为

用力F推开门时,气缸绝热压缩,压强增大。

已知绝热方程为

试通过力矩平衡求在一定力作用下开门角度。

㈡方法与公式

1、MATLAB自带fzero()函数

[x,fv,ef,out]=fzero(@valve,0);

2、牛顿迭代法

3、二分迭代法

4、建模

综上,有:

y=F*a/b-pi*r^2*(l0/(l0-x))^Gamma*p0;

㈢结果与分析

1、

取初值为0

得到结果:

c=0.

alpha=0.7016288=

用时0.0036654s

c=0.4515091

alpha=0.9979021=29.487324

用时0.0808827s

c=0.0539551

alpha=0.9535557=29.284102

用时0.0021362s

4、总结

这道题比较简单,计算过程中没有涉及过多的问题。

不过有关建模,有一个问题值得讨论,即阀门收到的大气压强。

事实上,大气压强大小约为

,远大于题目中阀门的内压强,这样算来题目所给参数有误。

所以只好认为题目所给参数已经考虑了大气压。

有关各种方法的比较如下:

a.三种方法所得结果相差无几,可见结果的正确性;

b.时间使用上与第一题的实验结果基本一致——使用Matlab自带fzero和二分迭代两种方法所用时间相差不大,两者都好于自己编写的牛顿迭代法。

㈣程序清单

1、fzero()

functiony=valve(x)

a=0.8;

b=0.25;

r=0.04;

l0=0.5;

p0=10^4;

Gamma=1.4;

F=25;

(2)调用脚本

alpha=atan(x/b);

angel=alpha/pi*180;

(1)函数与fzero方法一致

(2)函数的导数

functiony=Deltavalve(x)

y=-9*pi*r^2*(l0/(l0-x))^Gamma*p0/(l0-x);

(3)迭代主方法

x0=0;

Fxk=valve(x);

FDxk=Deltavalve(x);

diff=valve(x)-Fxk;

n=500;

tol=1e-6;

x0=0;

xx=l0;

x=(x0+xx)/2;

deltax=valve(x);

if(deltax<

xx=x;

x=(x0+x)/2;

x0=x;

x=(xx+x)/2;

diff=abs(before-x);

before=x;

三、Feigenbaum

给定一迭代公式,计算序列,分析其收敛性。

给定不同的参数值,观察是否由混沌现象出现,并找到前几个分叉点,观察分叉点的极限趋势是否符合Feigenbaum常数解释的规律。

1、为判断相应a的收敛性,对不同的a值进行迭代(给定一个b值),并记录迭代结果,做出图像,从而得出结论。

2、为说明b的任意性,借助书中所给的有关混沌的示例,将其进行改写,并重写迭代函数,得到如下迭代过程

forbb=b

(1):

b(3):

b

(2)

kr=kr+1;

y(kr,1)=feval(iter_fun,x0,a,bb);

fori=2:

n

(2)

y(kr,i)=feval(iter_fun,y(kr,i-1),a,bb);

3、迭代函数

4、为判断是否有混沌现象以及确定分叉点,将上述二重迭代过程的对象由b转为a,即给定一个b值,观察a的变化对迭代终值的影响即可。

1、a固定

(1)a=5

有图可以看出,当迭代次数足够大时,值趋于稳定,收敛到一点,这一点的值约为0.3218876。

从图中可以看出,a=5时,对任意b>

0,{

}收敛,且由图中趋势以及函数的形式可以看出,b增大后,{

}将仍旧收敛,而且收敛值逐渐减小,趋近于0。

(2)a=11

由图可以看出,当a=11时,迭代不再收敛到一个点,而是有两个收敛的子序列,分别趋于0.6和0.9。

从图中可以看出,当a=11时,对任意b,{

}均收敛到两个子列中,且两个子列的极限值随着b的增加不断减小,趋于0。

(3)a=15

实验结果表示,我们已经已经无法从图中准确地判断迭代是否收敛。

大体上看并不收敛。

至于具体情况,需要进一步分析。

实验结果表示,当a=15时,对任意b,已经不存在确定收敛子列。

2、观察分叉与混沌

将a设定在一个范围内变动,固定b的值。

从图中可以看出,实验出现了明显的分岔与混沌的现象,通过图像以及数据结果,我们可以大体上判断分岔点的位置。

改变b值继续观察。

可以发现,b的更改对实验结果没有本质的影响,从坐标上看我们发现迭代值发生了变化,但是它们所构成的图像相差无几。

3、计算分岔点

得到

由稳定性有

联立两个式子,进行化简,令t=b*x

最终得到

exp(-x

(1))+1/(x

(2)*(1-x

(1)))=0

exp(x

(1)/(1-x

(1)))-(x

(1)-1)/x

(2)=0

其中x

(1)=t=b*x,x

(2)=a。

使用fsolve方法求解,得到:

x*b=1.3196870

=7.9933554

再由y’=-1,同理得到

x*b=0.

=12.487370

对于更高阶的分岔点,由于计算非常复杂,这里没有实际计算,仅从图中大致读出其值。

=14.30

=14.62

4、观察是否符合规律

n=2时,A=2.8593

n=3时,A=5.5969

有向4.6692收敛的态势。

5、小结

本道题应当说是这次作业中最复杂的一道,题目意思明确,但是实验过程中则需测试相当多的数据。

另一方面,在计算分岔点时,由于题目所给迭代函数为超越函数,因此计算很复杂,但是这一项本身就又需要用到刚刚学习的非线性方程求解。

当然,这也很好地锻炼了我们解决实际问题的能力。

总体来说收获较大。

1、迭代函数

functiony=iter(x,a,b)

y=a*x*exp(-b*x);

2、b为变量的迭代

functionchaos1(iter_fun,a,b,n)

x0=1;

kr=0;

plot([b

(1):

b

(2)],y(:

n

(1)+1:

n

(2)),'

k.'

);

3、a为变量的迭代

functionchaos(iter_fun,a,b,n)

foraa=a

(1):

a(3):

a

(2)

y(kr,1)=feval(iter_fun,x0,aa,b);

y(kr,i)=feval(iter_fun,y(kr,i-1),aa,b);

plot([a

(1):

a

(2)],y(:

4、调用脚本

chaos(@iter,[1,17,0.02],5,[100,200]);

四、体验与收获

这是本学期数学实验的第四次作业,总体来说不太顺利。

事实上,这次作业的三道题里,我每一道题都在题目的理解上花了不少时间,尤其是第一题有关按揭的地方。

不过现在想来,数学实验应当就是这样一门应用类课程,它需要我们以实际情况为背景正确地进行建模,然后才能做进一步的分析和计算。

总体来说有如下收获:

1、学习了非线性方程组的求解方法;

2、初步了解了各种算法内容,并在一定程度上学会了灵活使用;

3、对数学实验这门课程有了进一步的认识;

4、进一步熟悉了Matlab的调试功能;

仅供个人用于学习、研究;

不得用于商业用途。

notforcommercialuse.

Nurfü

rdenpersö

nlichenfü

rStudien,Forschung,zukommerziellenZweckenverwendetwerden.

Pourl'

é

tudeetlarechercheuniquementà

desfinspersonnelles;

pasà

desfinscommerciales.

толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях. 

以下无正文

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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