Plot 倍频程-2个函数的绘图值
问候, 我有一个关于数字积分的八度脚本问题。 我有3个功能:1计算Heuler积分;第二,计算Heun积分;3rd应在同一窗口中绘制heuler和heun的折线图。 问题是第一个和第二个函数工作得很好,但是第三个函数名为previsao(),无论我做什么,都会抛出错误: A(I,J):列索引越界;值1超出范围0 第124行第7列的previsao 第124行是这样的:plt1=plot(eul(:,x),eul(:,ti),heu(:,x),heu(:,ti)) 这是heuler的代码Plot 倍频程-2个函数的绘图值,plot,charts,octave,Plot,Charts,Octave,问候, 我有一个关于数字积分的八度脚本问题。 我有3个功能:1计算Heuler积分;第二,计算Heun积分;3rd应在同一窗口中绘制heuler和heun的折线图。 问题是第一个和第二个函数工作得很好,但是第三个函数名为previsao(),无论我做什么,都会抛出错误: A(I,J):列索引越界;值1超出范围0 第124行第7列的previsao 第124行是这样的:plt1=plot(eul(:,x),eul(:,ti),heu(:,x),heu(:,ti)) 这是heuler的代码 func
function e = euler(x,ti,tf,h,fDerivada)
xInicial = x;
tInicial = ti;
contador = 0;
% inicia array na posição 1 a 0
x(1) = 0;
t(1) = 0;
while(tInicial <= tf)
% implementa o método de Euler
xFinal = xInicial;
funcao = fDerivada(tInicial, xInicial);
xInicial = xInicial + h * funcao;
% insere valores nos arrays x e t e vai incrementando de posição no array
% vai dar origem à matriz com t e x
x(contador + 1) = xInicial;
t(contador + 1) = tInicial;
tInicial = tInicial + h;
contador++;
endwhile
printf("\n");
disp("Metodo de Euler:");
% escreve a matriz em colunas
[t', x']
%gráfico
plt = plot(x);
set(plt(1),"linewidth",2);
set(plt(1),"color","r");
xlabel("Tempo");
ylabel("Var dependente x");
title("Heuler");
legend("x");
endfunction
非常感谢您提供了一个可能的解决方案……调试此类问题的典型方法是启用“按错误调试”
debug_on_error(1);
再次运行脚本。这一次,它将在previsao中停止,并显示debug>提示符。现在您可以指示“eul”和“heu”,例如,第一步是
size(eul)
size(heu)
x
ti
那么问题就显而易见了。对于未来:请尝试将您的问题剥离到您有问题的关键部分,而不是“这是我的工作区,包含x文件”。如果代码可以复制并粘贴到解释器,而不需要帮助的人可以看到问题,这总是有帮助的。在您的情况下,我必须找出运行函数所需的x、ti、tf、h、fDerivada值
编辑:你的功能
function e = euler(x,ti,tf,h,fDerivada)
不写返回值,所以在这种情况下,显然eul是[],我确信Octave会发出警告,对吗?顺便说一句,你不应该覆盖像e,pi,i这样的内置代码…非常感谢你的提示。正如您所说,我使用了debug命令,并且eul的大小为0;heu的大小=1。我熟悉代码,不知道为什么eul的大小I=0。我认为问题是存在的,因为heu的大小=1(我认为它有值)。那么,为什么eul没有价值呢?
size(eul)
size(heu)
x
ti
function e = euler(x,ti,tf,h,fDerivada)