zdqdemi 发表于 2009-12-10 13:40:20

matlab求逆函数/反函数请教

本帖最后由 messenger 于 2009-12-10 21:12 编辑

请教对于表达式该如何求其逆函数,用matlab运行程序如下:
syms tau t theta
tau=1-4*(1-int('t/(exp(t)-1)',t,0,theta)/theta)/theta;
tau=finverse(tau,theta)
有个警告,但没有结果,不知该怎么办,请好心人指教。
Warning: finverse(1-(4-4*(-1/2*theta^2+theta*log(1-exp(theta))+polylog(2,exp(theta))-1/6*pi^2)/theta)/theta) is not unique.

messenger 发表于 2009-12-10 21:18:19

在我这里倒是能算出结果,不过结果不太好理解,估计你的Matlab版本又是2009,你遇到的警告是说反函数不唯一。

tau =

log(-exp(RootOf(12*_Z*log(-exp(_Z)+1)-3*log(-exp(_Z)+1)^2-12*log(-exp(_Z)+1)+12*dilog(exp(_Z))-2*pi^2-3*theta*log(-exp(_Z)+1)^2))+1)

风天小畜 发表于 2009-12-10 21:46:09

R2009 b

干脆找不到!

>> syms tau t theta
>> tau=1-4*(1-int('t/(exp(t)-1)',t,0,theta)/theta)/theta;
>> tau=finverse(tau,theta)
Warning: finverse(1/thetaMLVar*(4/thetaMLVar*(polylog(2, exp(thetaMLVar)) - 1/6*PI^2 - 1/2*thetaMLVar^2 + thetaMLVar*ln(1 - exp(thetaMLVar))) - 4) + 1) cannot be found.

tau =

[ empty sym ]

oyanglove5212 发表于 2009-12-12 16:26:28

>> syms tau t theta
>> tau=1-4*(1-int('t/(exp(t)-1)',t,0,theta)/theta)/theta

tau =

1-(4-4*(-1/2*theta^2+theta*log(1-exp(theta))+dilog(1-exp(theta))-1/6*pi^2)/theta)/theta

>> tau=finverse(tau,theta)

tau =

log(-exp(RootOf(12*_Z*log(-exp(_Z)+1)-3*log(-exp(_Z)+1)^2-12*log(-exp(_Z)+1)+12*dilog(exp(_Z))-2*pi^2-3*theta*log(-exp(_Z)+1)^2))+1)
我这也能运行出结果。。。

zdqdemi 发表于 2009-12-13 10:52:42

matlab求解出来的类似Rootof,_Z,等等这些函数,用数值反代进去求解时matlab也不认识的。 4# oyanglove5212

messenger 发表于 2009-12-13 12:57:12

不知道你为什么要求反函数,不过可以考虑数值求解

zdqdemi 发表于 2009-12-13 13:28:14

谢谢您的回复,在此感谢大家!
我想要求的问题是http://home.simwe.com/attachment/200912/13/442095_1260681635a7b5.jpg ,其中这个函数c的表达式http://home.simwe.com/attachment/200912/13/442095_1260681281wzlZ.jpg ,这里面的ui,vi是可以求出来一组数据,满足【0,1】上的均匀分布,http://home.simwe.com/attachment/200912/13/442095_1260681292Epsl.jpg ,所以我想应该要先求这个的逆函数。然而,即使求解出来代入w,也不是很好求。我试过换了g的表达式,求解时matlab提示被积函数太大,运行不了。如果各位有什么好的方法,请赐教!不胜感激! 6# messenger

messenger 发表于 2009-12-13 14:15:35

觉得还是得用第2种方法,把g的表达式换掉。在g(θ)表达式里,将 τ 对θ求导,得到dτ ,然后代入W的表达式。不过估计你的表达式太长,用quad之类的命令可能无法求得结果。可以考虑用trapz,先计算出W表达式中被积函数在各点的值,然后trapz求积分。

zdqdemi 发表于 2009-12-13 15:08:26

谢谢指点,我先试试求解! 8# messenger

TBE_Legend 发表于 2009-12-13 16:09:26

谢谢指点,我先试试求解! 8# messenger
zdqdemi 发表于 2009-12-13 15:08 http://forum.simwe.com/images/common/back.gif

RootOf _Z 好像调用的是maple吧?

zdqdemi 发表于 2009-12-13 16:44:40

再向您请教一下,对于表达式有直接求乘积的命令不?类似求和的sum,这种。 8# messenger

messenger 发表于 2009-12-13 19:26:25

与sum对应的乘积命令是prod,与cumsum对应的乘积命令是cumprod。

jiawenhuafz 发表于 2010-11-10 08:55:45

很好,有点没看懂
页: [1]
查看完整版本: matlab求逆函数/反函数请教