ode45函数文件的输入矩阵
Input matrix to function file of ode45
我有一个代码(需要用户提供大量输入),它会给我一个 n x n 矩阵(比如 A),我必须用它来求解 ODE 系统 X'=AX。如何将此矩阵 A 包含在 ode45 的函数文件(.m 文件)中。如果我在函数文件中包含如下代码:
function xp=g_test(t,x);
k=input('something');
A=some manipulation of inputs;
xp=A*x;
end
Matlab 在每个时间步都要求输入(通常我的问题有 30k 个时间步)。那么如何将矩阵 A 包含/传递给函数?
您可以创建一个函数 returns a function handle:
function odeFcn = makeODE(a,b,c)
A = some_function(a, b, c);
odeFcn = @(t,x) A*x;
end
现在您可以使用输入矩阵 a, b, c
:
调用 ode45
outputVector = ode45(makeODE(a,b,c), [t0, t1], x0);
灵感来源于gnovice的回答here。
我有一个代码(需要用户提供大量输入),它会给我一个 n x n 矩阵(比如 A),我必须用它来求解 ODE 系统 X'=AX。如何将此矩阵 A 包含在 ode45 的函数文件(.m 文件)中。如果我在函数文件中包含如下代码:
function xp=g_test(t,x);
k=input('something');
A=some manipulation of inputs;
xp=A*x;
end
Matlab 在每个时间步都要求输入(通常我的问题有 30k 个时间步)。那么如何将矩阵 A 包含/传递给函数?
您可以创建一个函数 returns a function handle:
function odeFcn = makeODE(a,b,c)
A = some_function(a, b, c);
odeFcn = @(t,x) A*x;
end
现在您可以使用输入矩阵 a, b, c
:
ode45
outputVector = ode45(makeODE(a,b,c), [t0, t1], x0);
灵感来源于gnovice的回答here。