gpt4 book ai didi

python - 使用 Matplotlib 和 numpy 绘制方程组

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:50 25 4
gpt4 key购买 nike

我正在尝试学习如何使用 matplotlib 和 numpy 为我的一个类(class)绘制方程组。我们没有得到太多指导,而且我不太擅长编程,我真的不明白该怎么做,尽管我认为它不太复杂。基本上,我有一个这样的方程组:

4x -2y + z =11
-2x +4y -2z = -16
x -2y + 4z = 17

我如何使用 matplotlib 为每个方程绘制图形?

谢谢!

编辑:说明还说要使用 mplot3d。编辑:解决方案:How to draw planes from a set of linear equations in Python?

最佳答案

您可以从前两个方程中消去 z 得到 x=1 和前两个平面的交线 z=7+2y,然后用剩下的方程求解得到点 (1,-2,3)。您可以使用 numpy.linalg.solve 验证这一点:

In [11]: M = np.array([[4., -2., 1.], [-2., 4., -2.], [1., -2., 4.]])

In [12]: b = np.array([11., -16., 17.])

In [13]: np.linalg.solve(M, b)
Out[13]: array([ 1., -2., 3.])

在 Matplotlib 中,可以使用 plot_surface 绘制平面,前两个平面(蓝色)与 plot 的交线和用于点的标记第三个平面(绿色)与直线相交。

使用 alpha=0.5 让平面有点透明,因为平面是平坦的,所以不需要标记线来平铺表面(您可以将行步幅和列步幅设置为较大的值):

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

x, y = np.linspace(-8,8,100), np.linspace(-8,8,100)
X, Y = np.meshgrid(x,y)
Z1 = 11 - 4*X + 2*Y
Z2 = (16 - 2*X + 4*Y) / 2
Z3 = (17 - X + 2*Y) / 4

ax.plot_surface(X,Y,Z1, alpha=0.5, rstride=100, cstride=100)
ax.plot_surface(X,Y,Z2, alpha=0.5, rstride=100, cstride=100)


ax.plot((1,1),(-8,8),(-9,23), lw=2, c='b')
ax.plot_surface(X,Y,Z3, alpha=0.5, facecolors='g', rstride=100, cstride=100)
ax.plot((1,),(-2,),(3,), lw=2, c='k', marker='o')

plt.show()

enter image description here

关于python - 使用 Matplotlib 和 numpy 绘制方程组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com