1

我有这个功能:

在此处输入图像描述 我想绘制它,我认为结果是一个周期性函数......

我试过了,但只得到一分:(

x1=-50:0.1:50;
x2=-50:0.1:50;
plot(cos(sqrt(power(x1,2)+power(x2,2)))/(power(x1,2)+power(x2,2)));

我的问题在哪里,正确的方法是什么?
感谢任何帮助。

4

2 回答 2

4

您需要将其绘制为 3-D 曲面。例如,使用surf

[X1, X2] = meshgrid(-5:0.25:5, -5:0.25:5);
F = cos(sqrt(X1 .^ 2 + X2 .^ 2)) ./ (X1 .^ 2 + X2 .^ 2 + 1);
surf(X1, X2, F)

注意两点:

  1. 您忘记了分母中的“+1”。
  2. 为了更好地可视化,我缩小了 x1 和 x2 坐标的范围。

如果黑色边缘看起来很烦人并且似乎使情节混乱,您可以通过禁用该EdgeColor属性来删除边缘线(正如用户 Shai 指出的那样):

surf(X1, X2, F, 'EdgeColor', 'None')

最终结果应如下所示:

在此处输入图像描述

于 2012-12-16T11:09:26.743 回答
2
  1. 这是一个 3d 图,因为有两个输入x1x2. 所以你必须使用plot3(或@EitanT 指出的冲浪,或任何 3d 绘图功能)。

  2. 您现在只绘制对(-50;-50), (-49.9;-49.9),..., (50;50),因为您从两个向量开始,您可能想要涵盖所有组合。因此,使用meshgrid(对于更高的维度,还有ndgrid):

    x1=-50:0.1:50;
    x2=-50:0.1:50;
    [X1, X2] = meshgrid(x1,x2);
    
  3. 您现在使用矩阵运算,通读此链接,您会发现您需要逐元素运算:a.*b代替a*b, etc.power(a,b)已经是逐元素运算(与 相同a.^b),等效矩阵是mpower(a,b)or a^b

    f = cos(sqrt(power(X1,2)+power(X2,2)))./(power(X1,2)+power(X2,2)+1);
    plot3(X1,X2,f);
    
于 2012-12-16T11:10:06.010 回答