用Python绘制多项式

2024-09-27 19:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

除了一些基本的matplotlib.pyplot知识外,我对Python绘图还很陌生。我的问题是如何绘制一些高次多项式?我看到的一种方法是用x表示y,然后绘制值。但我有两个困难:

  1. y和x不能分开。
  2. 我期待一条闭合曲线(实际上是一条复杂的曲线)

我要画的多项式是:

c0 + c1*x + c2*y +c3*x*x + c4*x*y + c5*y*y + c6*x**3 + c7*x**2*y + ..... c26*x*y**5 + c27*y**6

所有系数c0c27都是已知的。 如何绘制此曲线?

另外,您能给我推荐一些资源吗?在那里我可以学习Python中的绘图和可视化?

澄清: 很抱歉大家说得不够清楚。它不是曲面方程(包含3个变量:x、y和z)。我应该在结尾加一个零:c0+c1*x+c2*y+c3*x*x+c4*x*y+c5*y*y+c6*x**3+c7*x**2*y+。。。。。c26*x*y**5+c27*y**6=0


Tags: 绘图matplotlib绘制曲线c2pyplotc1c3
2条回答

您的公式表示一个三维曲面,您可以先绘制一个由xy值组成的网格网格,使用numpy很容易实现:

X,Y = np.meshgrid( np.linspace( xmin, xmax, 100), np.linspace( ymin, ymax, 200) )

XY都是分别包含X和Y坐标的二维数组。

然后,可以使用已知系数计算网格中每个点的z值:

Z = c0 + c1*X + c2*Y +c3*X*X + c4*X*Y + c5*Y*Y + c6*X**3 + c7*X**2*Y + ..... c26*X*Y**5 + c27*Y**6

之后,您可以使用matplotlib绘制它:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
ax = plt.subplot(111, projection='3d')
ax.plot_surface( X, Y, Z )
plt.show()

我不确定我是否完全理解你的问题,但我想你想要一个surface plot

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = np.arange(-5, 5, 0.25)
y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(x, y)
F = 3 + 2*X + 4*X*Y + 5*X*X

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, F)
plt.show()

对于资源:official documentationpyvideos

相关问题 更多 >

    热门问题