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:10
和 y=-10:10
中那样在 f()
中重新定义 x
和 y
。其实你可以做到,但我想这不是你想要的。
您必须为 plot3d()
提供实际值
当您将 f()
的输出命名为 z
时,并不意味着您已经有了 z
值。这也不意味着名为 z
的变量已经存在。按照您的代码的方式,您正在调用 plot3d()
使用不存在的变量作为其参数。
一旦您 运行 代码,输出的名称就无关紧要了。记住我上面给出的 var_A
的例子:你需要编写一个代码 运行 函数并创建一个名为 z
的变量来存储你想要的值。
也许您认为如果在 f()
的实现中为 x
和 y
赋值,z
值将自动计算,但事实并非如此编程语言通常是如何工作的。
现在,在修正你的 f()
之后,你可以制作一个真实的曲面图:
- 定义
x
和 y
的值。应该是向量(列或行矩阵)。
- 对每个可能的对 (x,y) 使用循环 运行
f()
。此循环的结果将是一个 m
-by-n
矩阵,其中 m
是 x
和 n
的长度,y
;
- 呼叫
plot3d(x,y,z)
。请注意,您也确实通过了 x
和 y
,而不仅仅是 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);
图形输出为:
拜托,我尝试了很多方法在 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:10
和 y=-10:10
中那样在 f()
中重新定义 x
和 y
。其实你可以做到,但我想这不是你想要的。
您必须为 plot3d()
提供实际值
当您将 f()
的输出命名为 z
时,并不意味着您已经有了 z
值。这也不意味着名为 z
的变量已经存在。按照您的代码的方式,您正在调用 plot3d()
使用不存在的变量作为其参数。
一旦您 运行 代码,输出的名称就无关紧要了。记住我上面给出的 var_A
的例子:你需要编写一个代码 运行 函数并创建一个名为 z
的变量来存储你想要的值。
也许您认为如果在 f()
的实现中为 x
和 y
赋值,z
值将自动计算,但事实并非如此编程语言通常是如何工作的。
现在,在修正你的 f()
之后,你可以制作一个真实的曲面图:
- 定义
x
和y
的值。应该是向量(列或行矩阵)。 - 对每个可能的对 (x,y) 使用循环 运行
f()
。此循环的结果将是一个m
-by-n
矩阵,其中m
是x
和n
的长度,y
; - 呼叫
plot3d(x,y,z)
。请注意,您也确实通过了x
和y
,而不仅仅是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);
图形输出为: