如何使用matplotlib制作二次形的轮廓?

问题描述 投票:0回答:1

我具有以下二次形式f(x)= x ^ T A x-b ^ T x,我用numpy定义了矩阵A = np.array([4,3], [3,7])b = np.array([3,-7])。所以我们在这里谈论二维,这意味着等高线图将具有x1和x2轴,我希望它们的范围从-4到4。

[我尝试先做u = np.linspace(-4,4,100),然后做x,y=np.meshgrid(u,u),以创建2轴x1和x2,但后来我不知道如何定义函数f(x),如果我做plt.contour(x,y,f),将不起作用,因为仅将x作为参数定义了函数f(x)。

任何想法都将不胜感激。谢谢!

python matplotlib contour
1个回答
0
投票

如果您的变换矩阵A,b看起来像

A = np.array([[4,3], [3,7]])
b = np.array([3,-7])

您的数据看起来像

u = np.linspace(-4,4,100)
x, y = np.meshgrid(u,u)
x.shape

x和y的形状为(100,100)

您可以将f(x)定义为

def f(x):
    return np.dot(np.dot(x.T,A),x) - np.dot(b,x)

然后将形状为(2,N)的任何内容输入到函数f中。不幸的是,我不确定要输入哪个值。但是一个例子是:[(-4:4),(-4:4)]

plt.contour(x, y, f(x[0:2,:]))
© www.soinside.com 2019 - 2024. All rights reserved.