Van*_*xel 4 python numpy matplotlib
我正在尝试学习如何使用 matplotlib 和 numpy 为我的一个班级绘制方程组。我们没有得到太多指导,我不太擅长编程,我真的不明白如何做到这一点,尽管我认为它不太复杂。基本上,我有一个这样的方程组:
4x -2y + z =11
-2x +4y -2z = -16
x -2y + 4z = 17
Run Code Online (Sandbox Code Playgroud)
如何使用 matplotlib 绘制每个方程的图形?
谢谢!
编辑:说明还说要使用 mplot3d。编辑:解决方案:如何从 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.])
Run Code Online (Sandbox Code Playgroud)
在 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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3839 次 |
| 最近记录: |