【问题标题】:How do I get multiple outputs for 2 simultaneous equations in python?如何在python中获得2个联立方程的多个输出?
【发布时间】:2021-05-29 09:42:38
【问题描述】:
我正在尝试用 2 个联立方程绘制图形,但我不需要解决它们,我只是想从替换中获得多个结果,例如当 x 为 1 或 y 为 0 时。
我的方程式是5x + 2y = 20,y = 2x + 1
我找到的所有解决方案都只是为了求解方程,而不是代入值以获得多个结果。
请停止
最好使用 numpy 或 sympy 函数,我正在努力学习这些哈哈
【问题讨论】:
标签:
python
numpy
matplotlib
sympy
equation
【解决方案1】:
从@Michael Rovinsky 的上述答案扩展而来。既然你提到了绘制它。
我会将代码修改为以下
import matplotlib.pyplot as plt # used for ploting
def get_f1_val(x):
return x*-2.5+10
def get_f2_val(x):
return x*2+1
#select the value you want to use for x, you can use a for loop if theres no specific value needed, or if you need a lot of x vals for the graph
x_val = [1,2,3,4,5]
f1_y_val = []
f2_y_val = []
for xval in x_val:
f1_y_val.append(get_f1_val(xval))
f2_y_val.append(get_f2_val(xval))
plt.plot(x_val, f1_y_val)
plt.plot(x_val, f2_y_val)
plt.show()
从技术上讲,无论如何,您都必须解方程才能绘制出图表。没有“解决它”就没有办法绘制一些东西。
【解决方案2】:
您在问两个不同的问题:如何绘制和如何获取值。如果您正在绘图,绘图引擎将提供值,您只需将方程放入它可以使用的形式。在这种情况下,作为单变量方程。
>>> from sympy import var, solve, Eq, plot
>>> var('x y')
(x, y)
>>> eqs = Eq(5*x + 2*y, 20), Eq(y, 2*x + 1) # put into Eq form
由于方程在 y 中是线性的,因此我们可以使用 y 的单一解(以 x 表示的表达式)作为要绘制的表达式:
>>> plot(*[solve(i,y)[0] for i in eqs], (x,-1,1))
(注意:plot_implicit 可以在两个变量中绘制单个方程,而无需求解其中一个。)
【解决方案3】:
将5x + 2y = 20 标准化为y = -2.5x + 10:
def get_values(x):
return [x * -2.5 + 10, x * 2 + 1]
print(get_values(-1))
print(get_values(0))
print(get_values(1))