【问题标题】:Plotting a polynomial in Python在 Python 中绘制多项式
【发布时间】:2015-10-28 01:20:39
【问题描述】:

除了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

【问题讨论】:

  • 如果您期望曲线,也许您希望多项式 = 0,并将其视为隐式方程?如果您只想“绘制多项式”,因为它是两个变量的函数,所以结果是曲面,而不是平面曲线。
  • 是的,编辑了我的问题。很抱歉造成混乱
  • 你可以看看this SO question,以及sympy中的plot_implicit函数。

标签: python numpy matplotlib curve


【解决方案1】:

我不确定我是否完全理解你的问题,但我认为你想要一个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

【讨论】:

  • 是的:),我使用的是ipython notebook --pylab=inline,所以它会立即显示出来。但是,如果您正在编写脚本,则需要它。解决了,谢谢:)
【解决方案2】:

您的方程表示一个 3D 表面,您可以绘制它首先创建一个具有 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 2018-02-16
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    相关资源
    最近更新 更多