【问题标题】:How to interpret sin(x) with eval() in python如何在 python 中用 eval() 解释 sin(x)
【发布时间】:2021-11-25 12:21:09
【问题描述】:

我试图让用户输入 sin(x) - y 以使用 SymPy 建立一个方程,但是,使用我当前的代码,当你输入这个时,它会返回:

TypeError: 无法将表达式转换为浮点数

我当前的代码是:

import numpy as np
import sympy as sp
import math
from math import sin, cos, tan

x, y = sp.symbols('x y')
literalEq = input("Enter equation")
eq = eval(literalEq)

我对使用 SymPy 很陌生,你能帮帮我吗?

【问题讨论】:

  • 这个代码你用什么作为input?对我来说,这样的输入很好用:sin(2)-3返回-2.090702573174318
  • math.sin 需要一个数字参数。

标签: python sympy


【解决方案1】:

您似乎正试图将xy 直接放入输入中,它们主要被视为表达式而不是其他任何内容。您需要输入像sin(3) - 5 这样的直接值,这将返回-4.858879991940133

或者您可以使用sympify 函数来简化方程,以便使用evalf 函数对其进行处理。

import sympy
from sympy import *
init_printing(use_unicode=True)

x, y = sympy.symbols('x y')
literalEq = str(input("Enter equation "))
literalEq = sympify(literalEq)
literalEq = literalEq.evalf()
pprint(literalEq) #For pretty printing

或从 sympy 导入 sin (和/或您所需的三角函数) 也可以。

import sympy
from sympy import * #or from sympy import sin
init_printing(use_unicode=True)

x, y = sympy.symbols('x y')
literalEq = input("Enter equation ")
eq = eval(literalEq)
pprint(eq)

【讨论】:

  • 非常感谢!我试图将 x 作为输入,对不起,我应该更清楚。这两种解决方案都有效,再次感谢!
猜你喜欢
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多