Tôi mới với Matlab. Tôi hy vọng bạn có thể giúp tôi. Tôi phải giải quyết một hệ thống ODE sử dụng hàm ODE45. Đây là hàm mô tả phương trình của tôi.Matlab ode45. Làm thế nào để thay đổi một tham số bên trong nó trong khi gọi nó?
function dNdt = rateEquations(t, y)
%populations of corresponding state
Ng = y(1);
Ns = y(2);
Nt = y(3);
%All constants used are dropped for the sake of easy reading.
Lưu ý các tham số F.
%rate equations
dNs = s0 * Ng * F - Ns/ t_S1;
dNt = Ns/t_ISC - Nt/t_T1;
dNg = -dNt - dNs;
dNdt = [dNg; dNs; dNt];
end
Sau đó, trong kịch bản .m file của tôi gọi hàm ode45 trong 'Vòng lặp for'. Trong mỗi lần lặp, tôi phải thay đổi tham số F và chuyển nó vào hàm 'rateEquations' của tôi. Nhưng tôi không biết làm thế nào để nhận ra nó.
for T = Tmin: dt : Tmax
%initial conditions
initialConditions = [N0 0 0];
timeSpan = [T T+dt];
trước khi gọi ODE45 F sẽ được thay đổi.
[t,N] = ode45('rateEquations', timeSpan, initialConditions)
và vân vân ...
end
Cảm ơn trước.
Yeah, nó hoạt động. Cảm ơn rất nhiều. Đó là những gì tôi đang tìm kiếm. :) – jacksonslsmg4
Bạn cũng có thể làm điều này với các biến toàn cục. Nhưng tôi đã cố gắng sử dụng tính toán song song (parfor) và điều đó không giống như các biến toàn cầu. Nhưng điều này không làm việc với parfor. – fibonatic
@Nzbuu, Nếu tôi làm điều này, tôi có cần sử dụng nội suy không? – kyle