嗨我有一个与两个变量的完全多项式函数有关的问题。我可以编写代码来计算它的值,但我不知道如何在0级绘制轮廓。例如:给定完整的5阶多项式
f(x,y)= theta1 + theta2 * x + theta3 * y + theta4 * x * y + theta5 * x ^ 2 + theta6 * y ^ 2 + ... + theta20 * x ^ 5 + theta21 * Y 1 5
我已经编写了代码来计算f(x,y)给定theta,x和y但是我如何绘制这个函数
theta1 + theta2 * x + theta3 * y + theta4 * x * y + theta5 * x ^ 2 + theta6 * y ^ 2 + ... + theta20 * x ^ 5 + theta21 * y ^ 5 = 0?< / p> 谢谢你!
答案 0 :(得分:1)
我将假设您的函数明智地采用值元素。如果没有,请声明一个函数句柄,该句柄接收表示相应维度中的值的变量x
和y
:
f = @(x,y) theta1 + theta2*x + theta3*y + theta5*x.^2 + theta6*y.^2 + ... + theta24*x.^5 + theta25*y.^5;
(....你需要拥有那么多theta
个值吗?)。接下来,生成您希望绘制的x
和y
坐标的域。您可以使用meshgrid
:
[X,Y] = meshgrid(-10:0.01:10);
对于两个维度,这将生成一个介于-10到10之间的(x,y)
坐标网格,步长为1.
现在,使用上面的函数生成Z
坐标:
Z = f(X,Y);
现在您已经完成了,请将contour
功能与X,Y
和Z
一起使用。现在,如果您只想显示f(x,y) = 0
的级别,则需要执行以下操作:
contour(X,Y,Z,[0 0]);
一般来说,第四个元素采用轮廓级别的向量,但如果你想专门绘制一个级别,那就是你需要做的事情。