当前位置: 首页 > 知识库问答 >
问题:

MATLAB-ODE求解器:无法满足积分容差

萧亦
2023-03-14

我在MATLAB中有一个ode求解器的问题。我使用了所有的ode求解器,如ode23s、ode23、ode15s、ode45等等。我的代码无法计算,因为错误警告:

警告:在t=8.190397E+01时失败。在时间t时,步长不减小到允许的最小值(2.273737E-13)以下,就无法满足积分公差。

我想计算它,请帮助我直接在我的代码。谢谢你。

第一个脚本:

% 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;

谢谢你。

共有1个答案

屈浩波
2023-03-14

您正在对ODE函数的一个极点进行积分。到了极点,每一个解都结束了。极点左右的轨迹不能合并成一个更大的轨迹。

极点是1=mii*c_gama*cos(om*t)的第一个正解t。如果mii*c_gama>=1总有这样的解决方案。

 类似资料:
  • 我正在使用一个僵硬的求解器(ode15s)对一个颂歌系统进行时间积分。它在起作用,但我想加快速度。 方程组以状态空间形式给出: 这里的诀窍部分是强迫函数F,它是高度非线性的,依赖于x和t参数。它利用x参数求解Poisson型二维方程(用有限体积法)。力F与泊松方程解成正比。 用迭代法求解泊松方程需要一个初始条件,我把它设为零()。我想我可以通过提供一个更好的场的初始估计来提高计算速度(一个更好的初

  • 所以,我正在用ODE45在MATLAB中求解一些ODE。它们和代码没有什么特别复杂的,但是每个ODE解决方案需要20-30分钟来获得,我需要获得大约10分钟。(这是一个参数扫描。) 当我坐在那里等待解的到来时,我发现自己希望有一种方法可以在解诗的时候看着解画出来,这样既可以让自己确信正在取得进展,也可以在解似乎有问题的时候结束解。 有没有一种方法从ode45返回当前的(不完整的)解,并在解的时候实

  • 主要内容:计算极限,使用Octave计算极限,验证极限的基本属性,使用Octave验证极限的基本属性,左右边界极限MATLAB提供了解决微分和积分微积分的各种方法,求解任何程度的微分方程和极限计算。可以轻松绘制复杂功能的图形,并通过求解原始功能以及其衍生来检查图形上的最大值,最小值和其他固定点。 本章将介绍微积分问题。在本章中,将讨论预演算法,即计算功能限制和验证限制属性。 在下一章微分中,将计表达式的导数,并找到一个图的局部最大值和最小值。我们还将讨论求解微分方程。 最后,在“整合/集成”一章

  • 我正在使用一个Spark内燃机模型,由于某些原因,我正在使用python对燃烧进行建模。我试着使用颂歌的解算器,但结果完全不符合实际。我发现圆柱体体积的积分是错误的。我已经尝试使用“odeint”和“ode”解算器,但结果是一样的。代码显示体积与θ的导数,并进行积分以找到体积。我把分析方程式拿来比较。 OBS:我在使用Matlab时也遇到过类似的问题,但当我尝试在三角函数中使用度时就遇到了。当我改