【问题标题】:matlab - Full Multivariate polynomial function plotmatlab - 全多元多项式函数图
【发布时间】:2015-10-02 16:58:35
【问题描述】:

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

谢谢!

【问题讨论】:

  • 您可以尝试ezcontour 并调整caxis 以绘制0 等高线。
  • 对我来说,这似乎更像是一个数学问题而不是编程问题。二维函数与平面(在您的情况下是由 x 和 y 轴定义的平面)的交集可以通过多种方式找到,无论是解析、代数还是数值。

标签: matlab polynomials


【解决方案1】:

我将假设您的函数采用 values 元素。如果不是,请声明一个函数句柄,该函数句柄接受变量 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]);

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

【讨论】:

  • 非常感谢您的回答!是的,我需要所有的theta,因为它应该是一个具有完整项的多项式。我还有另一个问题:我实际上需要绘制阶数从 1 到 5 的完整多项式函数。所以我想编写一个函数来绘制多项式,其输入是它的所需阶数(就像我写的计算它的价值,但我不知道让它绘制图形)。我真的可以这样做吗?如果是,请给我一些提示。
  • 这会很困难,因为您需要知道生成了多少theta 以及给定顺序的实际theta 参数本身,并且必须在创建句柄之前提供这些参数。你不能编写一个匿名函数来做到这一点。
  • 非常感谢。我想除了写下完整的功能之外别无他法。到时见。
猜你喜欢
  • 1970-01-01
  • 2017-10-18
  • 2015-03-22
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多