【问题标题】:pyplot how to plot function hard to be simplified as y = f(x) [duplicate]pyplot如何绘制函数难以简化为y = f(x)[重复]
【发布时间】:2017-07-14 04:00:25
【问题描述】:

例如,如何绘制sin(x^2 + y^2) = cos(x * y)
很难将此函数简化为y = f(x)

我认为这不是 Is it possible to plot implicit equations using Matplotlib? 的重复,因为我的问题是关于 y = f(x) 而不是 z = f(x, y)

【问题讨论】:

  • 我觉得this answer 真的很好,很适合你。
  • @ViníciusAguiar 我认为它不是重复的,因为这个函数是y = f(x),而不是z = f(x, y)
  • 该重复问题的第一个答案是直接可用的。你有F = sin(x**2 + y**2)G=cos(x * y),这样F-G ==0。所以你正在绘制contour(X, Y, (F - G), [0]),就像那个答案一样。
  • @ImportanceOfBeingErnest 是的,我将此问题标记为重复。
  • 我不确定您是否应该将下面的答案标记为正确,因为它并没有真正回答问题,对吧?

标签: python matplotlib


【解决方案1】:

可以使用轮廓功能:

import numpy as np
import matplotlib.pylab as plt

x = np.linspace(-1., 1.)
y = np.linspace(-1., 1.)[:, None] # y has to be 2d array
plt.contour(x, y.flatten(), np.sin(x*x+y*y) - np.cos(x*y))

plt.show()

【讨论】:

  • OP 明确表示他们不想要z = f(x, y)。你为什么要通过给出他们不想要的案例的解决方案来回答?特别是因为已经有指向显示正确答案的问题的链接。
  • 你在哪里找到z?它是 f(x,y)=0。
  • 这正是我的观点。您的答案中的代码为z = f(x, y) 生成轮廓,z 等于-0.8、-0.6、-0.4 等,而问题是关于f(x,y)=0
  • 没错!但是你误解了一些东西,因为所有这些线都满足方程 f(x,y)=0。方程是三角函数并且有很多分辨率。轮廓图可以用所需的步骤显示它们,比如这里的步骤接近 1/5。根据你的论文 x^2+y^2=1 是一个 f(x,y)=z 方程,但这是值得怀疑的。
  • 您肯定可以将每一行称为g(x,y)=0 的解决方案。但是,在这种情况下,g 对于每一行都是不同的。假设我们有F = sin(x**2 + y**2)G=cos(x * y)。该问题正在寻找f(x,y) = F-G==0 的解决方案。您不提供该解决方案,而是将解决方案绘制为f(x,y)+0.8=0(深蓝色线)、f(x,y)+0.6 =0(海蓝色线)等。虽然您可以将它们写成g1(x,y)=f(x,y)+0.8=0g2(x,y) = f(x,y)+0.6=0 等,这样它们每个都可以解决gi(x,y)=0,但这不是问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多