【发布时间】:2017-02-06 07:58:41
【问题描述】:
我有一个包含 4 个变量 x、v、eta(e)、beta(b) 的方程。我想用各种值替换 x 和 v 并通过将所有获得的项相乘来创建一个方程。 Image of Code in sympy
使用 SYMPY,如何求解得到的方程在 2 个变量(e 和 b)中取对数,然后对 e 和 b 进行微分? 我正在使用“ln”,以便将乘法项简化为加法项,从而消除指数项。但是,它没有发生。它只是在前面写入单词 log 但不使用属性 ln(mn) = ln(m) + ln(n) 扩展
以下是控制台的输出:
【问题讨论】:
-
请以可以复制粘贴的格式提供您的代码。同时,尝试使用
force=True选项调用sp.expand_log -
@Stelios,我仍然无法从 expand_log PFB 代码中的 after force = true 中消除指数项: from sympy.solvers.pde import pdsolve from sympy import Function , diff , Eq from sympy. abc import x,y,z,v from sympy import * # from sympy import IndexedBase , Idx, symbols , oo import sympy as sp # import numpy # from mpmath import * # from sympy.tensor.array import Array e, b, a = sp.symbols('e b a') 继续.....
-
x = sp.IndexedBase('x') v = sp.IndexedBase('v') i , j = sp.symbols('i j' , cls=Idx) def f(x, v , e, b): y = (((x + v)/e)**(b-1))*(sp.exp((v/e)**b - ((x+v)/e) **b)) return y # # n= 0 for i in range(0,6): x = x[i].subs(x[i], (2,3,4,5,4,1)) v = v[i].subs(v[i],(1,2,3,4,5,6)) o = sp.ln(f(x[i],v[i],e,b) ) n += o print(n) def m(e,b): m= sp.expand_log(sp.ln(n)) return m print(m(e,b)) eqs = (sp.diff(n, e) , sp.diff(n,b)) print(eqs) print(sp.solve(eqs))
-
我对代码进行了一些更改: 请参见下面的 n= 1 for i in range(0,6): x = x[i].subs(x[i], (2,3, 4,5,4,1)) v = v[i].subs(v[i],(1,2,3,4,5,6)) n *= f(x[i],v[i ],e,b) print(n) def m(e,b): m= sp.expand_log(sp.ln(n), force= true) sp.simplify(m) return m print(m(e,b )) eqs = (sp.diff(m(e,b),e) , sp.diff(m(e,b),b)) print(eqs) print(sp.solve(eqs)) 现在指数项已消除,感谢@Stelios 但控制台中的错误“无法求解方程”保持不变。
-
请在此处粘贴您的代码。没有人会尝试从图像中重新输入您的代码。
标签: python sympy modeling mathematical-expressions