找回密码
 注册
Simdroid-非首页
查看: 174|回复: 12

matlab求逆函数/反函数请教

[复制链接]
发表于 2009-12-10 13:40:20 | 显示全部楼层 |阅读模式 来自 安徽马鞍山
本帖最后由 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.
发表于 2009-12-10 21:18:19 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
在我这里倒是能算出结果,不过结果不太好理解,估计你的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 ]

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 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)
我这也能运行出结果。。。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-12-13 10:52:42 | 显示全部楼层 来自 安徽马鞍山
matlab求解出来的类似Rootof,_Z,等等这些函数,用数值反代进去求解时matlab也不认识的。 4# oyanglove5212
回复 不支持

使用道具 举报

发表于 2009-12-13 12:57:12 | 显示全部楼层 来自 浙江杭州
不知道你为什么要求反函数,不过可以考虑数值求解
回复 不支持

使用道具 举报

 楼主| 发表于 2009-12-13 13:28:14 | 显示全部楼层 来自 安徽马鞍山
谢谢您的回复,在此感谢大家!
我想要求的问题是 ,其中这个函数c的表达式 ,这里面的ui,vi是可以求出来一组数据,满足【0,1】上的均匀分布, ,所以我想应该要先求这个的逆函数。然而,即使求解出来代入w,也不是很好求。我试过换了g的表达式,求解时matlab提示被积函数太大,运行不了。如果各位有什么好的方法,请赐教!不胜感激! 6# messenger
回复 不支持

使用道具 举报

发表于 2009-12-13 14:15:35 | 显示全部楼层 来自 浙江杭州
觉得还是得用第2种方法,把g的表达式换掉。在g(θ)表达式里,将 τ 对θ求导,得到dτ ,然后代入W的表达式。不过估计你的表达式太长,用quad之类的命令可能无法求得结果。可以考虑用trapz,先计算出W表达式中被积函数在各点的值,然后trapz求积分。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-12-13 15:08:26 | 显示全部楼层 来自 安徽马鞍山
谢谢指点,我先试试求解! 8# messenger
回复 不支持

使用道具 举报

发表于 2009-12-13 16:09:26 | 显示全部楼层 来自 黑龙江哈尔滨
谢谢指点,我先试试求解! 8# messenger
zdqdemi 发表于 2009-12-13 15:08


RootOf _Z 好像调用的是maple吧?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-12-13 16:44:40 | 显示全部楼层 来自 安徽马鞍山
再向您请教一下,对于表达式有直接求乘积的命令不?类似求和的sum,这种。 8# messenger
回复 不支持

使用道具 举报

发表于 2009-12-13 19:26:25 | 显示全部楼层 来自 浙江杭州
与sum对应的乘积命令是prod,与cumsum对应的乘积命令是cumprod。
回复 不支持

使用道具 举报

发表于 2010-11-10 08:55:45 | 显示全部楼层 来自 江苏南京
很好,有点没看懂

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-5 11:15 , Processed in 0.054398 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表