matlab - 完全多元多项式函数图

时间:2015-10-02 04:43:31

标签: matlab polynomials

嗨我有一个与两个变量的完全多项式函数有关的问题。我可以编写代码来计算它的值,但我不知道如何在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> 谢谢你!

1 个答案:

答案 0 :(得分:1)

我将假设您的函数明智地采用值元素。如果没有,请声明一个函数句柄,该句柄接收表示相应维度中的值的变量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);

对于两个维度,这将生成一个介于-10到10之间的(x,y)坐标网格,步长为1.

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

Z = f(X,Y);

现在您已经完成了,请将contour功能与X,YZ一起使用。现在,如果您只想显示f(x,y) = 0的级别,则需要执行以下操作:

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

一般来说,第四个元素采用轮廓级别的向量,但如果你想专门绘制一个级别,那就是你需要做的事情。