声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1275|回复: 6

[综合讨论] 求助:求解非线性方程

[复制链接]
发表于 2008-8-15 15:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
方程如下
未命名.bmp
可以看到此方程是关于lamuda和alf的方程,其中lamuta的取值范围是0到1,我现在要画一组曲线,对应于不同的lamuda的alf的跟,也就是给定一个lamuda的值,求解一个alf。
下边是一个上面方程右边vsalf的一个曲线,其中lamuda=0.4
untitled.jpg
可以看见该方程在左右各有一个根,如图红色圈和蓝色圈。现在想得到当lamuda从0到1,对应于上面左边和右边的两个跟,分别作出红色根vs lamuda和蓝色vs lamuda的图。
我自己画了好几天了,总是有问题。
附上方程右边的表达式的m文件 F.m (359 Bytes, 下载次数: 7)



  1. function F=F(lamuta,alf)
  2. 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));
  3. F=-F;
复制代码

[ 本帖最后由 sigma665 于 2008-8-15 15:52 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-8-15 15:51 | 显示全部楼层
是2个方程,2个未知数?
 楼主| 发表于 2008-8-15 19:37 | 显示全部楼层

回复 沙发 sigma665 的帖子

一个方程,其中的lamuda会预先给定,是一个参数,实际上是关于alf的方程
发表于 2008-8-15 22:54 | 显示全部楼层
好象你的方程有问题,

虽然你说“lamuta的取值范围是0到1”,但好象lamuta为0时方程无意义,为1时的解也有问题,

而且alf在0~3.5时,方程有三个根

做了一个0.1~0.9的,不知道对不对。

1.png

[ 本帖最后由 messenger 于 2008-8-15 22:59 编辑 ]
 楼主| 发表于 2008-8-16 10:19 | 显示全部楼层

回复 地板 messenger 的帖子

多谢,貌似有点问题,应该是横坐标是lamuda,纵坐标是alf,可能看的有问题吧,我正在想别的办法,因为用fsolve做总是找不到我想要的根。
不过谢谢你啊,另外,lamuda的值是开区间

[ 本帖最后由 无水1324 于 2008-8-16 12:28 编辑 ]
发表于 2008-8-16 22:14 | 显示全部楼层

回复 5楼 yanice 的帖子

fsolve不行的时候试一下最优化的方法,寻找其最优解,matlab中有自带的工具箱和函数命令
 楼主| 发表于 2008-8-19 10:54 | 显示全部楼层

回复 6楼 无水1324 的帖子

我用的最简单的方法,就是做出100或者多少个点,然后比较相邻两个点的乘机是否为负值,如果是的话,那么这两个点中间这个值就可以近似为根了,很简单,但是很有效,也不存在什么收敛问题,呵呵
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 05:24 , Processed in 0.058966 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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