如何使用Python像Excel中的解算器一样求解求和中的变量x?

2024-06-25 05:27:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python来解lambdaλ的这个方程the equation is here

其中,对于索引列中的i,数据框中给出了p_0、c、t、D、F,如下所示:

dataframe

给定r = constant = 0.6,Excel解算器可以轻松求解lambda方程。但我对python还不熟悉,我一直在与python Symphy进行斗争,以找到解决它的方法。请帮忙!非常感谢

编辑:这是我的数据帧 dataframe

这是我的python代码。它需要永远运行,而Excel解算器只花了不到1秒的时间,所以我认为它一定出了问题

import sympy as sy
x = sy.Symbol('x', real =True)
coupon = max(cal_lambda['c'])
r = 0.6
F = 100
P = max(cal_lambda['P_O'])
component1 = 0
component2 = 0
for i1, i2 in zip(cal_lambda['T'],cal_lambda['D']):
    component1 += coupon*np.e**(-x*i1*1/100*i2)
    component2 += r*np.e**(-x*0.5*1/100*i2)
component3 = F*np.e**(-x*cal_lambda['T'].tail(1)*cal_lambda['D'].tail(1))
Equation = sy.Eq(component1 + component2 + component3,P)
sol = sy.solve(Equation)
print(sol)

Tags: 数据lambdanpexcelmaxcal算器方程
1条回答
网友
1楼 · 发布于 2024-06-25 05:27:06

下面是一个简单的循环版本,它为i1和i2的每个值求解方程

您需要为方程定义函数,然后定义符号变量。然后从数据帧中读取常量,然后求解函数

>>> from sympy import symbols, Eq, solve
... x = symbols('x')
... for i1,i2 in zip(range(5),range(5)):
...   eq1 = Eq(x*i1 -5*i2*x + 6)
...   sol = solve(eq1, dict=True)
...   print(sol)
[]
[{x: 3/2}]
[{x: 3/4}]
[{x: 1/2}]
[{x: 3/8}]

相关问题 更多 >