用 python 求解方程

Solving an equation with python

我在求解这个方程时遇到了问题:

ra = (1.5 * (ca - (ra/2))/(1 + 0.8 * (ca - (ra/2))))

我必须输入变量“ca”作为浮点数,然后 python 必须找到“ra[=20=”的值]

提前致谢

您在 "ra" 的定义中使用了 "ra"。你应该通过求解这个方程来去掉右边的 "ra" s(你可以使用不同的工具,比如 wolframalpha 或 matlab 或者你的纸和笔)。

您需要找到一种方法将您的值输入 ca 并断言它是一个浮点数。

input 在命令行应用程序(在终端中工作)中经常用于此类目的,但如果您使用的是较早的 [=33],则需要查看 raw_input =] 解释器。

类似于:

ca = input('Please type a float: ')

这应该可以帮助您入门。您需要断言 ca 是一个浮点数(查看 assert 作为处理这种情况的可能选项)。

然后你应该创建一个以 ca 作为参数并输出 ra

的函数

类似

def calculate(n):
    ...
    return x

你可以用 sympy 库做这样的事情。

http://docs.sympy.org/dev/index.html

>>> from sympy import *
>>> from sympy.solvers import solve

>>> ca, ra = symbols("ca ra")

>>> eq = -ra + (1.5 * (ca - (ra/2))/(1 + 0.8 * (ca - (ra/2))))

>>> print(eq)
-ra + (1.5*ca - 0.75*ra)/(0.8*ca - 0.4*ra + 1)

>>> solutions = solve(eq, ra)  #solve equation for ra
>>> print(solutions)
[ca - 0.0625*sqrt(256.0*ca**2 + 160.0*ca + 1225.0) + 2.1875,
 ca + 0.0625*sqrt(256.0*ca**2 + 160.0*ca + 1225.0) + 2.1875]

>>> values = [s.replace(ca, 5) for s in solutions]  #get solutions for ca=5

[1.45076257791068, 12.9242374220893]

显然,您需要从用户那里获得 ca 的数字,而不仅仅是求解 ca=5.