如何用 Octave 绘制 3 个变量的函数?
How to plot function of 3 variables with Octave?
我是 Octave(和 matlab 相关)的新手。我有一个看起来像这样的函数
我想绘制 g(x,0.5,5) say。
这是我在 Octave 中尝试的方法
我定义了一个匿名函数
f=@(n,x,t) 1./n.*log(n.*pi.*t).*sin(n.*pi.*x);
然后是另一个匿名函数
g=@(m,x,t)x.^2+sum(f([1:m],x,t));
终于定义了
x=-1:0.1:1;
plot(x,g(5,x,0.5))
但是我得到一个错误。这是绘制此函数的正确方法吗?我一定是犯了一个简单的初学者错误?
当您调用 f(n,x,t)
时,您为 n
传递了一个 1×5 向量,为 x
传递了一个 1×21 向量。它们具有不同数量的元素,因此不能逐个元素相乘。但是,您可以重写 f
以容纳每个向量并使用矩阵乘法从 g
执行求和:
f = @(n, x, t) (1./n.*log(n.*pi.*t))*sin(pi.*n(:)*x);
g = @(m, x, t) x.^2 + f(1:m, x, t);
现在你的情节可以奏效了:
x = -1:0.1:1;
plot(x, g(5, x, 0.5));
我是 Octave(和 matlab 相关)的新手。我有一个看起来像这样的函数
我想绘制 g(x,0.5,5) say。
这是我在 Octave 中尝试的方法
我定义了一个匿名函数
f=@(n,x,t) 1./n.*log(n.*pi.*t).*sin(n.*pi.*x);
然后是另一个匿名函数
g=@(m,x,t)x.^2+sum(f([1:m],x,t));
终于定义了
x=-1:0.1:1;
plot(x,g(5,x,0.5))
但是我得到一个错误。这是绘制此函数的正确方法吗?我一定是犯了一个简单的初学者错误?
当您调用 f(n,x,t)
时,您为 n
传递了一个 1×5 向量,为 x
传递了一个 1×21 向量。它们具有不同数量的元素,因此不能逐个元素相乘。但是,您可以重写 f
以容纳每个向量并使用矩阵乘法从 g
执行求和:
f = @(n, x, t) (1./n.*log(n.*pi.*t))*sin(pi.*n(:)*x);
g = @(m, x, t) x.^2 + f(1:m, x, t);
现在你的情节可以奏效了:
x = -1:0.1:1;
plot(x, g(5, x, 0.5));