微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 fsolve 与字符串方程结合使用

如何解决将 fsolve 与字符串方程结合使用

我正在尝试使用 fsolve 求解方程,但是我的方程是一个字符串。我尝试使用 eval 但这没有用。有没有办法传递字符串/将字符串转换为 fsolve 可以处理的东西?下面是我的代码

NULL

解决方法

要解决方程式格式的字符串,可以使用 sympy,Python 的符号数学库。它有一个函数 parse_expr 可以处理 a.o.缺少乘法运算符。

{x: 2,y: 4}

结果:y

单独求解方程,用xfrom sympy import symbols,Eq,solve,lambdify from sympy.parsing.sympy_parser import parse_expr from sympy.parsing.sympy_parser import standard_transformations,implicit_multiplication_application x,y = symbols("x y") eqn1 = "4x + 3y = 20" eqn2 = "-5x + 9y = 26" equations = [eqn1,eqn2] transformations = (standard_transformations + (implicit_multiplication_application,)) solutions = [] solutions_np = [] for eqn in equations: sides = [parse_expr(s,transformations=transformations,local_dict={'x': x,'y': y}) for s in eqn.split('=')] sol = solve([Eq(sides[0],sides[1])],y) solutions.append(sol[y]) solutions_np.append(lambdify(x,sol[y])) import numpy as np import matplotlib.pyplot as plt xs = np.linspace(-5,10) for eqn,sol,sol_np in zip(equations,solutions,solutions_np): plt.plot(xs,sol_np(xs),label=f'${eqn}$; $y = {sol}$') plt.legend() plt.show() 的函数,lambdify()可以将解转换为numpy函数。下面是一些示例代码,将每个方程转换为函数,然后绘制它们。

import React from 'react'

const DeleayComponent = () => {
  const [show,setShow] = React.useState(false)

  React.useEffect(() => {
    setTimeout(() => {
      setShow(true)
    },5000)
  },[show])

  if (!show) return null

  return <>OK,Render</>
}

export default DeleayComponent

resulting plot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。