登录论坛

查看完整版本 : 求助:解一个简单的不等式


chaoren
2009-04-13, 20:45
解不等式:
-34.07*log10(abs(x+12))-10*log10((x+24)^(-3.407)+(6-x)^(-3.407))+19>0
要求得到一个实数区间.
在下是新手,谁能帮我一下,谢谢

hrt
2009-04-13, 22:05
记不等号左边表达式为f,即求解f>0;
1、首先作出f的图像,以确定零点的大致位置。(图形太大,就没上传)
>> ezplot('-34.07*log10(abs(x+12))-10*log10((x+24)^(-3.407)+(6-x)^(-3.407))+19',[-30,20])
>> hold on
>> ezplot('0',[-30,20])

得到零点在[-25,-20],[0,5]间。

2、再用fzero求解
[x,fv,ef]=fzero(inline('-34.07*log10(abs(x+12))-10*log10((x+24)^(-3.407)+(6-x)^(-3.407))+19'),-20)
得:
x =

-21.3976

[x,fv,ef]=fzero(inline('-34.07*log10(abs(x+12))-10*log10((x+24)^(-3.407)+(6-x)^(-3.407))+19'),0)
得:
x =

2.0952

故f>0的解为:(-21.3976,2.0952)

~ ~

chaoren
2009-04-14, 08:49
因为我求这个不等式的解是for循环中的一步,请问一下可不可以不通过观察图像而直接得到方程的零解?

hrt
2009-04-14, 12:38
那样的话,可以考虑用solve函数求零解;
或者直接用无约束优化求不等式。
你可以试试~ ~

chaoren
2009-04-14, 16:54
但是solve解出来的是解析解,而且它也解不了复杂方程.

laosam280
2009-04-27, 12:21
没有办法,只能先用试探法得到解存在的区间
可以考虑用导数的零点来划分