全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2959 4
2015-05-06
想解一个非线性方程组,求非负解,自己试着编了程序,现有如下疑问,特请教高人指点。程序代码如下:function F = myfun1(x)
F=[x(1)*cos(x(1))^2+x(2)*cos(x(2))^2-x(1);x(1)*sin(x(1))^2+x(3)*cos(x(3))^2-x(2);x(2)*sin(x(2))^2+x(3)*sin(x(3))^2-x(3);x(1)+x(2)+x(3)-1]

x0=[1;0;0];
options=optimset('display','iter');
[x,fval]=fsolve('myfun1',x0,options)
结果执行如下:
x =
    0.6807
    0.2944
    0.0248
但是当我设初值为x0=[0;0;1]时,结果为:
x =
   -0.4704
   -0.0971
    1.5674

请问如何设置才能使得在设置可以使得在初值x0=[0;0;1]的情况下,得到非负解?



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-5-7 09:45:08
请大家帮忙
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-5-7 11:38:47
youngblues 发表于 2015-5-7 09:45
请大家帮忙
非线性方程的解可能不存在, 也可能不唯一, 你的问题很难解决.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-5-7 11:48:26
enxizheng 发表于 2015-5-7 11:38
非线性方程的解可能不存在, 也可能不唯一, 你的问题很难解决.
非常感谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-11-23 23:00:23
用1stOpt,加大于零的范围约束就行了,不需猜初值:
复制代码


x1: 0.68074188638042
x2: 0.294444475972497
x3: 0.0248136376327703
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群