24小时热门版块排行榜    

CyRhmU.jpeg
查看: 605  |  回复: 3
当前主题已经存档。

dingzemin

银虫 (正式写手)

[交流] 【求助】matlab求解方程,方程里面含有psi函数(ploygamma函数),不好解啊

求解函数:
y=1-x/5-1.44*{0.25/x-0.05[-psi(1)+0.5*psi(1-0.1*x)+ 0.5*psi(1+0.1*x)]}

其中psi是ploygamma函数,在matlab里面可以直接调用。y是给定的值,其变化范围是[-0.5, 1], x是要求出来的变量。对应每一个y,存在两个x值。我不知道怎么求解这两个x的值。调用solve函数也解不出来。

我试着按照常规思路求解了一下:先把y取成一个定值0.1,调用solve求解,如下:
y=0.1
f=solve('1-x/5-1.44*(0.25/x-0.05*(-psi(1)+1/2*psi(1-x/10)+1/2*psi(1+x/10)))-y', 'x')
结果显示是:Warning: Explicit solution could not be found.

看到网上有人建议将这个问题看成是一个非线性最优化问题,即求得一个x,使得方程左端函数值与右端常数值的平方和最小。函数如下:
y=0.1
f=@(x)norm(1-x/5-1.44*(0.25/x-0.05*(-psi(1)+1/2*Psi(1-x/10)+1/2*Psi(1+x/10)))-y)^2;
[x,err]=fminsearch(f,1e-5)
但是这种方法得出的x值只有一个值,实际上x存在两个值。改怎么解决呢?

请大家帮忙啊!!

[ Last edited by dingzemin on 2010-1-17 at 20:11 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★ ★ ★ ★
sunxiao(金币+3,VIP+0):谢谢参与,欢迎常来。签名档说的很有道理啊 1-18 04:34
dingzemin(金币+2,VIP+0): 1-18 13:06
>> x=0:0.1:10;
>> y=1-x/5-1.44*(0.25./x-0.05*(-psi(1)+1/2*psi(1-x/10)+1/2*psi(1+x/10)));
>> plot(x,y)
>> grid on
2楼2010-01-17 22:36:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★ ★ ★ ★
sunxiao(金币+2,VIP+0):谢谢详细解释,欢迎常来 1-18 04:35
dingzemin(金币+3,VIP+0): 1-18 13:06
通过图片可以知道这个方程x=[0 10],y=[-inf 0.4616].最高点为(1.3 0.4616)(放大图片可以看出来),当y<0.4614时,x有两个值,分别在[0 1.3]及[1.3 10]区间上。

当y=0.1时,可以采用以下求出两个解

>> f=fsolve('1-x/5-1.44*(0.25/x-0.05*(-psi(1)+1/2*psi(1-x/10)+1/2*psi(1+x/10)))-0.1', 0.5)
Optimization terminated: first-order optimality is less than options.TolFun.

f =

   0.443865675644518

>> f=fsolve('1-x/5-1.44*(0.25/x-0.05*(-psi(1)+1/2*psi(1-x/10)+1/2*psi(1+x/10)))-0.1', 3)
Optimization terminated: first-order optimality is less than options.TolFun.

f =

   3.967250801226048
3楼2010-01-17 22:40:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingzemin

银虫 (正式写手)

嗯   就是分两个部分分别求解!谢谢啊!
4楼2010-01-18 13:05:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dingzemin 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见