绘制 sympy 结果 python
plotting sympy results in python
我正在使用 sympy 求解 b1 和 b2:
y=x/[x+exp(b1-b2*x)]
x1 = 90; y1 = 0.05 and x2=99;y2=0.95
import sympy
b1,b2 = symbols('b1 b2')
solve([Eq(90*0.05+90*exp(b1-(b2*90))-90, 0.0), Eq(99*0.95+99*exp(b1-(b2*99))-99, 0.0)], [b1, b2])
>>> {b1:29.3930964972769,b2:0.327159886574049}
如何使用这些结果绘制受这些值约束的 S 形曲线。 Y 轴的范围从 0 到 1。x1,y1 和 x2,y2 是该曲线上的 2 个点。
据称 Sympy 有自己的绘图功能,但我无法从他们的手册中使用它。我不是 sympy 的活跃用户。
但是这里有一个关于如何使用 numpy
和 matplotlib
的版本
- 定义您的函数,使其作用于 np.array
- 在一定范围内均匀分布点数"x"
- 用你的函数对这些点进行操作 "y"
绘制一组均匀间隔的点 "x" 与这些点中的函数值 "y"
import numpy as np
import matplotlib.pyplot as plt
def f(a):
c1 = 0.327159886574049
c2 = 29.3930964972769
return a/(a+np.exp(c1-c2*a))
x = np.linspace(0, 1, 500)
y = f(x)
plt.plot(x,y)
plt.show()
你应该得到这样的东西:
使用最新版本的 sympy 和 ipython
In [1]: from sympy import *
In [2]: x, b1, b2 = symbols("x b1 b2")
In [3]: f = x/(x+exp(b1-b2*x))
In [4]: res = {b1:29.3930964972769,b2:0.327159886574049}
In [5]: plot(f.subs(res), (x, 0, 100))
输出图:
我正在使用 sympy 求解 b1 和 b2:
y=x/[x+exp(b1-b2*x)]
x1 = 90; y1 = 0.05 and x2=99;y2=0.95
import sympy
b1,b2 = symbols('b1 b2')
solve([Eq(90*0.05+90*exp(b1-(b2*90))-90, 0.0), Eq(99*0.95+99*exp(b1-(b2*99))-99, 0.0)], [b1, b2])
>>> {b1:29.3930964972769,b2:0.327159886574049}
如何使用这些结果绘制受这些值约束的 S 形曲线。 Y 轴的范围从 0 到 1。x1,y1 和 x2,y2 是该曲线上的 2 个点。
据称 Sympy 有自己的绘图功能,但我无法从他们的手册中使用它。我不是 sympy 的活跃用户。
但是这里有一个关于如何使用 numpy
和 matplotlib
- 定义您的函数,使其作用于 np.array
- 在一定范围内均匀分布点数"x"
- 用你的函数对这些点进行操作 "y"
绘制一组均匀间隔的点 "x" 与这些点中的函数值 "y"
import numpy as np import matplotlib.pyplot as plt def f(a): c1 = 0.327159886574049 c2 = 29.3930964972769 return a/(a+np.exp(c1-c2*a)) x = np.linspace(0, 1, 500) y = f(x) plt.plot(x,y) plt.show()
你应该得到这样的东西:
使用最新版本的 sympy 和 ipython
In [1]: from sympy import *
In [2]: x, b1, b2 = symbols("x b1 b2")
In [3]: f = x/(x+exp(b1-b2*x))
In [4]: res = {b1:29.3930964972769,b2:0.327159886574049}
In [5]: plot(f.subs(res), (x, 0, 100))
输出图: