求助:求解非线性方程
方程如下可以看到此方程是关于lamuda和alf的方程,其中lamuta的取值范围是0到1,我现在要画一组曲线,对应于不同的lamuda的alf的跟,也就是给定一个lamuda的值,求解一个alf。
下边是一个上面方程右边vsalf的一个曲线,其中lamuda=0.4
可以看见该方程在左右各有一个根,如图红色圈和蓝色圈。现在想得到当lamuda从0到1,对应于上面左边和右边的两个跟,分别作出红色根vs lamuda和蓝色vs lamuda的图。
我自己画了好几天了,总是有问题。
附上方程右边的表达式的m文件
function F=F(lamuta,alf)
F=-(3+17*lamuta)*cos((1-lamuta)*alf)-(11+23*lamuta)*cos((1+lamuta)*alf)-3*(1+lamuta)*cos((-3+lamuta)*alf)+5*(1-lamuta)*cos((3+lamuta)*alf)+cot(lamuta*pi)*((14+2*lamuta)*sin((-1+lamuta)*alf)-(10+2*lamuta)*sin((1+lamuta)*alf)+(62-18*lamuta)*sin((-3+lamuta)*alf)+(1-lamuta)*sin((3+lamuta)*alf)+5*(1-lamuta)*sin((-5+lamuta)*alf));
F=-F;
[ 本帖最后由 sigma665 于 2008-8-15 15:52 编辑 ] 是2个方程,2个未知数?
回复 沙发 sigma665 的帖子
一个方程,其中的lamuda会预先给定,是一个参数,实际上是关于alf的方程 好象你的方程有问题,虽然你说“lamuta的取值范围是0到1”,但好象lamuta为0时方程无意义,为1时的解也有问题,
而且alf在0~3.5时,方程有三个根
做了一个0.1~0.9的,不知道对不对。
[ 本帖最后由 messenger 于 2008-8-15 22:59 编辑 ]
回复 地板 messenger 的帖子
多谢,貌似有点问题,应该是横坐标是lamuda,纵坐标是alf,可能看的有问题吧,我正在想别的办法,因为用fsolve做总是找不到我想要的根。不过谢谢你啊,另外,lamuda的值是开区间
[ 本帖最后由 无水1324 于 2008-8-16 12:28 编辑 ]
回复 5楼 yanice 的帖子
fsolve不行的时候试一下最优化的方法,寻找其最优解,matlab中有自带的工具箱和函数命令回复 6楼 无水1324 的帖子
我用的最简单的方法,就是做出100或者多少个点,然后比较相邻两个点的乘机是否为负值,如果是的话,那么这两个点中间这个值就可以近似为根了,很简单,但是很有效,也不存在什么收敛问题,呵呵
页:
[1]