如何绘制这个二维正弦参数函数

问题描述

我有一个二维正弦函数,我想绘制 t=0 的边界阈值。有人可以给我一个关于如何做的提示吗?

f (x,y) = sin(10x) + cos(4y) − cos(3xy)

x ∈ [0,1],y ∈ [0,2],边界阈值为 t = 0

预期的情节应该是这样的:Plot A dashed lines

实际上我所指的函数是论文“用于识别函数阈值边界的主动学习”(https://papers.nips.cc/paper/2005/file/8e930496927757aac0dbd2438cb3f4f6-Paper.pdf) 中的一个玩具 Page 4 of that paper

更新:我尝试了以下代码,但显然它没有给出我想要的。顶视图是从(0,0)到(1,2)的一条直线,而不是一些曲线...

ax = plt.axes(projection='3d')

# Data for a three-dimensional line
xline = np.linspace(0,1,1000)
yline = np.linspace(0,2,1000)
zline = np.sin(10*xline)+np.cos(4*yline)-np.cos(3*xline*yline)
ax.plot3D(xline,yline,zline,'gray')

解决方法

欢迎使用 stackoverflow。你的数学错了。您的函数 f 是两个变量 f(x,y) 的函数。因此,如果您想通过计算找到 f = 0 的解决方案,您需要在网格(有效 x 和 y 值的所有组合)上对其进行评估。您的代码目前仅在 f 轴上评估 y = 2x(因此是“自上而下视图中从 (0,0) 到 (1,2) 的直线”)。

import numpy as np
import matplotlib.pyplot as plt

def f(x,y):
    return np.sin(10*x)+np.cos(4*y)-np.cos(3*x*y)

x = np.arange(0,1,1e-3)
y = np.arange(0,2,1e-3)

XX,YY = np.meshgrid(x,y)
ZZ = f(XX,YY)

plt.contour(XX,YY,ZZ,levels=[0.])
plt.show()

enter image description here

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...