首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法将一个方程象征性地传递到一个交感函数中?

是否有一种方法将一个方程象征性地传递到一个交感函数中?
EN

Stack Overflow用户
提问于 2021-12-30 21:33:12
回答 1查看 17关注 0票数 0

从这里开始

代码语言:javascript
复制
import sympy as sp

x,y,z = sp.symbols("x y z")
sp.Ep(x,y/z)

到这个

代码语言:javascript
复制
#varibles = array
#equation = ????
def solver(variables,equation):
    #Looping through variables array and converting variables to sympy objects 
    for var in variables:
        var = sp.symbols(var)
    
    #Generate sympy Equation
    equation = sp.Ep(equation)

variables = [x,y,z]
equation = x,y/z #invalid code

solver(variables,equation)

我正在创建一个函数,它能够接受一个含有x个变量和x-1个值的方程,然后象征性地求解缺少的变量,然后使用所提供的值返回一个数值答案。

我只包含了一小部分代码,在这些代码中,我很难理解如何通过一个等式。任何解决方案或指针都会大大增加。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-31 05:39:13

这里有几层潜在的混淆,涉及到用于变量的Python变量和SymPy对象(符号)。

下面是你说的话的一个例子:

代码语言:javascript
复制
# 3 variables
syms = x, y, z = var('x:z')
# 2 values
vals = {x:1, y:2}
# an equations
eq = Eq(x, y/z)

# solve for the missing value symbolically
missing = set(syms) - set(vals)  # == {z}
solve(eq, missing)
[y/x]

# solve for the missing value after substituting in the known values
solve(eq.subs(vals))
[2]

您可以让一个求解器接受一个方程,然后指定值,找出缺少的值,然后执行如下操作返回该值:

代码语言:javascript
复制
>>> def solver(eq, **vals):
...     from sympy.core.containers import Dict
...     from sympy.solvers.solvers import solve
...     free = eq.free_symbols
...     vals = Dict(vals)
...     x = free - set(vals)
...     if len(x) != 1:
...         raise ValueError('specify all but one of the values for %s' % free)
...     x = x.pop()
...     return solve(eq.subs(vals), x, dict=True)
...
>>> solver(eq, x=1, z=2)
[{y: 2}]

这能给你一些关于如何继续下去的想法吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70536912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档