关于一个变上限积分函数符号表达式的求解问题
mathematica吧
全部回复
仅看楼主
level 4
whfallº 楼主
为简化问题,已经将模型中所有赋值参数带入 。贴出目标函数g(s)代码:
g[s_] := (((12*s)/11 - 1/((2*s)/9 + 7/9)^2 +
1)*(s/(9*((2*s)/9 + 7/9)^3) + 1/(4*((2*s)/9 + 7/9)^2) -
1/4))/((12*s)/
275 - (6/(11*((2*s)/9 + 7/9)^2) - 6/11)*(s/4 +
s/(4*((2*s)/9 + 7/9)^2) + 9/(4*((2*s)/9 + 7/9)) - 283/100) -
1/(25*((2*s)/9 + 7/9)^2) + 1/25)
运行后如果输入代码:
g[t]
则应该出现如下图:
接下来,我首先对这个函数求定积分(数值解),代码如下:
NIntegrate[g[s], {s, 0.3953, 1}]
结果为:1.7833。接下来,我对该函数求变上限积分(0.3953<t<=1),代码:
Integrate[g[s], {s, 0.3953, t}]
运行结果悲催了,如图:
本人是从Matlab刚刚转过来的,因为matlab在符号数学方面确实比较弱。接下来提出问题:
1.MMA运行出来的结果,也就是图中的条件表达式怎么阅读?或者是不是该结果表示此变上限积分函数无解?
2.我第一步既然求出了数值积分结果1.7833,说明此变上限积分函数至少是可以求数值解的(matlab里也利用此画出了该变上限积分函数的图像),那么可否用图中的条件表达式算出1.7833这个结果呢?
3.有人疑惑既然能出数值解,为何执着于符号表达式,原因是我下一步还要对这个变限积分函数求反函数(matlab里似乎只能通过符号表达式求反函数)。如果MMA的大神有什么办法能在不求解析式的情况下直接求目标函数g(s)变上限积分函数的反函数,我也很高兴啦!
2018年07月27日 03点07分 1
level 7
百度日常吞代码,麻烦照着图打一遍吧。
2018年07月28日 07点07分 6
感谢提示!只是我的反函数是一定要求出解析式的。因为模型里还需要对反函数再求变限积分,最后作图。不过还是谢谢你!
2018年07月30日 06点07分
吧务
level 15
不要一看到表达式不像传统数学式了就六神无主,ConditionalExpression等函数的意义在自带帮助里是写得很清楚的,请仔细阅读。还有这里会出现ConditionalExpression是因为你没对t加入合适的假设,具体请查Assumptions的帮助。
2018年08月04日 07点08分 7
感谢帮助!MMA确实还有很多地方需要我去学习。
2018年08月08日 00点08分
level 4
ClearAll["Global`*"]
g[s_] := (((12*s)/11 - 1/((2*s)/9 + 7/9)^2 +
1)*(s/(9*((2*s)/9 + 7/9)^3) + 1/(4*((2*s)/9 + 7/9)^2) -
1/4))/((12*s)/
275 - (6/(11*((2*s)/9 + 7/9)^2) - 6/11)*(s/4 +
s/(4*((2*s)/9 + 7/9)^2) + 9/(4*((2*s)/9 + 7/9)) - 283/100) -
1/(25*((2*s)/9 + 7/9)^2) + 1/25);
p[t_] := Simplify[NIntegrate[g[s], {s, 0.3953, t}],
0.3953 <= t <= 1 && t \[Element] Reals]
Plot[p[t], {t, 0.3953, 1}]
q[x_] := InverseFunction[p][x]
Plot[q[x], {x, 0, 2}]
2020年06月27日 13点06分 12
1