Scilab:在 3D 中绘制 2 个变量的函数

Scilab: draw a function of 2 variables in 3D

拜托,我尝试了很多方法在 Scilab 中以 3D 方式绘制函数 f(x,y)=(x*y)/(x^2 + y^2) 但我做不到。 我当前的代码:

clearglobal
funcprot(0)
function z=f(x,y)
    f(x,y)=(x*y)/(x^2 + y^2)
    x=-10:10
    y=-10:10
    disp([(x,y),z])
endfunction
plot3d(z)

当前错误:

plot3d: Wrong size for input argument #1.

非常感谢任何帮助。

你的代码有两个大错误。

你的函数定义有误。

定义函数的语法是:

function    output = function_name(arguments)
    //computations go here
    output = ...(something)...
endfuncfion

然后你可以这样调用它:var_A = function_name(2),当参数为 2 时,var_A 将存储 function_name() 的输出。

你的函数应该像这样正确定义:

function z = f(x,y)
    z = (x*y)/(x^2 + y^2)
endfunction

您不应该像在 f() 中的 x=-10:10y=-10:10 中那样在 f() 中重新定义 xy。其实你可以做到,但我想这不是你想要的。

您必须为 plot3d()

提供实际值

当您将 f() 的输出命名为 z 时,并不意味着您已经有了 z 值。这也不意味着名为 z 的变量已经存在。按照您的代码的方式,您正在调用 plot3d() 使用不存在的变量作为其参数。

一旦您 运行 代码,输出的名称就无关紧要了。记住我上面给出的 var_A 的例子:你需要编写一个代码 运行 函数并创建一个名为 z 的变量来存储你想要的值。

也许您认为如果在 f() 的实现中为 xy 赋值,z 值将自动计算,但事实并非如此编程语言通常是如何工作的。


现在,在修正你的 f() 之后,你可以制作一个真实的曲面图:

  1. 定义 xy 的值。应该是向量(列或行矩阵)。
  2. 对每个可能的对 (x,y) 使用循环 运行 f()。此循环的结果将是一个 m-by-n 矩阵,其中 mxn 的长度,y;
  3. 呼叫plot3d(x,y,z)。请注意,您也确实通过了 xy,而不仅仅是 z.

这个完整的代码应该可以工作:

function z=f(x,y)
    z=(x*y)/(x^2 + y^2);
endfunction

x = -10:10;
y = -10:10;

for i = 1 : length(x)
    for j = 1 : length(y)
        z(i,j) = f(x(i), y(j)); 
    end
end

plot3d(x,y,z);

图形输出为: