You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Octave运行欧拉法代码报T(1.2)下标需为整数或逻辑值问题求解

问题原因排查

报错T(1.2): subscripts must be either integers 1 to (2^63)-1 or logic的核心是数组下标使用错误,同时你的代码还存在函数结构逻辑问题,具体问题如下:

  • 循环内T(i+h) = T(i) + h;写法错误:i是循环计数整数,h是步长(你的案例中h=0.2),i+h是小数,不符合Octave数组索引必须为正整数或逻辑值的规则,正确下标应和Y数组一致用i+1
  • 测试调用代码写在了euler函数的定义内部:函数定义结束后才能放测试执行代码,放在内部会导致执行逻辑混乱,不符合Octave函数定义规则

修复后的完整代码

% 定义微分方程函数
function fxy = fa(x,y)
% fa merupakan fungsi persamaan diferensial
fxy = x^2 - 4*y;
end

% 定义欧拉法求解函数
function [T, Y] = euler(f, a, b, y0, n)
% fungsi EULER penyelesaian numerik persamaan diferensial dengan metode
% Euler explisit
h = (b-a)/n;
Y = zeros(n+1,1);
T = zeros(n+1,1);

%syarat awal
T(1) = a;
Y(1) = y0;

% jalankan sebanyak n langkah
for i = 1:n
    fi = f(T(i), Y(i));
    Y(i+1) = Y(i) +  h*fi;
    % 修复下标错误:用整数i+1作为索引
    T(i+1) = T(i) + h;
end
end

% 测试代码放到函数外部执行
x0 = 0;   % batas bawah/ bayas awal
xm = 1;   % batas atas / batas akhir
y0 = 1;   %syarat batas awal
n = 5;  % banyaknya segmen / langkah

[x,y] = euler(@fa, x0, xm, y0, n);
% 可选:打印结果验证
disp('计算结果(T值,Y值):');
disp([x,y]);

修改后运行不会再报下标错误,会输出6组(n+1)对应的时间步和数值解结果。

内容的提问来源于stack exchange,提问作者439 767_NINDYA KARISSA TK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:09:02