odeFunction
符号表达式转换为函数处理解决的颂歌
描述
例子
创建函数处理解决歌唱和解决拓扑
象征性的微分代数方程组转换为函数处理适合MATLAB解决歌唱。然后解决系统使用ode15s
解算器。
创建以下二阶微分代数方程。
信谊y (t);eqn = diff (y (t), t, 2) = = (1 y (t) ^ 2) * diff (y (t), t) - y (t);
使用reduceDifferentialOrder
重写方程作为一个系统的两个一阶微分方程。在这里,var
是一个向量的状态变量的系统。新变量Dy (t)
代表的一阶导数y (t)
关于t
。
(方程式一样,var) = reduceDifferentialOrder (eqn, y (t))
方程式= diff (Dyt (t), t) + y (t) + Dyt (t) * (y (t) ^ 2 - 1) Dyt (t) - diff (y (t), t) var = y (t) Dyt (t)
设置初始条件y (t)
和它的导数Dy (t)
来2
和0
分别。
initConditions = [2 0];
找到质量矩阵米
系统和两侧的方程F
。
[M F] = massMatrixForm(方程式一样,var)
M = [0, 1] (1,0) F = - y (t) Dyt (t) * (y (t) ^ 2 - 1) -Dyt (t)
米
和F
指的是形式
。进一步简化计算,重写系统的形式
。
f = M \ f
f = Dyt (t) - Dyt (t) * (t) ^ 2 - y (t) + Dyt (t)
转换f
通过使用MATLAB函数处理odeFunction
。生成的函数处理输入MATLAB ODE求解器进行求解ode15s
。
odefun = odeFunction (f, var);ode15s ([0 10], odefun initConditions)
系统包含符号参数的函数处理
转换一个系统包含状态变量和符号的符号微分方程参数的函数处理适合MATLAB解决歌唱。
创建微分代数方程组。在这里,符号功能x1 (t)
和x2 (t)
表示系统的状态变量。该系统还包含常数具有象征意义的参数一个
,b
和函数的参数r (t)
。这些参数并不代表状态变量。指定两个符号向量方程和状态变量:方程象征性的向量方程和变量的向量符号函数调用。
信谊x1 (t) x2 (t) b r (t)方程式= [diff (x1 (t), t) = = * x1 (t) + b * x2 (t) ^ 2,…x1 (t) ^ 2 + x2 (t) ^ 2 = = r (t) ^ 2);var = (x1 (t) x2 (t));
找到质量矩阵米
和右边的向量F
对于这个系统。米
和F
指的是形式
。
[M F] = massMatrixForm(方程式一样,var)
M = (1,0) (0,0) F = b * x2 (t) ^ 2 + * x1 (t) r (t) ^ 2 - x1 (t) ^ 2 x2 (t) ^ 2
使用odeFunction
生成MATLAB函数处理米
和F
。函数处理F
包含象征意义的参数。
M = odeFunction (M, var) F = odeFunction (F, var, a、b r (t))
M = function_handle价值:@ (t, in2)重塑((1.0,0.0,0.0,0.0),(2,2))与价值:F = function_handle @ (t in2 param1、param2 param3) [param1。* in2 (1:) +…:param2。* in2 (2)。^ 2; param3。^ 2-in2 (1:)。^ 2-in2 (2:) ^ 2]。
指定参数值。
一个= -0.6;b = -0.1;r = @ (t) cost / (1 + t ^ 2);
创建函数处理F
。
F = @ (t, Y) F (t, Y, a、b r (t));
指定初始条件DAE系统一致。
t0 = 0;y0 = (- r (t0) * sin (0.1);r (t0) * cos (0.1)];yp0 = [* y0 (1) + b * y0 (2) ^ 2;1.234);
创建一个选项设置包含质量矩阵米
的系统和向量yp0
初始条件的衍生品。
选择= odeset(“质量”,M, InitialSlope, yp0);
现在,使用ode15s
解决方程组。
ode15s (F [t0, 1], y0,选择)
编写函数处理文件与评论
编写生成的函数处理文件使用文件
选择。在编写文件时,odeFunction
优化代码使用中间变量命名t0
,t1
、。…包括评论通过指定的文件评论
选择。
定义微分方程组。找到质量矩阵米
和右边F
。
信谊x (t) y (t)方程式= [diff (x (t) t) + 2 * diff (y (t), t) = = 0.1 * y (t)……x (t) - y (t) = = cos (-0.2 t) * t * sin (x (t)));var = (x (t) y (t));[M F] = massMatrixForm(方程式一样,var);
编写的MATLAB代码米
和F
的文件myfileM
和myfileF
。odeFunction
覆盖现有的文件。包括发表评论版本:1.1
的文件可以打开和编辑输出文件。
M = odeFunction (M, var,‘文件’,‘myfileM’,‘评论’,版本:1.1);
expr函数= myfileM (t, in2) % myfileM % expr = myfileM (t, in2) %这个函数生成的符号数学工具箱7.3版。% 01 - 1月- 2017就是%版本:1.1 expr =重塑((1.0,0.0,2.0,0.0),(2,2));
F = odeFunction (F, var,‘文件’,‘myfileF’,‘评论’,版本:1.1);
expr函数= myfileF (t, in2) % myfileF % expr = myfileF (t, in2) %这个函数生成的符号数学工具箱7.3版。% 01 - 1月- 2017就是%版本:1.1 x = in2 (1:);:y = in2 (2);expr = [y。* (1.0. / 1.0 e1); - x + y + cos (t) - t . * sin (x) * (1.0. / 5.0)];
指定初始值一致x (t)
和y (t)
及其一阶导数。
xy0 = [2;1);% x (t)和y (t) xyp0 = 0;0.05 * xy0 (2)];%的导数x (t)和y (t)
创建一个选项设置包含质量矩阵米
,初始条件xyp0
,数值公差数值搜索。
选择= odeset(“质量”,M, RelTol, 10 ^ (6),…“AbsTol”, 10 ^ (6), InitialSlope, xyp0);
解决方程组用ode15s
。
ode15s (F [0 7] xy0,选择)
稀疏矩阵
使用名称-值对的论点‘稀疏’,真的
当将稀疏矩阵符号转换为MATLAB函数处理。
创建微分代数方程组。在这里,符号功能x1 (t)
和x2 (t)
表示系统的状态变量。指定两个符号向量方程和状态变量:方程象征性的向量方程和变量的向量符号函数调用。
信谊x1 (t) x2 (t) = -0.6;b = -0.1;r = @ (t) cost / (1 + t ^ 2);方程式= [diff (x1 (t), t) = = * x1 (t) + b * x2 (t) ^ 2,…x1 (t) ^ 2 + x2 (t) ^ 2 = = r (t) ^ 2);var = (x1 (t) x2 (t));
找到质量矩阵米
和右边的向量F
对于这个系统。米
和F
指的是形式
。
[M F] = massMatrixForm(方程式一样,var)
M = (1,0) (0,0) F = - (3 * x1 (t)) / 5 - x2 (t) ^ 2/10 cos (t) ^ 2 / (t ^ 2 + 1) ^ 2 - x1 (t) ^ 2 x2 (t) ^ 2
生成MATLAB函数处理米
和F
。因为大多数的质量矩阵的元素米
是零,使用稀疏的
参数转换时米
。
M = odeFunction (M, var,‘稀疏’,真的)F = odeFunction (F, var)
M = function_handle价值:@ (t, in2)稀疏([1],[1],[1.0],2,2)F = function_handle价值:@ (t, in2) [in2 (1:)。* (3.0. / 5.0) in2 (2:)。^ 2./1.0 e + 1,……cost。^ 2。* 1.0. / (t ^ 2 + 1.0)。^ 2-in2 (1:)。^ 2-in2 (2:) ^ 2]。
指定初始条件DAE系统一致。
t0 = 0;y0 = (- r (t0) * sin (0.1);r (t0) * cos (0.1)];yp0 = [* y0 (1) + b * y0 (2) ^ 2;1.234);
创建一个选项设置包含质量矩阵米
的系统和向量yp0
初始条件的衍生品。
选择= odeset(“质量”,M, InitialSlope, yp0);
解决方程组使用ode15s
。
ode15s (F [t0, 1], y0,选择)
输入参数
expr
- - - - - -系统的代数表达式
矢量符号表达式的
系统的代数表达式,指定为一个向量符号表达式。
var
- - - - - -状态变量
向量的符号函数|向量的符号函数调用
状态变量,指定为一个向量的符号函数或函数调用,如x (t)
。
例子:[x (t), y (t))
或[x (t); y (t))
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:odeFunction (expr一样,var,“文件”,“myfile”)
评论
- - - - - -评论在文件头
特征向量|单元阵列的特征向量|字符串向量
评论中包含文件头,指定为一个特征向量,单元阵列的特征向量,或字符串向量。
文件
- - - - - -包含生成的代码路径文件
特征向量
包含生成的代码的文件路径,指定为一个特征向量。生成的文件接受参数的类型双
,可以使用符号数学工具箱™。如果该值为空,odeFunction
生成一个匿名函数。如果字符向量不结束。m
,函数附加。m
。
默认情况下,odeFunction
与文件
参数包含优化代码生成一个文件。优化意味着中间变量简化和加速代码的自动生成。MATLAB生成中间变量作为一个小写字母t
例如,紧随其后的是一个自动生成的数字t32
。禁用代码优化,使用优化
论点。
优化
- - - - - -国旗防止优化函数文件编写的代码
真正的
(默认)|假
国旗防止优化函数编写的代码文件,指定为假
或真正的
。
默认情况下,odeFunction
与文件
参数包含优化代码生成一个文件。优化意味着中间变量简化和加速代码的自动生成。MATLAB生成中间变量作为一个小写字母t
例如,紧随其后的是一个自动生成的数字t32
。
odeFunction
没有文件
参数(或指定文件路径由一个空字符向量)创建一个函数处理。在这种情况下,代码没有优化。如果您试图执行代码优化设置优化
来真正的
,然后odeFunction
抛出一个错误。
稀疏的
- - - - - -国旗交换机之间的稀疏和稠密矩阵生成
假
(默认)|真正的
国旗稀疏和稠密矩阵生成之间的切换,指定为真正的
或假
。当你指定‘稀疏’,真的
,生成的函数符号矩阵的稀疏表示数值矩阵。使用‘稀疏’,真的
当你转换符号矩阵包含许多零元素。通常,稀疏矩阵的操作的效率比相同的密度矩阵的操作。看到稀疏矩阵。
输出参数
f
——函数处理输入数值MATLAB解决颂歌,除了ode15i
MATLAB函数处理
函数处理,可以作为输入参数数值MATLAB解决颂歌,除了ode15i
,作为一个MATLAB函数返回处理。
odeFunction
返回一个函数处理等解决适合ODE数值
,ode15s
,ode23t
等等。唯一的ODE求解器,不接受这个函数处理是完全隐式的微分方程的解算器,ode15i
。将方程组转换成一个函数处理适合ode15i
,使用daeFunction
。
版本历史
介绍了R2015a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。