文档帮助中心
转换符号表达式功能手柄ODE求解
F = odeFunction(表达式,乏)
F = odeFunction(表达式,乏,P1,...,PN)
F = odeFunction(___,名称,值)
例
F= odeFunction(EXPR,瓦尔)符号代数表达式的系统转换为MATLAB®功能句柄。此功能句柄可以被用作输入到数值MATLAB ODE求解器,除了ode15i。这个论点瓦尔指定系统的状态变量。
F= odeFunction(EXPR,瓦尔)
F
EXPR
瓦尔
ode15i
F= odeFunction(EXPR,瓦尔,P1,... ...,PN)指定系统的象征性的参数P1,... ...,PN。
F= odeFunction(EXPR,瓦尔,P1,... ...,PN)
P1,... ...,PN
F= odeFunction(___,名称,值)使用由一个或多个指定的附加选项名称,值对参数。
F= odeFunction(___,名称,值)
名称,值
全部收缩
转换符号微分代数方程的系统为适合于MATLAB ODE求解器的功能句柄。然后通过使用解决系统ode15s求解。
ode15s
创建下面的二阶微分代数方程。
SYMS Y(T);等式= DIFF(Y(t)的,T,2)==(1-γ(t)的^ 2)*的diff(Y(T),T) - Y(T);
用reduceDifferentialOrder改写等式为两个一阶微分方程的系统。这里,瓦尔是该系统的状态变量的矢量。新变量的Dy(t)的表示的一阶导数Y(t)的关于Ť。
reduceDifferentialOrder
的Dy(t)的
Y(t)的
Ť
[等式,乏] = reduceDifferentialOrder(等式,Y(t))的
方程= DIFF(DYT(T),T)+ Y(t)的+ DYT(T)*(Y(t)的^ 2 - 1)DYT(T) - DIFF(Y(T),T)瓦尔= Y(吨)DYT(t)的
对于设置初始条件Y(t)的和它的衍生物的Dy(t)的至2和0分别。
2
0
initConditions = [2 0];
查找质量矩阵中号系统和方程的右侧的F。
中号
[M,F] = massMatrixForm(方程,乏)
M = [0,1] [-1,0] F = - Y(t)的 - DYT(T)*(Y(t)的^ 2 - 1)-Dyt(t)的
中号和F指的是形式 中号 ( Ť , X ( Ť ) ) X ˙ ( Ť ) = F ( Ť , X ( Ť ) ) 。 。为了简化进一步的计算,改写系统的形式 X ˙ ( Ť ) = F ( Ť , X ( Ť ) ) 。
˚F= M \˚F
F = DYT(T) - DYT(T)* Y(t)的^ 2 - Y(t)的+ DYT(t)的
兑换F到MATLAB功能手柄使用odeFunction。新的函数处理输入到MATLAB ODE求解ode15s。
odeFunction
odefun = odeFunction(F,乏);ode15s(odefun,[0 10],initConditions)
转换同时包含状态变量和符号参数为适合于MATLAB ODE求解器的功能句柄符号差分方程的系统。
创建微分代数方程的系统。在这里,象征性的功能X1(t)的和X2(t)的表示该系统的状态变量。该系统还包含常量符号参数一个,b和参数函数R(T)。这些参数并不代表状态变量。指定方程和状态变量为两个符号载体:方程式符号方程的矢量和变量为符号函数调用的向量。
X1(t)的
X2(t)的
一个
b
R(T)
syms x1(t) x2(t) a b r(t) eqs = [diff(x1(t),t) == a*x1(t) + b*x2(t)^2,... x1(t)^2 + x2(t)^2 == r(t)^2]; vars = [x1(t) x2(t)];
查找质量矩阵中号和右侧的矢量F这个系统。中号和F指的是形式 中号 ( Ť , X ( Ť ) ) X ˙ ( Ť ) = F ( Ť , X ( Ť ) ) 。 。
M = [1,0] [0,0] F = B * X2(t)的^ 2 + A * X1(t)的R(T)^ 2 - X 1(t)的^ 2 - X2(t)的2 ^
用odeFunction以从MATLAB函数处理中号和F。功能手柄F包含符号参数。
M = odeFunction(M,乏)F = odeFunction(F,乏,A,B,R(t))的
M = function_handle与值:@(T,IN2)重塑([1.0,0.0,0.0,0.0],[2,2])F =与值function_handle:@(吨,IN2,参数1,参数2,参数3)[参数1*英寸2(1,:)+ ... param2的*英寸2(2:)^ 2;参数3 ^ 2-英寸2(1,:)。^ 2-英寸2(2:)^ 2]。
指定的参数值。
A = -0.6;B = -0.1;R = @(t)的COS(T)/(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 = [A * Y0(1)+ b *的Y0(2)^ 2;1.234];
创建一个包含质量矩阵选项集中号该系统和载体的YP0为衍生物的初始条件。
YP0
选择= odeset( '质量',M 'InitialSlope',YP0);
现在,使用ode15s解决方程系统。
ode15s(F,[T 0,1],Y0,优化)
通过使用写入生成的函数处理的文件文件选项。当写入文件,odeFunction优化使用中间变量命名为代码T0,T1。...通过指定包含注释的文件注释选项。
文件
T0
T1
注释
限定微分方程的系统。查找质量矩阵中号而右侧F。
SYMS X(t)Y(t)的等式= [DIFF(X(t),T)+ 2 *差异(Y(T),T)== 0.1 * Y(T),...... X(t) -Y(t)的== COS(T)-0.2 * T *的sin(x(t))的];瓦尔= [X(t)Y(T)];[M,F] = massMatrixForm(方程,乏);
写的MATLAB代码中号和F该文件myfileM和myfileF。odeFunction覆盖现有文件。包括注释版本:1.1在文件中,您可以打开和编辑输出文件。
myfileM
myfileF
版本:1.1
M = odeFunction(M,乏, '文件', 'myfileM', '注释', '版本:1.1');
功能EXPR = myfileM(T,IN2)%MYFILEM%EXPR = MYFILEM(T,IN2)%是由符号数学工具箱版本7.3生成此功能。%01-JAN-2017 00:00:00%版本:1.1 EXPR =重塑([1.0,0.0,2.0,0.0],[2,2]);
F = odeFunction(F,乏, '文件', 'myfileF', '注释', '版本:1.1');
功能EXPR = myfileF(T,IN2)%MYFILEF%EXPR = MYFILEF(T,IN2)%是由符号数学工具箱版本7.3生成此功能。%01-JAN-2017 00:00:00%版本:1.1×=英寸2(1,:);Y =英寸2(2,:);EXPR = [Y *(1.0./1.0e1);-x+y+cos(t)-t.*sin(x).*(1.0./5.0)。];
指定一致的初始值X(t)的和Y(t)的和它们的一阶导数。
X(t)的
xy0 = [2;1];%X(t)和y(t)的xyp0 = [0;0.05 * xy0(2)];X(t)和y%的衍生物(t)的
创建一个包含质量矩阵选项集中号, 初始条件xyp0以及数值公差数值搜索。
xyp0
选择= odeset( '质量',M 'RELTOL',10 ^( - 6),... 'AbsTol',10 ^( - 6), 'InitialSlope',xyp0);
通过使用解决的方程系统ode15s。
ode15s(F,[7:0],xy0,优化)
使用名称 - 值对参数“疏”,真转换稀疏符号矩阵时MATLAB函数手柄。
“疏”,真
创建微分代数方程的系统。在这里,象征性的功能X1(t)的和X2(t)的表示该系统的状态变量。指定方程和状态变量为两个符号载体:方程式符号方程的矢量和变量为符号函数调用的向量。
SYMS X1(t)的X2(t)的一个= -0.6;B = -0.1;R = @(t)的COS(T)/(1 + T ^ 2);方程= [DIFF(X1(t)的,吨)==一个* X1(T)+ B * X2(t)的^ 2,... X1(t)的^ 2 + X2(t)的^ 2 == R(吨)^ 2];瓦尔= [X1(t)的X2(吨)];
M = [1,0] [0,0] F = - (3 * X1(t))的/ 5 - X2(t)的^十分之二COS(T)^ 2 /(T ^ 2 + 1)^ 2- X1(t)的^ 2 - X2(t)的2 ^
生成MATLAB函数处理中号和F。因为大部分的质量矩阵的元素的中号是零,使用疏转换时的说法中号。
疏
M = odeFunction(M,乏, '稀疏',真)F = odeFunction(F,乏)
M = function_handle与值:@(T,IN2)稀疏([1],[1],[1.0],2,2)F =与值function_handle:@(T,IN2)[英寸2(1,:)。*( - 3.0./5.0)-in2(2,:)^ 2./1.0e+1; ... COS(T)^ 2 * 1.0 ./(T ^ 2 + 1.0)^。2-英寸2(1,:)^ 2-IN2。(2,:)^ 2]。
求解方程的使用系统ode15s。
代数表达式,指定为符号表达式的一个矢量的系统。
状态变量,指定为象征性的函数或函数调用,如向量X(t)的。
例:[X(t),Y(t)的]要么[X(t); Y(t)的]
[X(t),Y(t)的]
[X(t); Y(t)的]
该系统的参数,指定为符号变量,函数或函数调用,如F(T)。您也可以指定系统作为载体或象征性的变量,函数或函数调用的矩阵参数。如果EXPR含有比在指定的变量其他符号参数瓦尔,你必须指定这些附加参数P1,... ...,PN。
F(T)
指定可选的用逗号分隔的对名称,值参数。名称是参数的名称和值是对应的值。名称必须出现引号内。您可以按照任何顺序指定多个名称和值对参数名1,值1,...,NameN,值N。
名称
值
名1,值1,...,NameN,值N
odeFunction(表达式,乏, '文件', 'MYFILE')
'注释'
注释包括在文件头中,指定为字符向量,特征向量的单元阵列,或串矢量。
'文件'
含有生成的文件的路径的代码,指定为字符向量。所生成的文件接受类型的参数双,并且可以在不符号数学工具箱使用™。如果该值为空,odeFunction产生一个匿名函数。如果特征向量没有结束.M,功能追加.M。
双
.M
默认,odeFunction与文件参数生成包含优化的代码的文件。优化的装置的中间变量是自动生成的,以简化或加快的代码。MATLAB生成中间变量作为小写字母Ť随后自动生成的数,例如T32。要禁用代码优化,使用优化论据。
T32
优化
“优化”
真正
假
旗防止写入功能的文件代码的优化,指定为假要么真正。
默认,odeFunction与文件参数生成包含优化的代码的文件。优化的装置的中间变量是自动生成的,以简化或加快的代码。MATLAB生成中间变量作为小写字母Ť随后自动生成的数,例如T32。
odeFunction没有文件参数(或通过一个空字符向量指定的文件路径)创建了一个函数句柄。在这种情况下,代码没有优化。如果试图通过设定强制执行代码优化优化至真正, 然后odeFunction抛出一个错误。
'疏'
标志,稀疏和密集矩阵生成之间切换,指定为真正要么假。当您指定“疏”,真中,生成的函数表示由稀疏数字矩阵符号矩阵。用“疏”,真当您转换包含许多零个元素符号矩阵。通常情况下,在稀疏矩阵操作比在密集矩阵相同的操作更有效率。看到稀疏矩阵。
功能手柄,可以作为输入参数传递给所有的数值MATLAB ODE求解器,除了ode15i,返回作为MATLAB功能句柄。
odeFunction返回合适的函数句柄ODE求解器如ODE45,ode15s,ode23t, 和别的。唯一的ODE求解器,不接受此功能句柄是全隐微分方程求解器,ode15i。等式的系统转换成适合功能手柄ode15i, 用daeFunction。
ODE45
ode23t
daeFunction
daeFunction|decic|findDecoupledBlocks|incidenceMatrix|isLowIndexDAE|massMatrixForm|matlabFunction|ode15i|ode15s|ode23t|ODE45|reduceDAEIndex|reduceDAEToODE|reduceDifferentialOrder|reduceRedundancies
decic
findDecoupledBlocks
incidenceMatrix
isLowIndexDAE
massMatrixForm
matlabFunction
reduceDAEIndex
reduceDAEToODE
reduceRedundancies
您单击对应于该MATLAB命令的链接:
在MATLAB命令窗口中输入它运行的命令。Web浏览器不支持MATLAB的命令。万博1manbetx
选择一个网站,以获得翻译的内容,其中可看到当地的活动和优惠。根据您的位置,我们建议您选择:。
您还可以选择从下面的列表中的网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。
请联系您当地的办事处