- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验四 非线性方程近似解
一、按揭还贷
㈠问题描述
(1)小张夫妇以按揭方式贷款买了一套价值20万元的房子,首付5万元,每月还款1000元,15年还清。问贷款利率是多少?
(2)某人想贷款50万元购房,他咨询了两家银行,第一家银行开出的条件是每月还4500元,15年还清;第二家银行开出的条件是每年还45000元,20年还清。从利率方面看,哪家银行较优惠?(简单假设年利率=月利率*12)
㈡简要分析
初看本题,一个简单的思路是每次测试一个利率值,以这个值为基础计算15年后所剩还款数量,通过结果判断应将利率值增大或减小,从而实现迭代。这其实是一个二重迭代的过程,之所以这样是因为不容易一眼看出本题的非线性方程。
事实上,转换思路后,可以利用一个简单的方程描述整个迭代过程。这样就将二重迭代转化为了一层迭代。使得处理更加简便。
㈢方法与公式
1、解题方法
(1)二次迭代
给定总的本金,从每一次还款中扣去这段时间中增加的利息,再将其还到本金,使本金总量逐渐减少。
代码:
for i = 1:time*12
less = (repay-left*interest);
left = left - less;
(2)方程描述
虽然并不是所有本金都在还款的整个期间中产生了相应的利息,但是可以设想成这样,与此同时,还款从在相应的还款时间开始产生利息,这样可以得出,两者最终的“本息和”相等,即
A(1+q
其中A为总还款金额,q为了利率,P为每次还款金额。
2、解方程方法
(1)牛顿法
x
(2)直接使用公式fzero()
㈣结果与分析
1、第一问:
(1)二次迭代
[i,q]=iterate(150000,1000,15,2,0,1,100,10^-6);
公式表意为:总贷款量=200000-50000=150000;
每月还款100元;
还款期限15年;
还款方式为按月还款;
迭代区间设定为[0,1];
最大迭代次数为100次;
精度要求为10^-6;
最终结果为:
迭代次数:45;
使用时间0.003030989435705s;
利率为0.002081163889457。
(2)公式
A(1+q
由于函数中出现q在分母位置的情况,故不能将迭代区间设为[0,1],为了能够更好地比较各种方法,因此,这里设置一端为1,一端尽量小。经测试,当设置值比10-15还小时,matlab自动认为其为0,故取10
迭代次数:20
使用时间不稳定,最长使用0.0066s,最短使用0.0014s。
利率为0.002081163889460
(3)使用自己编写的牛顿迭代公式
按照书中给出的牛顿迭代公式,进行迭代。
迭代次数随初值的设定而不断变化,初值的设置要求更加复杂,不能达到10-15这样小。这里仅实验了10
迭代次数:33703
使用时间:1.290408747434996s
利率为0.002081163888815
(4)简要小结
从以上三种计算方法可以看出,各种计算方法的结果均相差不多,可见各种方法的正确性都是有保障的。与此同时不同的方法有着自己不同的特性:
a.由于涉及公式的使用,第二、三种方法都出现了初值设置的问题。当然这个问题视具体情况而定,不能一概而论;
b.本次实验中发现,前两种办法在给定区域较广的情况下能够较快地收敛到所求的位置,而牛顿法使用的时间反而较多。为了进一步确认,我将牛顿法的迭代初值置为1,此时共迭代395次,使用时间为0.030859880251168。可以发现仍旧较大。可见自己编写的迭代方法距matlab所用的混合方法相差较远。
2、第二问
(1)月付款
仍旧使用三种方法并进行比较
二次迭代
fzero
自编牛顿法
用时
0.01586979988913
0.00848355965884
0.02216196240263
迭代次数
47
23
170
结果
0.005850792582844
0.005850792582845
0.00585079258286
(2)年付款
用时
0.00808442389920
0.00789113683590
0.01815115453564
迭代次数
44
23
53
结果
0.06394877709241
0.06394877709239
0.06394877709245
从实验结果可以看出,各种方法所得的最终数据基本一致。由题目假设:
年利率=月利率*12
得到第一中按揭方式的年利率约为0.070209511,比第二种方法大。故第二家银行开出的条件较优惠。
3、总结
a.二分迭代和牛顿迭代法通常都能通过迭代收敛得到所要的结果;
b.使用Matlab自带的fz
文档评论(0)