八度 - 求解方程并用值创建矩阵

时间:2015-11-17 11:00:54

标签: matrix octave

早上好......

我需要在Octave中写一个函数y = interval(a)。该函数需要创建一个维数为n x 2的矩阵y。每一行必须包含ymin和ymax乘以pi / 2.

x中的间隔是:

x = 0:.1:25;

输出矩阵的公式必须是:

cos(x) = exp(a*x)-1

a的值将在函数的参数中给出 - >间隔(4)

到目前为止,我已经完成了所有工作。这件事让我很困惑,因为我试图使八度计算cos(x)= exp(a * x)-1然后用ymin和ymax创建矩阵nx 2,每行乘以pi / 2而不能做到这一点。

这是我的尝试:

function [y] = interval(a)
y = 0:.1:25;
h = @(y) cos(y);
g = @(y) exp(a*y)-1;
c = pi/2;
y = [h(y),g(y)];
interval = [y'];
end

任何解决方案......

编辑 - >在Nick J评论消息之后的新代码:

function [X] = intervalos(a)

% limpar a memoria de todas as vars e funções
clear functions;

% limpa consola
clc;

% intervalo para x
x = 0:.1:25;
% ambas as funções h(x) e g(x)
h = @(x) cos(x);
g = @(x) exp(a*x)-1;
% multiplicador
c = pi/2;
% saída
xh = [h(x)*c];
xg = [g(x)*c];
fprintf('Matrix X:\n');
X = [xh', xg'];

% limpar a memoria de todas as vars e funções
clear functions;

endfunction

1 个答案:

答案 0 :(得分:1)

您似乎误解了如何将值返回给函数。函数的最后一行interval = [y'];没有用处。该函数将返回您分配给y的最后一个值。 interval只是你调用函数的名称,它不是函数中的变量。

另外,您要注意y向量的方向和h&的输出。 g。目前,y被创建为行向量。然后,当您执行y = [h, g]时,它会创建一个非常长的行向量,其值为h,后跟g的值。相反,您应该先将hg作为列向量,然后再将它们放入y,或者在赋值给{y = [h(y)',g(y)']之前)。

所有这一切,我仍然不完全清楚,如果你正在做的事情将使用x产生你想要的输出。也许您可以提供一个非常简单的示例,表示您认为输出对于小输入应该是什么样子。或者更简单地说,你所写的内容将在Matlab / Octave中运行,但我不能说出你首先要寻找的数学输出。

另外,我并不认为函数中有clear functions语句的真正需要。这些函数中的任何一个都是在interval函数的本地创建的,并且在函数运行后不再存在。

编辑:好的,看起来你已经修复了返回值,所以现在函数将返回X的最后一个定义,并且这将是一个n x 2矩阵。

编辑:现在它更清楚了你想要作为输出获得什么。您正在尝试为x生成一个矩阵,其中包含该等式的左侧和右侧的值。在y以任何方式出现在其中没有y的等式之前,这一点尚不清楚。可能更清楚地说明您正在寻找生成矩阵 [cos(x)*pi/2,exp(a*x-1)*pi/2] 因为你上面写的等式根本没有进入过程。

此时,您的功能可能只是:

function output_matrix = interval(a)
  x = [1:.1:25]';
  output_matrix = [cos(x),(exp(a*x)-1)]*pi/2;
endfunction