matlab中solver函数_Simulink求解器(Solver)相关知识

更多精彩内容参见专业MATLAB技术交流平台——MATLAB技术论坛http://www.matlabsky.com

1.变步长(Variable—Step)求解器

可以选择的变步长求解器有:ode45,ode23,ode113,odel5s,ode23s和discret.缺省情况下,具有状态的系统用的是ode45;没有状态的系统用的是discrete.

1)ode45基于显式Runge—Kutta(4,5)公式,Dormand—Prince对.它是—个单步求解器(solver)。也就是说它在计算y(tn)时,仅仅利用前一步的计算结果y(tn-1).对于大多数问题.在第一次仿真时、可用ode45试一下.

2)ode23是基于显式Runge—Kutta(2,3).Bogackt和Shampine对.对于宽误差容限和存在轻微刚性的系统、它比ode45更有效一些.ode23也是单步求解器.

3)odell3是变阶Adams-Bashforth—Moulton

PECE求解器.在误差容限比较严时,它比ode45更有效.odell3是一个多步求解器,即为了计算当前的结果y(tn),不仅要知道前一步结果y(tn-1),还要知道前几步的结果y(tn-2),y(tn-3),…;

4)odel5s是基于数值微分公式(NDFs)的变阶求解器.它与后向微分公式BDFs(也叫Gear方法)有联系.但比它更有效.ode15s是一个多步求解器,如果认为一个问题是刚性的,或者在用ode45s时仿真失败或不够有效时,可以试试odel5s。

odel5s是基于一到五阶的NDF公式的求解器.尽管公式的阶数越高结果越精确,但稳定性会差一些.如果模型是刚性的,并且要求有比较好的稳定性,应将最大的阶数减小到2.选择odel5s求解器时,对话框中会显示这一参数.

可以用ode23求解器代替。del5s,ode23是定步长、低阶求解器.

5)ode23s是基于一个2阶改进的Rosenbrock公式.因为它是一个单步求解器,所以对于宽误差容限,它比odel5s更有效.对于一些用odel5s不是很有效的刚性问题,可以用它解决.

6)ode23t是使用“自由”内插式梯形规则来实现的.如果问题是适度刚性,而且需要没有数字阻尼的结果,可采用该求解器.

7)ode23tb是使用TR—BDF2来实现的,即基于隐式Runge—Kutta公式,其第一级是梯形规则步长和第二级是二阶反向微分公式.两级计

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB,可以使用PDE工具箱的 `poisson_solver` 函数求解Poisson方程。下面是一个简单的示例: ```matlab % 定义Poisson方程及边界条件 pde = struct('c',1,'f',0,'a',0,'d',@(x)(x.^2),'g',@(x)(x.^2)); geometry = @(x) (x-0.5).^2; mesh_size = 0.05; boundary_condition = struct('dirichlet',@sin,'neumann',0); % 使用poisson_solver函数求解Poisson方程 model = createpde(); geometryFromEdges(model,geometry); generateMesh(model,'Hmax',mesh_size); specifyCoefficients(model,'m',0,'d',pde.d,'c',pde.c,'a',pde.a,'f',pde.f); applyBoundaryCondition(model,'dirichlet','Edge',1:model.Geometry.NumEdges,'u',boundary_condition.dirichlet); applyBoundaryCondition(model,'neumann','Edge',[],'g',boundary_condition.neumann); results = solvepde(model); % 可视化结果 u = results.NodalSolution; pdeplot(model,'XYData',u,'Contour','on'); title('Poisson方程解'); ``` 这段代码利用 `poisson_solver` 函数求解了一个简单的Poisson方程,其 `pde` 结构体定义了方程的系数和边界条件,`geometry` 函数定义了计算区域,`mesh_size` 定义了网格大小,`boundary_condition` 结构体定义了边界条件。 `createpde` 函数创建了一个偏微分方程模型,`geometryFromEdges` 函数定义了计算区域的几何形状,`generateMesh` 函数生成了网格,`specifyCoefficients` 函数定义了偏微分方程的系数,`applyBoundaryCondition` 函数定义了边界条件,最后使用 `solvepde` 函数求解Poisson方程。最后,使用 `pdeplot` 函数可视化结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值