繁体   English   中英

使用python解决具有大指数的方程式

[英]Solving an equation with large exponents with python

考虑到当前价格,期数,息票和面值都是已知的,我试图使用以下方程式来计算债券的到期收益率。

IMG

我使用以下代码创建了一个SymPy表达式:

expr = coupon/pow((1+ytm), exp)
exp= exp+0.5

for x in range(1, periods):
    expr = expr + coupon/pow((1+ytm), exp)
    exp = exp+0.5

exp = exp-0.5
expr = expr+100/pow((1+ytm), exp)

表达式一旦计算就看起来像这样:

Out[3]: 104.375*(ytm + 1)**(-28.7356164383562) + 4.375*(ytm + 1)**(-28.2356164383562) + ..... + 4.375*(ytm + 1)**(-0.735616438356164) + 4.375*(ytm + 1)**(-0.235616438356164)

尝试使用SymPysolve solve()方法进行求解:

from sympy.solvers import solve

但它似乎不起作用。 非常感谢我对如何解决此问题的任何帮助。

使用nsolve可以轻松获得数值解。 用您给出的表达式进行演示:

>>> print(filldedent(eq))
104.375*(ytm + 1)**(-28.7356164383562) + 4.375*(ytm +
1)**(-28.2356164383562) + 4.375*(ytm + 1)**(-0.735616438356164) +
4.375*(ytm + 1)**(-0.235616438356164)
>>> nsolve(eq-5, 1)
2.49587148297981

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM