MatLab ode45 最小时间步长
MatLab ode45 minimal time step
我正在尝试使用 MatLab 和 ode45 函数求解微分方程。
问题是如何更改最小步长?我想让它变大以避免步子太小。
我试着这样做:
tspan = [3, 4]; (boundaries of time line)
[t, q] = ode45('dqdt2', tspan, q0);
- t - 时间
- q - 找到的解决方案
- dqdt2 - 我的文件具有功能
- q0 - 初始条件
你不能。
在 Matlab 中,不能为可变步长求解器指定最小步长,可能是因为这样做没有多大意义。如果您希望降低解决方案的准确性以加快解决方案的速度,请增加 RelTol
and AbsTol
。随着容差的增加,求解器通常会采取更大的步长,但仍然没有特定的最小步长。
有一种方法可以为 ode45 和其他步长求解器设置步长。当您定义 TSPAN 时,您可以指定一组您想要的解决方案的值。这不会影响求解器采取的内部步骤,但会帮助求解器进行有效的内存管理。您可以查看文档 here (Thanks to edwinksl 以指出它)。
%Your Code
tspan = [3, 4]; %MATLAB here uses the in built step size
%Set Step size. Say you want a step size of 0.1
tspan = 3:0.1:4;
%This will run over only those values of t that are defined by tspan
我正在尝试使用 MatLab 和 ode45 函数求解微分方程。 问题是如何更改最小步长?我想让它变大以避免步子太小。 我试着这样做:
tspan = [3, 4]; (boundaries of time line)
[t, q] = ode45('dqdt2', tspan, q0);
- t - 时间
- q - 找到的解决方案
- dqdt2 - 我的文件具有功能
- q0 - 初始条件
你不能。
在 Matlab 中,不能为可变步长求解器指定最小步长,可能是因为这样做没有多大意义。如果您希望降低解决方案的准确性以加快解决方案的速度,请增加 RelTol
and AbsTol
。随着容差的增加,求解器通常会采取更大的步长,但仍然没有特定的最小步长。
有一种方法可以为 ode45 和其他步长求解器设置步长。当您定义 TSPAN 时,您可以指定一组您想要的解决方案的值。这不会影响求解器采取的内部步骤,但会帮助求解器进行有效的内存管理。您可以查看文档 here (Thanks to edwinksl 以指出它)。
%Your Code
tspan = [3, 4]; %MATLAB here uses the in built step size
%Set Step size. Say you want a step size of 0.1
tspan = 3:0.1:4;
%This will run over only those values of t that are defined by tspan