MATLAB返回给我相同的表达式。这是我的代码
syms tau alpha phi f = sign(alpha*cos(phi))*(abs(alpha*cos(phi)) - 2.5*(alpha*cos(phi))^2); F=f*sin(phi); int(F,phi, [pi/2, acos(tau/alpha)])
我插入了变量tau和alpha的值,但它仍然返回相同的表达式。有人知道怎么解决这个问题吗?或者其他一些数值方法,可以在这些符号中给出答案?wolfram-mathematica会有帮助吗?
发布于 2017-07-19 06:34:23
Mathematica
Integrate[(Sign[alpha*Cos[phi]]*(Abs[alpha*Cos[phi]] - 5/2*
(alpha*Cos[phi])^2))*Sin[phi], {phi, Pi/2, ArcCos[tau/alpha]}](* ConditionalExpression[-(tau^2/(2 alpha)) + (5 alpha^3 Abstau^3)/ (6 Absalpha^4),ArcCostau/alpha [Element] Reals] *)
因此,如果ArcCostau/alpha是reals的一个元素,那么结果就是ConditionalExpression中的表达式。
如果可以指定-1<=tau/α<=1 && 0<=tau,那么它可以提供一个更简单的结果,(tau^2 (-3 +5tau))/(6alpha)
请先验证这一点,然后再依赖它。
发布于 2017-07-18 16:59:17
就像这样
syms tau alpha phi
f = sign(alpha*cos(phi))*(abs(alpha*cos(phi)) - 2.5*(alpha*cos(phi))^2);只会生成另一个符号变量。但是,您的目标是指定一个符号函数,为此,您必须指定函数参数:
syms tau alpha phi
f(tau,alpha,phi) = sign(alpha*cos(phi))*(abs(alpha*cos(phi)) - 2.5*(alpha*cos(phi))^2);
F(tau,alpha,phi) =f*sin(phi);然后你可以用来计算积分。
R = int(F,phi, [pi/2, acos(tau/alpha)])由于您的积分依赖于tau和alpha,因此R也是一个符号函数R(tau,alpha)。
或者,你可以只在最后指定参数,例如
syms tau alpha phi
f = sign(alpha*cos(phi))*(abs(alpha*cos(phi)) - 2.5*(alpha*cos(phi))^2);
F=f*sin(phi);
R(tau,alpha) = int(F,phi, [pi/2, acos(tau/alpha)])但我个人觉得这不那么干净。
请注意,您也可以将F直接编写为
F(tau,alpha,phi) = sin(phi)*(sign(alpha*cos(phi))*(abs(alpha*cos(phi)) - 2.5*(alpha*cos(phi))^2));https://stackoverflow.com/questions/45159855
复制相似问题