24小时热门版块排行榜    

查看: 1992  |  回复: 9

crazyiyy

木虫 (小有名气)

[求助] MATLAB解非线性方程组 已有1人参与

本人有个非线性方程组,已用1stOpt解出,但需要将结果导入到Matlab中,十分麻烦。因此想用Matlab将此方程组解出来,肯定路过大神帮忙!题目如下
1/((4.5+(8.5)*(x+y-x*y)+(33/2)*(x+y-x*y)^2+(33/2)*(x+y-x*y)^3+(33/2)*(x+y-x*y)^4)*(1-(x+y-x*y))/(1-(x+y-x*y)^5)+(1-(12/(48*2^3-4)))*(1-x)+6*(12/(48*2^3-4))+(1-(12/(48*2^3-4)))*(1-x)*(12*(1-y)+1))-z=0;
         (13*(1-(1-z)^8)+9*z*(1-z)^8)*(1-x)*(1-y)=x;
         (1-(1-z)^8)/(2-(1-z)^9)=y;
注:其中x,y,z都是[0,1]数,一定需要用matlab解出来,感激不尽!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

用心做好每一件事
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
crazyiyy: 金币+100, ★★★★★最佳答案, 衷心地感谢您对我的帮助! 2014-07-14 16:20:17
CODE:
function jie_fun
u0=[0.5 0.5 0.5];
u=fsolve(@myfun,u0)
f_val=myfun(u)



function f=myfun(u)
x=u(1);
y=u(2);
z=u(3);
f(1)=1/((4.5+(8.5)*(x+y-x*y)+(33/2)*(x+y-x*y)^2+(33/2)*(x+y-x*y)^3+(33/2)*...
    (x+y-x*y)^4)*(1-(x+y-x*y))/(1-(x+y-x*y)^5)+(1-(12/(48*2^3-4)))*(1-x)+6*...
    (12/(48*2^3-4))+(1-(12/(48*2^3-4)))*(1-x)*(12*(1-y)+1))-z;
f(2)= (13*(1-(1-z)^8)+9*z*(1-z)^8)*(1-x)*(1-y)-x;
f(3)=(1-(1-z)^8)/(2-(1-z)^9)-y;

计算结果:
u =

    0.8138    0.3049    0.0733


目标函数值f_val =

  1.0e-008 *

    0.0008    0.1291   -0.0216
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-07-14 16:03:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

以下程序第对2楼中程序的改进,提高解的小数点后的位数。
CODE:
function jie_fun
clear a;clc
format long
u0=[0.5 0.5 0.5];
u=fsolve(@myfun,u0)
f_val=myfun(u)



function f=myfun(u)
x=u(1);
y=u(2);
z=u(3);
f(1)=1/((4.5+(8.5)*(x+y-x*y)+(33/2)*(x+y-x*y)^2+(33/2)*(x+y-x*y)^3+(33/2)*...
    (x+y-x*y)^4)*(1-(x+y-x*y))/(1-(x+y-x*y)^5)+(1-(12/(48*2^3-4)))*(1-x)+6*...
    (12/(48*2^3-4))+(1-(12/(48*2^3-4)))*(1-x)*(12*(1-y)+1))-z;
f(2)= (13*(1-(1-z)^8)+9*z*(1-z)^8)*(1-x)*(1-y)-x;
f(3)=(1-(1-z)^8)/(2-(1-z)^9)-y;

计算结果:
u =

   0.813803728151198   0.304867313866725   0.073289552279229


f_val =

  1.0e-008 *

   0.000793234922192   0.129125732328816  -0.021619173118381

已验证,上述结果与1stopt结果一致。

» 本帖已获得的红花(最新10朵)

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2014-07-14 16:14:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

crazyiyy

木虫 (小有名气)

送红花一朵
引用回帖:
3楼: Originally posted by 月只蓝 at 2014-07-14 16:14:10
以下程序第对2楼中程序的改进,提高解的小数点后的位数。


function jie_fun
clear a;clc
format long
u0=;
u=fsolve(@myfun,u0)
f_val=myfun(u)



function f=myfun(u)
x=u(1);
y=u(2);
z=u(3);
...

您好! 您的答案的确跟1stOpt一致,还有个问题希望您能为我解惑。如果我需要对方程组中的某些系数进行变化,进而得到一组解,我应该如何操作。
例如 我需要对方程1中的48*2^3 变为48*2^x  其中x=1,2,3,4 这样我应该得到4组解,
用心做好每一件事
4楼2014-07-14 16:39:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
4楼: Originally posted by crazyiyy at 2014-07-14 16:39:24
您好! 您的答案的确跟1stOpt一致,还有个问题希望您能为我解惑。如果我需要对方程组中的某些系数进行变化,进而得到一组解,我应该如何操作。
例如 我需要对方程1中的48*2^3 变为48*2^x  其中x=1,2,3,4 这样我应 ...

我的处理办法是把x定义为全局变量。
以前已经有过相关代码了,参见:
http://muchong.com/bbs/viewthread.php?tid=6267100&authorid=1122189

» 本帖已获得的红花(最新10朵)

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2014-07-14 16:45:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
4楼: Originally posted by crazyiyy at 2014-07-14 16:39:24
您好! 您的答案的确跟1stOpt一致,还有个问题希望您能为我解惑。如果我需要对方程组中的某些系数进行变化,进而得到一组解,我应该如何操作。
例如 我需要对方程1中的48*2^3 变为48*2^x  其中x=1,2,3,4 这样我应 ...

以及:
http://muchong.com/bbs/viewthread.php?tid=6087640
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
6楼2014-07-14 16:47:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

crazyiyy

木虫 (小有名气)

送红花一朵
引用回帖:
5楼: Originally posted by 月只蓝 at 2014-07-14 16:45:00
我的处理办法是把x定义为全局变量。
以前已经有过相关代码了,参见:
http://muchong.com/bbs/viewthread.php?tid=6267100&authorid=1122189...

您好! 我还有最后一个问题,就是matlab种一定要给出初值, 请问初值的调试有没有什么方法或者经验啊,或者说如何判断当前初值得到的解是正解。
用心做好每一件事
7楼2014-07-14 17:06:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
7楼: Originally posted by crazyiyy at 2014-07-14 17:06:19
您好! 我还有最后一个问题,就是matlab种一定要给出初值, 请问初值的调试有没有什么方法或者经验啊,或者说如何判断当前初值得到的解是正解。...

把算出来的解代回原方程,看能有多接近于0,3楼正是给出了这些数值。
此外,对于多解的情况,最终解的如果有物理意义要求,举例说,比如未知数是开尔文温度T,是不可能小于0的,在解里面就应当取满足实际物理意义的。
在直接调用fsolve的情况下,初值基本靠自己尝试,大概判断一下。
究其本质而言,解方程组问题是最优化问题,调用具有全局优化能力的算法,比如说遗传算法,可以降低对初值的要求。
1stopt软件解决最优化问题的强大之处其一在于在操作者层面上不需要赋予初值,即可获得相当优秀的结果。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
8楼2014-07-14 18:37:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mjjackey

新虫 (初入文坛)

引用回帖:
8楼: Originally posted by 月只蓝 at 2014-07-14 18:37:07
把算出来的解代回原方程,看能有多接近于0,3楼正是给出了这些数值。
此外,对于多解的情况,最终解的如果有物理意义要求,举例说,比如未知数是开尔文温度T,是不可能小于0的,在解里面就应当取满足实际物理意义 ...

用fsolve,貌似也只能设置三种算法,没办法设置更多的算法“调用具有全局优化能力的算法,比如说遗传算法,”
9楼2015-03-02 16:40:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
9楼: Originally posted by mjjackey at 2015-03-02 16:40:35
用fsolve,貌似也只能设置三种算法,没办法设置更多的算法“调用具有全局优化能力的算法,比如说遗传算法,”...

“究其本质而言,解方程组问题是最优化问题,调用具有全局优化能力的算法,比如说遗传算法,可以降低对初值的要求。

先将原问题转化为最优化问题,调用遗传算法算出初值,该初值代入fsolve函数。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
10楼2015-03-02 17:20:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 crazyiyy 的主题更新
信息提示
请填处理意见