24小时热门版块排行榜    

查看: 679  |  回复: 2

2866110dai

金虫 (小有名气)

[求助] 包含贝塞尔函数的非线性方程组 已有1人参与

方程组及求解程序如下:
     f11=@(x)[x(2)-besselk(0,x(1))./besselk(1,x(1)).*sin(x(3));            %满足的方程组, x=x(1),y=x(2),phi0=x(3)
                 x(1)-0.5*sin(pi+x(3)-pi/3);
                 x(2)+(0.3-0.5*(1-cos(pi+x(3)-pi/3)))];
options = optimset('Display','final','TolFun',1e-10,'TolX',1e-10);
X=fsolve(f11,[2,2,pi/3],options)
**********************************************************************************************
求出来的结果是虚数,Columns 1 through 2
  0.146326396146141 + 0.572064042319110i  0.953776042482729 - 0.111051645262746i
  Column 3
  0.855457842453923 - 0.993689273363200i

然而这是个实际问题,并且x(3)是角度值,解是存在的,而且一定是实数。

然后我改变初始点,如[1,1,pi/3],提示如下:
No solution found.
fsolve stopped because the last step was ineffective. However, the vector of function
values is not near zero, as measured by the selected value of the function tolerance.
<stopping criteria details>
  X =
   0.313681166680663   0.435001517684952   0.535653117999125。

*************************************************************************************************
问题:1、fsolve求解的是多元方程的 实数解,而我在初值[2,2,pi/3]求出来的却是虚数,这是怎么回事
           2、在初值[1,1,pi/3],既然提示No solution found,怎么最后又有X值, 0.313681166680663   0.435001517684952   0.535653117999125。
           3、这个方程组该怎么求解,真心请教大神们解答
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

bessel函数中,变量默认是复数。
x 换成 real(x) 试一试。
2楼2015-01-10 07:42:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
2866110dai(feixiaolin代发): 金币+5 2015-01-11 10:42:46
1stOpt求解:
CODE:
Parameter x(3);
Function  x(2)-bessk(0,x(1))/bessk(1,x(1))*sin(x(3));
          x(1)-0.5*sin(pi+x(3)-pi/3);
          x(2)+(0.3-0.5*(1-cos(pi+x(3)-pi/3)));

有三角函数,不加范围约束有多组解(x3):
1:
x1: 0.13239358527979
x2: -0.282153438833906
x3: -1.82641189392894

2:
x1: 0.132393585286807
x2: -0.282153438837244
x3: 4.45677341328588
3楼2015-01-10 21:15:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 2866110dai 的主题更新
信息提示
请填处理意见