首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB不求积分

MATLAB不求积分
EN

Stack Overflow用户
提问于 2017-07-18 15:07:22
回答 2查看 135关注 0票数 0

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-19 06:34:23

Mathematica

代码语言:javascript
复制
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)

请先验证这一点,然后再依赖它。

票数 0
EN

Stack Overflow用户

发布于 2017-07-18 16:59:17

就像这样

代码语言:javascript
复制
syms tau alpha phi
f = sign(alpha*cos(phi))*(abs(alpha*cos(phi)) - 2.5*(alpha*cos(phi))^2);

只会生成另一个符号变量。但是,您的目标是指定一个符号函数,为此,您必须指定函数参数:

代码语言:javascript
复制
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);

然后你可以用来计算积分。

代码语言:javascript
复制
R = int(F,phi, [pi/2, acos(tau/alpha)])

由于您的积分依赖于taualpha,因此R也是一个符号函数R(tau,alpha)

或者,你可以只在最后指定参数,例如

代码语言:javascript
复制
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直接编写为

代码语言:javascript
复制
F(tau,alpha,phi) = sin(phi)*(sign(alpha*cos(phi))*(abs(alpha*cos(phi)) - 2.5*(alpha*cos(phi))^2));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45159855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档