python - 如何从python中得到一个非线性复杂方程的封闭形式?
问题描述
我正在从以下非线性方程中寻找 x 的封闭形式:
1/{e^[a*(d-x)]+1}+ln(1/x-1)*b=c
python是否用代数而不是数值数据来求解非线性方程?还是有任何有用且有效的工具来解决这个问题?
解决方案
你知道Sympy
方程代数解的模块吗?不幸的是,我不确定它是否可以解决您自己的方程式,但如果以后可以帮助您:
In [1]: from sympy import exp, log, solve
In [2]: from sympy.abc import a,b,c,d,x
In [3]: solve( 1/(exp(a*(d-x))+1) + log(1/x-1)*b - c, x)
在这里找不到任何解决方案(请看下面的最后一行):
-------------------------------------------------- ------------------------- NotImplementedError Traceback (最近一次调用最后一次) in () ----> 1 solve( 1/(exp(a *(dx))+1) + log(1/x-1)*bc, x)
/usr/lib/python3/dist-packages/sympy/solvers/solvers.py insolve(f, *symbols, **flags) 1063 ################## ################################################# ###### 1064 if bare_f: -> 1065 solution = _solve(f[0], *symbols, **flags) 1066 else: 1067 solution = _solve_system(f, symbols, **flags)
/usr/lib/python3/dist-packages/sympy/solvers/solvers.py in _solve(f, *symbols, **flags) 1632 1633 如果结果为 False:-> 1634 raise NotImplementedError('\n'.join( [msg, not_impl_msg % f])) 1635 1636 if flags.get('simplify', True):
NotImplementedError: 多个生成器 [exp(-a x), log(-1 + 1/x)] 没有实现求解方程 b log(-1 + 1/x) - c + 1/(exp(a*( d - x)) + 1)
当然,您可以期望像Mathematica这样的东西比Sympy更强大,但实际上:
Wolfram Language 12.0.0 Engine for Linux x86 (64-bit)
Copyright 1988-2019 Wolfram Research, Inc.
In[1]:= Solve[ 1/(Exp[a*(d-x)]+1) + Log[1/x - 1]*b == c, x]
Solve::nsmet: This system cannot be solved with the methods available to Solve.
1 1
Out[1]= Solve[-------------- + b Log[-1 + -] == c, x]
a (d - x) x
1 + E
推荐阅读
- javascript - Laravel - DataTables 警告:表 id=userTable - 无效的 JSON 响应(此请求没有可用的响应数据)
- laravel - Laravel 工厂深度嵌套关系失败
- flutter - 在flutter-中获取方法的buildContext-作为参数或使用globalKey的currentContext
- javascript - 如何从每一行的输入中单独填充模态?
- c - 如何访问由 void 指针指向的链表
- c# - Outlook 无法打开 s/mime 签名的邮件
- python - 在cupy中不需要时尝试numpy转换
- ios - 轻量级和重量级迁移期间核心数据崩溃
- wordpress - 在 wordpress 中制作“滚动”地图
- java - Spring Boot 在控制器的每个操作中添加 if 语句