math.js 홈페이지의 미분 방정식을 풀 때 한 가지 예가 있지만 상당히 복잡하며 개인적으로 수학을 적용하기에 충분한 정보를 제공하지 못합니다. js와 비슷한 문제가 있습니다. 그래서 내가하려는 것은 Lotka–Volterra equations for predator-prey simulation을 해결하는 것입니다. 이 방정식이 시스템에 있습니다, 그러나 http://mathjs.org/examples/browser/rocket_trajectory_optimization.html.htmlmath.js로 Lotka-Volterra 방정식을 풀다
function ndsolve(f, x0, dt, tmax) {
var n = f.size()[0]; // Number of variables
var x = x0.clone(); // Current values of variables
var dxdt = []; // Temporary variable to hold time-derivatives
var result = []; // Contains entire solution
var nsteps = math.divide(tmax, dt); // Number of time steps
for(var i=0; i<nsteps; i++) {
// Compute derivatives
for(var j=0; j<n; j++) {
dxdt[j] = f.get([j]).apply(null, x.toArray());
}
// Euler method to compute next time step
for(var j=0; j<n; j++) {
console.log(x.get([j]));
console.log(dt);
x.set([j], math.add(x.get([j]), math.multiply(dxdt[j], dt)));
}
result.push(x.clone());
}
return math.matrix(result);
}
:
dx/dt = ax - bxy
dy/dt = cxy - y
가 math.js이를 Enconding, 나는
ndsolve
이 로켓 궤적 예에서입니다
math.import({ndsolve:ndsolve});
const sim2 = math.parser();
sim2.eval("dxdt(x, y) = x - x * y");
sim2.eval("dydt(x, y) = x * y - y");
sim2.eval("dt = 1.0 s"); // Simulation timestep
sim2.eval("x0 = 0");
sim2.eval("y0 = 0");
sim2.eval("tfinal = 100 s"); // Simulation duration
sim2.eval("result_stage1 = ndsolve([dxdt, dydt], [x0, y0], dt, tfinal)");
있어 이 코드를 실행하면 오류가 발생합니다.
함수 인수의예기치 않은 유형 (예상 : 숫자 또는 단지 또는 BigNumber 또는 분수, 실제 : 단위, 인덱스 : 1)를 추가
이 오류의 원인은 무엇입니까? 정확한 단위가 누락 되었습니까?
도움에 감사드립니다.
콘솔 로그의 내용은 무엇입니까? 또한 표현식의 다른 피연산자를 기록 할 수 있습니까? 테스트/가짜 가설 :'x.get'은 배열이 인수로 주어진다면 배열을 반환합니다. – LutzL
콘솔 로그의 @LutzL 그림 : https://snag.gy/J3aXUV.jpg –
내 구현에서 유닛을 전혀 정의하지 않았기 때문에 이것이 단위 문제라는 의혹이 있습니다. –