MATLAB- ode 求解器:无法满足集成公差
MATLAB- ode solver: Unable to meet integration tolerances
我在 MATLAB 中使用 ode 求解器 时遇到问题。我使用了 所有 ode 求解器,例如 ode23s、ode23、ode15s、ode45 等等。而且我的代码无法计算,因为错误警告:
Warning: Failure at t=8.190397e+01. Unable to meet integration
tolerances without reducing the step size below the smallest value
allowed (2.273737e-13) at time t.
我想计算一下,请直接在我的代码中帮助我。谢谢。
第一个脚本:
% floq.m
global c_alpha c_beta c_gama om ms ks bs mii
% Parameters
c_alpha=1;
c_beta=1.1;
c_gama=1.1;
ms=1;
ks=1;
D=0.01;
OM=sqrt(ks/ms);
bs=2*D*ms*OM;
% Solver
sourad = 0.1:0.13:10;
for pom = 1:length(sourad)
eta= sqrt(1/sourad(pom));
om=eta*OM;
T=2*pi/(eta*OM);
for mii=-10*(eta^2):0.13:10*(eta^2)
tspan=0:0.01:T;
[tt,x1]=ode23(@fun,tspan,[1; 0]);
end
end
第二个脚本=函数:
% fun.m
function v=fun(tt,x1);
global c_alpha c_beta c_gama om ms ks bs mii
mt=ms*cos(om*tt);
bt=bs*cos(2*om*tt);
kt=ks*cos(2*om*tt);
% Matrix A
A=[(-bs+mii*c_beta*bt)/(ms-mii*c_gama*mt) (-ks+mii*c_alpha*kt)/(ms-mii*c_gama*mt); 1 0];
% Method
v=A*x1;
谢谢。
您正在对 ODE 函数的极点进行积分。在极点,所有解决方案都结束了。极点左右的轨迹不能合并为一个更大的轨迹。
极点是1 = mii*c_gama*cos(om*t)
的第一个正解t
。如果mii*c_gama >= 1
总有这样的解决办法
我在 MATLAB 中使用 ode 求解器 时遇到问题。我使用了 所有 ode 求解器,例如 ode23s、ode23、ode15s、ode45 等等。而且我的代码无法计算,因为错误警告:
Warning: Failure at t=8.190397e+01. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (2.273737e-13) at time t.
我想计算一下,请直接在我的代码中帮助我。谢谢。
第一个脚本:
% floq.m
global c_alpha c_beta c_gama om ms ks bs mii
% Parameters
c_alpha=1;
c_beta=1.1;
c_gama=1.1;
ms=1;
ks=1;
D=0.01;
OM=sqrt(ks/ms);
bs=2*D*ms*OM;
% Solver
sourad = 0.1:0.13:10;
for pom = 1:length(sourad)
eta= sqrt(1/sourad(pom));
om=eta*OM;
T=2*pi/(eta*OM);
for mii=-10*(eta^2):0.13:10*(eta^2)
tspan=0:0.01:T;
[tt,x1]=ode23(@fun,tspan,[1; 0]);
end
end
第二个脚本=函数:
% fun.m
function v=fun(tt,x1);
global c_alpha c_beta c_gama om ms ks bs mii
mt=ms*cos(om*tt);
bt=bs*cos(2*om*tt);
kt=ks*cos(2*om*tt);
% Matrix A
A=[(-bs+mii*c_beta*bt)/(ms-mii*c_gama*mt) (-ks+mii*c_alpha*kt)/(ms-mii*c_gama*mt); 1 0];
% Method
v=A*x1;
谢谢。
您正在对 ODE 函数的极点进行积分。在极点,所有解决方案都结束了。极点左右的轨迹不能合并为一个更大的轨迹。
极点是1 = mii*c_gama*cos(om*t)
的第一个正解t
。如果mii*c_gama >= 1
总有这样的解决办法