常微分(ODE)方程的数值求解器有:非刚性求解器(计算的精度从低到高)ode23,ode45,ode113,刚性方程求解器(适用的刚性从弱到强) ode15s,ode23s,ode23t,ode23tb,隐方程求解器ode15i
所谓刚性方程,就是指它的解的曲线有剧烈的或缓慢的变化。如van der Pol方程(教材p144例4)就是一个刚性方程
Ode求解器默认的相对误差是1e-3,绝对误差是1e-6,要改变默认的精度设置,可以用odeset来设定Options。具体设置方法,求助于help功能。Ode求解器中可以求解带有参数的微分方程。
常用的精度设置如
Options=odeset(‘RelTol’, 1e-5,’AbsTol’, [1e-8, 1e-7]);
其中绝对误差可以对每个未知函数的分量分别规定,写成一个向量,维数等于方程的维数。如对各分量的绝对误差设置相同则只须写一个标量误差。
每一积分步第i个分量的误差满足e(i) <= max(RelTolabs(y(i)),AbsTol(i))
如果只要对解的范数作误差控制,而不需对解的每个分量作误差控制,则在Options中可以加上选项’NormControl’, ‘on’ 这时每一积分步误差的范数满足norm(e) <= max(RelTolnorm(y),AbsTol) 这个选项对那些解的范数会等于零的方程特别有用,不用此选项时,为了要达到苛刻的误差要求,步长会取得很小,将大大减慢求解过程以致求解失败
时滞是常数的时滞常微分方程DDE的数值求解器有dde23,要改变默认的设置,可以用ddeset来设定。
常微分方程求解器的options还可以设置一个有用的功能,语法是
Options=odeset( 'Events',@EVENTS);(Options可以是自定义名,其中各种设置如精度设置可以写在一起,用逗号分开),用ode45求解时,可用格式
[TOUT,YOUT,TE,YE,IE] = ode45(@ODEFUN,TSPAN,Y0,Options, P)
在odeset中设置了一个事件函数@EVENTS,是自编m函数,函数名自定。函数的格式是
[VALUE,ISTERMINAL,DIRECTION] = EVENTS(T,Y,P)
事件函数的输入是和微分方程的函数输入相同,顺序相同 事件函数的输出是3个列向量 例如 [VALUE,ISTERMINAL,DIRECTION],名称自定,列向量的维数是事件的个数,VALUE(I) 是事件函数的第I个分量表达式的值, ISTERMINAL(I)=1表示事件函数的第I个分量的值等于零时积分终止,不然等于0 , DIRECTION(I)=0 表示要计算事件函数的第I个分量的所有的零点 (默认), +1 仅计算事件函数第I个分量在零点递增的零点 -1仅计算事件函数的第I个分量在零点递减的零点
TSPAN是微分方程求解区间,例如可用 [0 pi]表示,也可以指定TOUT为求解区间中的一些点列,如TSPAN=0: 01: 32; Y0是微分方程初值问题中的初值,如Y0=[0 0];
TOUT是微分方程求解区间TSPAN中的时间点列,YOUT是时间点列TOUT上方程解的值,是矩阵形式,列数等于方程的维数,TOUT(:,J)是解的第J个分量在时间点列TOUT上的向量值。 TE是列向量,是事件发生的时刻序列 YE的各行向量是事件发生各时刻方程的解的向量值, IE表示在TE时刻发生的事件在事件函数中的序号
在MATLAB中,可以通过创建一个以m为文件扩展名的脚本文件来编写程序。下面是一个简单的例子,展示了如何编写一个名为roadm的MATLAB程序:
打开MATLAB编辑器或任何文本编辑器。
创建一个新文件,并将其命名为roadm,确保文件扩展名为m。
在roadm文件中输入以下MATLAB代码:
% roadm - 一个简单的MATLAB程序示例% 清空命令窗口和工作空间
clc;
clear;
% 输入用户姓名
name = input('请输入您的姓名: ', 's');
% 输出欢迎消息
fprintf('欢迎来到MATLAB的世界, %s!\n', name);
% 计算两个数的和
a = input('请输入第一个数: ');
b = input('请输入第二个数: ');
sum = a + b;
% 输出计算结果
fprintf('两个数的和是: %d\n', sum);
以上代码演示了一个简单的MATLAB程序,其中包含了输入、输出和简单的计算 *** 作。程序首先清空了命令窗口和工作空间,然后通过input函数获取用户输入的姓名和两个数,通过fprintf函数输出欢迎消息和计算结果。
注意:MATLAB中的注释使用%符号,用于注释掉代码中的一行或多行。注释可以帮助解释代码的作用和功能。
保存roadm文件后,您可以在MATLAB命令窗口中运行这个程序,通过输入road命令即可执行。程序会提示您输入姓名和两个数,然后输出欢迎消息和计算结果。您可以根据自己的需求和逻辑在roadm文件中编写更复杂的MATLAB程序。
以上就是关于高手帮忙~~~帮忙分析一段MATLAB程序~~~~高加分!!!全部的内容,包括:高手帮忙~~~帮忙分析一段MATLAB程序~~~~高加分!!!、MATLAB如何编写road.m程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)