matlab - 全多元多项式函数图

matlab - Full Multivariate polynomial function plot

嗨,我有一个与两个变量的完整多项式函数相关的问题。我可以编写代码来计算它的值,但我不知道如何在 0 级绘制轮廓。例如:给定一个完整的 5 阶多项式

f(x,y) = theta1 + theta2*x + theta3*y + theta4*x*y + theta5*x^2 + theta6*y^2 + ... + theta20*x^5 + theta21*y^5

我已经编写了给定 theta、x 和 y 来计算 f(x,y) 的代码,但是如何绘制此函数

theta1 + theta2*x + theta3*y + theta4*x*y + theta5*x^2 + theta6*y^2 + ... + theta20*x^5 + theta21*y^5 = 0 ?

谢谢!

我将假设您的函数采用元素明智的值。如果不是,则声明一个函数句柄,该函数句柄接收代表这些相应维度中的值的变量 xy

f = @(x,y) theta1 + theta2*x + theta3*y + theta5*x.^2 + theta6*y.^2 + ... + theta24*x.^5 + theta25*y.^5;

(....你需要那么多 theta 值吗?)。接下来,生成您希望绘制的 xy 坐标域。您可以使用 meshgrid:

[X,Y] = meshgrid(-10:0.01:10);

这会为两个维度生成一个 (x,y) 坐标在 -10 到 10 之间的网格,步长为 1。

现在,使用上述函数生成您的 Z 坐标:

Z = f(X,Y);

现在您终于完成了,将 contour 函数与 X,YZ 一起使用。现在,如果您只想显示 f(x,y) = 0 所在的级别,您特别需要这样做:

contour(X,Y,Z,[0 0]);

一般来说,第四个元素是一个等高线向量,但是如果你想专门画一个等高线,那就是你需要做的。