问题_plus()和象征性的分化

1视图(30天)
我定义一个符号表达式(dx_3dt)和做一个假设,减少一项表达式。这个函数_plus(…)出现在我的表情(输出dx_3dt)由matlab显然不是可微的定义导致NaN值。区分相同的表达式“手动”让我获得正确的解决方案。
任何建议如何处理呢?
兆瓦:
清晰的所有;
重置(symengine)
θ=符号(“theta_ % d '(5、1){“积极”,“真实”的});%系统动力学的物理参数
x =符号(”间的% d '(6,1),{“积极”,“真实”的});%系统状态
格拉夫= 9810;%万有引力accelaration[毫米/秒^ 2]
每股收益= 1平台以及;
流出=分段(x(3) < =每股收益,0,θ(5)* 12 +(2 *格拉夫* x (3)));
dx_3dt =θ(4)*标志(x (2) - x(3)) * 12 +(2 *格拉夫* abs (x (2) - x(3))) +θ(2)* x(5) +流出;
简化(diff (dx_3dt x (2)))
assumeAlso (x (2) = = x (3))
简化(dx_3dt)
输出dx_3dt 在命令窗口:
分段(x_3 < = 1/10000000000, _plus (theta_2 * x_5) ,theta_2 * x_5 - 6 * 545 ^ (1/2) * theta_5 * x_3 ^ (1/2) + 6 * 545 ^ (1/2) * theta_4 * abs (x_2 - x_3) ^(1/2) *符号(x_2 - x_3))
预期的结果 :
简化(diff (dx_3dt x (2)))
diff(θ(2)* x (5), x (2))
第一个想法
问题似乎是分段函数,因为省略分段给预期的结果:
清晰的所有;
重置(symengine)
θ=符号(“theta_ % d ',5,1);%系统动力学的物理参数
x =符号(”间的% d '(6,1));%系统状态
格拉夫= 9810;%万有引力accelaration[毫米/秒^ 2]
每股收益= 1平台以及;
%流出=分段(x(3) < =每股收益,0,θ(5)* 12 +(2 *格拉夫* x (3)));
dx_3dt =θ(4)*标志(x (2) - x(3)) * 12 +(2 *格拉夫* abs (x (2) - x(3))) +θ(2)* *(5)θ(5)* 12 +(2 *格拉夫* x (3));
简化(diff (dx_3dt x (2)))
assumeAlso (x (2) = = x (3))
简化(dx_3dt)
简化(diff (dx_3dt x (2)))
diff(θ(2)* x (5), x (2))
diff和假设的问题
Furhtermore如果我申请以下解决方案取代x_3的关键术语和符号功能和假设x_3 = = x_2区分对x_2是零!diff函数似乎也不考虑假设:
清晰的所有;
重置(symengine)
θ=符号(“theta_ % d '(5、1){“积极”,“真实”的});%系统动力学的物理参数
x =符号(”间的% d '(6,1),{“积极”,“真实”的});%系统状态
格拉夫= 9810;%万有引力accelaration[毫米/秒^ 2]
每股收益= 1平台以及;
%流出= symfun (x_3 x_3)
信谊x_3流出(x_3)
%流出=分段(x(3) < =每股收益,0,θ(5)* 12 +(2 *格拉夫* x (3)));
dx_2dt x =θ(3)*(6)*符号x (x(1) -(2)) * 12 +(2 *格拉夫* abs (x (1) - x(2)))θ(4)*标志(x (2) - x(3)) * 12 +(2 *格拉夫* abs (x (2) - x (3)))
dx_3dt =θ(4)*标志(x (2) - x(3)) * 12 +(2 *格拉夫* abs (x (2) - x(3))) +θ(2)* x(5) +流出(x_3)
f = [dx_2dt;dx_3dt];
简化(diff (dx_3dt x (2)))
简化(diff (dx_3dt x (3)))
assumeAlso (x (2) = = x (3))
简化(dx_3dt)
假设(x (2))
假设(x (3))
简化(dx_3dt)
简化(diff (dx_3dt x (2)))
简化(diff (dx_3dt x (3)))
江淮=简化(雅可比矩阵(f (x))

答案(1)

斯蒂芬妮施瓦兹
斯蒂芬妮施瓦兹 2019年7月8日
谢谢你带我们的注意力。这个问题我已经提醒我们的开发人员,当然,不应该出现“_plus”输出。
解决方法是,当你注意到,使用“简化”或任何其他操作,触发一个重新评估,如dx_3dt * 1。
请注意,一个假设(2)= = x(3)不会使x (2)“依赖”x(3),它没有赋值的影响。即。,even if you assume x == 42, the derivative of x^2 is 2*x while the derivative of 42^2 is 0 and the derivative diff(42^2, 42) makes no sense. This is similar for integrals and other cases of bound variables (summation variables etc.).

标签

s manbetx 845


释放

R2019a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!