[英]Solving an equation with large exponents with python
考虑到当前价格,期数,息票和面值都是已知的,我试图使用以下方程式来计算债券的到期收益率。
我使用以下代码创建了一个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.