数学模型:Python实现差分方程

这篇具有很好参考价值的文章主要介绍了数学模型:Python实现差分方程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上篇文章:微分方程
文章摘要:差分方程的Python实现。
参考书籍:数学建模算法与应用(第3版)司守奎 孙玺菁。
PS1:只涉及了具体实现并不涉及底层理论。没有给出底层理论参考书籍的原因是不想做这个方向吧。所以对我只要掌握基本模型有个概念那就好了。
PS2:这里跳过数理统计直接来到差分方程那是因为:数理统计是机器学习的重要基础,数理统计想要好好学习一下以后重新开个专栏。之后的支持向量机放在机器学习部分,也就是再开个机器学习专栏。再之后的章节遇到大型数学建模竞赛再来补充。结束差分方程暂时结束这个专栏学习。
文章声明:如有发现错误,还望批评指正。

同样由于这个博主不感兴趣,我们只选几个典型案例来做。

贷款问题

参考书籍例8.1
某消费者需贷款30万元,期限30年,年利率5.1%,采用固定额度还款,每月应还多少贷款。
模型建立:
y n y_n yn为第n个月的欠款总额; r = 0.051 12 × 100 % = 0.425 % r=\frac{0.051}{12}\times100\%=0.425\% r=120.051×100%=0.425%为月利率, N N N为360月, Q Q Q为贷款总额。
{ y n = ( 1 + r ) y n − 1 − x , n = 1 , 2 , … , N y 0 = Q \left\{\begin{matrix}y_n=(1+r)y_{n-1}-x,n=1,2,\dots,N\\y_0=Q\end{matrix}\right. {yn=(1+r)yn1x,n=1,2,,Ny0=Q
模型求解:
y n = ( 1 + r ) n y 0 − x ( 1 + r ) n − 1 r y_n=(1+r)^ny_0-x\frac{(1+r)^n-1}{r} yn=(1+r)ny0xr(1+r)n1
因为 y 360 = 0 y_{360}=0 y360=0,所以有:
x = ( 1 + r ) 360 Q r ( 1 + r ) 360 − 1 x=\frac{(1+r)^{360}Qr}{(1+r)^{360}-1} x=(1+r)3601(1+r)360Qr

Q=300000;r=0.051/12;N=360
print((pow(1+r,N)*Q*r)/(pow(1+r,N)-1))
#1628.849320201216

像这种有解析解,就挺好的。

养老保险

参考书籍例8.5
某保险公司的一份材料指出,在每月交200元到59岁末60岁开始领取养老金约定下,男子25岁开始投保届时月养老金2282元。假定人的寿命75岁,试求保险公司为了兑现责任,每月至少应该有多少投资收益率。
模型建立:
F k F_k Fk表示投保人在投保后第k个月所交保险费及收益累计总额, p p p为缴费期间费用, q q q为养老期间支出。
F k + 1 = F k ( 1 + r ) + p , k = 0 , 1 , … , N − 1 F k + 1 = F k ( 1 + r ) − q , k = N , N + 1 , … , M − 1 F_{k+1}=F_{k}(1+r)+p,k=0,1,\dots,N-1\\F_{k+1}=F_k(1+r)-q,k=N,N+1,\dots,M-1 Fk+1=Fk(1+r)+p,k=0,1,,N1Fk+1=Fk(1+r)q,k=N,N+1,,M1
模型解得:
F k = [ ( 1 + r ) k − 1 ] p r , k = 0 , 1 , … , N , F k = q r [ 1 − ( 1 + r ) k − m ] , k = N + 1 , N + 2 , … , M , F_k=[(1+r)^k-1]\frac{p}{r},k=0,1,\dots,N,\\F_k=\frac{q}{r}[1-(1+r)^{k-m}],k=N+1,N+2,\dots,M, Fk=[(1+r)k1]rp,k=0,1,,N,Fk=rq[1(1+r)km],k=N+1,N+2,,M,
带入则有:
F N = [ ( 1 + r ) N − 1 ] p r F N + 1 = q r [ 1 − ( 1 + r ) N + 1 − M ] , F_N=[(1+r)^N-1]\frac{p}{r}\\F_{N+1}=\frac{q}{r}[1-(1+r)^{N+1-M}], FN=[(1+r)N1]rpFN+1=rq[1(1+r)N+1M],
由于 F N + 1 = F N ( 1 + r ) − q F_{N+1}=F_N(1+r)-q FN+1=FN(1+r)q因此得:
q r [ 1 + ( 1 + r ) N + 1 − M ] = [ ( 1 + r ) M − 1 ] p r ( 1 + r ) − q \frac{q}{r}[1+(1+r)^{N+1-M}]=[(1+r)^M-1]\frac{p}{r}(1+r)-q rq[1+(1+r)N+1M]=[(1+r)M1]rp(1+r)q
化简:
( 1 + r ) M − ( 1 + q p ) ( 1 + r ) M − N + q p = 0 (1+r)^M-(1+\frac{q}{p})(1+r)^{M-N}+\frac{q}{p}=0 (1+r)M(1+pq)(1+r)MN+pq=0
像这种没解析解得,就不好了。很多方法可以求解,例如二分。但是这里我们还是调用API吧。

M=600;N=420;P=200;Q=2282
from scipy.optimize import fsolve
def func(r):
    return pow((1+r),M)-(1+Q/P)*pow(1+r,M-N)+Q/P
print(fsolve(func,0))

1:.得r为0。2: 违反常识。开始质疑。3(1: 质疑api正确性,手动带入的确为0。3(2: 质疑存在多个零点,但是API只给出一个,带入标答0.0049求得0.27586315562580666,标答错误。3(3: 质疑公式的正确性,手推一遍的确如此。4: 得出结论——原书错误并且保险一本万利。
好了玩笑到此为止,虽然没有找到问题,但是得出几个既定事实。1) r ≠ 0 r\neq0 r=0,因为 r r r作了分母。2)书上公式是正确的,但是答案错误。文章来源地址https://www.toymoban.com/news/detail-577615.html

到了这里,关于数学模型:Python实现差分方程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python数学建模之用sympy.solve求解方程组的解

    在sympy.solve(expression)方法的帮助下,我们可以很容易地求解数学方程,它将返回使用sympy.solve()方法作为参数提供的方程的根。 参考文档: 参考文档 https://www.geeksforgeeks.org/python-sympy-solve-method/ 在下面这个例子中,我们可以看到通过使用sympy.solve()方法,我们可以求解数

    2024年02月10日
    浏览(40)
  • 数学建模--决策树的预测模型的Python实现

    目录 1.算法流程简介 2.算法核心代码 3.算法效果展示

    2024年02月08日
    浏览(50)
  • 数学建模--时间序列预测模型的七种经典算法的Python实现

    目录 1.开篇版权提示 2.时间序列介绍  3.项目数据处理 4.项目数据划分+可视化 5.时间预测序列经典算法1:朴素法 6.时间预测序列经典算法2: 简单平均法 7.时间预测序列经典算法3:移动平均法 8.时间预测序列经典算法4:简单指数法  9.时间预测序列经典算法5:Holt线性趋势法

    2024年02月10日
    浏览(42)
  • 【数学建模】《实战数学建模:例题与讲解》第五讲-微分方程建模(含Matlab代码)

    如果这篇文章对你有帮助,欢迎点赞与收藏~ 微分方程建模是数学建模中一种极其重要的方法,它在解决众多实际问题时发挥着关键作用。这些实际问题的数学表述通常会导致求解特定的微分方程。将各种实际问题转换为微分方程的定解问题主要包括以下几个步骤: 确定研究

    2024年03月18日
    浏览(73)
  • 【数学建模】常微分方程

    博客园解释 https://www.cnblogs.com/docnan/p/8126460.html https://www.cnblogs.com/hanxi/archive/2011/12/02/2272597.html https://www.cnblogs.com/b0ttle/p/ODEaid.html matlab求解常微分方程 https://www.cnblogs.com/xxfx/p/12460628.html https://www.cnblogs.com/SunChuangYu/p/13415439.html https://www.cnblogs.com/tensory/p/6590783.html 高等数学-常微分

    2024年02月16日
    浏览(41)
  • 数学建模算法(基于matlab和python)之 线性方程组的迭代法(雅可比迭代、高斯-赛德尔迭代)(7/10)

    实验目的及要求: 1、了解各迭代法的基本原理和特点; 2、判断雅克比迭代、高斯-塞德尔迭代对任意初始向量的收敛性; 3、完成雅克比迭代、高斯-塞德尔迭代算法的程序实现。 实验内容: 1、编写雅可比迭代法与高斯-赛德尔迭代法通用子程序,求解下列线性方程组 ,并考

    2024年02月04日
    浏览(49)
  • 【数学建模】常微分,偏微分方程

    普通边界   已知t0时刻的初值    ode45()  龙格-库塔法 一阶,高阶都一样 如下: s(1) = y , s(2)=y\\\'  s(3) = x , s(4)=x\\\'   分段边界 非匿名函数    手写改进的ode45()函数代码 复杂边界值(即已知初始值,也知道末尾值),用bvp4c()函数 1. pdepe()函数 椭圆-抛物线型 控制方程  左边界

    2024年02月09日
    浏览(42)
  • 第一性原理之:数学建模与方程推导

    作者:禅与计算机程序设计艺术 什么是“第一性原理”?这是数学的一个重要分支学科,指的是用严格的逻辑方法证明真理、普遍性和有效性的定律或规律。而“第一性原理”学说则是由苏联的马克思主义者提出的一个关于数学的观念,认为自然界存在着一个“最基本的秩序

    2024年01月23日
    浏览(33)
  • 数学建模笔记(六):常微分方程及其应用

    前为数学摆方程,后为拉普拉斯方程 要确定每次积分后 C C C 的值 利用MATLAB求解 当 t t t 趋于正无穷大时, x ( t ) x(t) x ( t ) 趋于 x 0 x_0 x 0 ​ 使用泰勒展开,方程二为线性更易求解,使用变量分离法求解 预测长时间后的情况 效益最大点小于 r 2 frac{r}{2} 2 r ​ 拿 E s 1 E_{s1} E

    2024年02月02日
    浏览(79)
  • 线性规划模型(数学建模python版)

    前言:本篇文章只涉及问题的应用层面(如何调用包调用函数,如何把问题归结为一般形式方便使用第三方库中的函数求解),不涉及问题的具体求解原理。 首先回顾一下高中学过的线性规划:求一个线性目标函数在先行可行域内的 最值问题。 高中遇到的问题:配送运输问

    2024年02月20日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包