【问题标题】:Using contour to plot function使用等高线绘制函数
【发布时间】:2018-10-30 00:05:14
【问题描述】:

我尝试使用轮廓来绘制这个函数

3y + y^3 - x^3 = 5

我尝试了轮廓(3*y+y^3-x^3-5),但它不起作用。

如何使用轮廓来绘制这个函数?

【问题讨论】:

    标签: matlab plot contour


    【解决方案1】:

    x 和 y 是否正确定义为 2x2 矩阵?如果是这样,那么“power”运算符需要在组件方面完成(.^3 而不是 ^3)。

    这行得通:

    [x,y] = meshgrid(-2:.2:2,-2:.2:2);
    contour(3*y+y.^3-x.^3-5)
    

    【讨论】:

    • 不,x 和 y 不只是定义一个函数。我可以使用只有功能的轮廓吗?
    【解决方案2】:

    也许你可以试试fcontour,它会在 x 和 y 的默认区间 [-5 5] 内绘制函数 z = f(x,y) 的等高线。

    f = @(x,y) 3*y + y.^3 - x.^3 - 5;
    fcontour(f)
    

    输出:

    【讨论】:

      【解决方案3】:

      我不相信这可以解决您问题的所有部分,但这是一个开始。如果您绝对希望contour 调用函数,可以将我的示例调整为contour(X,Y,fh(X,Y))

      更好的方法

      fh=@(x,y) 3*y + y.^3 - x.^3 -5;  % <--- This is your function
      x = (-4:.25:4)';
      y = (-2:.25:2)';
      [X,Y] = meshgrid(x,y);
      Z = fh(X,Y);
      contour(X,Y,fh(X,Y))
      

      直接方法(不是首选但有效)
      请注意,Z 被转置以完成这项工作。

      fh=@(x,y) 3*y + y.^3 - x.^3 -5;    % <----this is your function
      X = (-4:.25:4)';
      Y = (-2:.25:2)';
      Z = zeros(length(X),length(Y));
      for i = 1:length(X)
          for j = 1:length(Y)
              xi = X(i);
              yj = Y(j);
              Z(i,j) = fh(xi,yj);
          end
      end
      contour(X,Y,Z','LevelList',-60:10:60,'ShowText','on','LineWidth',1.4)  % Fancied it up a bit
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多