MATLAB 不计算积分

问题描述 投票:0回答:2

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 有帮助吗?

matlab wolfram-mathematica numerical-integration integral
2个回答
0
投票

数学

Integrate[(Sign[alpha*Cos[phi]]*(Abs[alpha*Cos[phi]] - 5/2*
  (alpha*Cos[phi])^2))*Sin[phi], {phi, Pi/2, ArcCos[tau/alpha]}]

(* 条件表达式[-(tau^2/(2 alpha)) + (5 alpha^3 Abs[tau]^3)/ (6 Abs[alpha]^4), ArcCos[tau/alpha] \[元素] 实数] *)

因此,如果 ArcCos[tau/alpha] 是实数元素,则结果是条件表达式内的表达式。

如果您可以指定类似 -1 的内容<=tau/alpha<=1 && 0<=tau then it can provide an even simpler result, (tau^2 (-3 + 5 tau))/(6 alpha)

请在依赖之前验证这一点。


0
投票

类似

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));
© www.soinside.com 2019 - 2024. All rights reserved.