24小时热门版块排行榜    

查看: 2053  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

tuyuting

新虫 (小有名气)

[求助] 求助~~~二元三次方程用什么软件求极值 已有3人参与

方程为:
z=-92.743+21.940*x+1.535*y-7.368*x^2-0.006*y^2+9.359*x*y/10000+0.803*x^3+(9.853*y^3)/1000000-(2.889*x*y^2)/10000+0.0255*y*x^2
其中x的范围为0到2.5  ;  y的范围为100到200

尝试用matlab求极大值,参考网上的教程,编的代码如下
syms x1 x2;
y=-92.743+21.940*x1+1.535*x2-7.368*x1^2-0.006*x2^2+9.359*x1*x2/10000+0.803*x1^3+(9.853*x2^3)/1000000-2.889*x1*x2^2/10000+0.0255*x1^2*x2
y=simple(y)
dydx1=diff(y,x1)
dydx2=diff(y,x2)
S=solve(dydx1,dydx2)
S.x1
S.x2

计算结果是一大堆公式
y =

-92743/1000+1097/50*x1+307/200*x2-921/125*x1^2-3/500*x2^2+9359/10000000*x1*x2+803/1000*x1^3+9853/1000000000*x2^3-2889/10000000*x1*x2^2+51/2000*x1^2*x2



y =

803/1000*x1^3+(-921/125+51/2000*x2)*x1^2+(1097/50+9359/10000000*x2-2889/10000000*x2^2)*x1-92743/1000+307/200*x2+9853/1000000000*x2^3-3/500*x2^2



dydx1 =

2409/1000*x1^2+2*(-921/125+51/2000*x2)*x1+1097/50+9359/10000000*x2-2889/10000000*x2^2



dydx2 =

51/2000*x1^2+(9359/10000000-2889/5000000*x2)*x1+307/200+29559/1000000000*x2^2-3/250*x2



S =

    x1: [4x1 sym]
    x2: [4x1 sym]


ans =

2159960412801613996538037/559496974666398295037916100*(72886429125179524/362347273980951+1/1347082716481861419470583858351152538612*6^(1/2)*((-370175839116662828260169439633164657624844729276059377616214790883620376135999116*(-5476821316928811165845458719373673857342723142053626365094440283912473672234915730406620344251339195447860696279655747108837039168333940756549124378354994324333114393516897294565622823208223590992509759772727657498758565678213186720956+10609852924969292005429057493877030663111181724710719087057168516226374251717872739658280037283020433159528825176519873227495027565825932363212*i*412301133939570303333491378185360079681893557830658491717107061914374469161463266738792864832300686314186337380891301039123524853581262522719077718180352606647106995680690230930274470027^(1/2))^(1/3)+217*。。。。省略


ans =

72886429125179524/362347273980951+1/1347082716481861419470583858351152538612*6^(1/2)*((-370175839116662828260169439633164657624844729276059377616214790883620376135999116*(-5476821316928811165845458719373673857342723142053626365094440283912473672234915730406620344251339195447860696279655747108837039168333940756549124378354994324333114393516897294565622823208223590992509759772727657498758565678213186720956+10609852924969292005429057493877030663111181724710719087057168516226374251717872739658280037283020433159528825176519873227495027565825932363212*i*412301133939570303333491378185360079681893557830658491717107061914374469161463266738792864832300686314186337380891301039123524853581262522719077718180352606647106995680690230930274470027^(1/2))^(1/3)+217*。。。省略

得不到具体的数值
麻烦各位虫友帮忙看看,代码出错在哪儿?多谢
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

WanderingHeart

铁杆木虫 (著名写手)

引用回帖:
3楼: Originally posted by tuyuting at 2015-07-13 21:51:01
画出来了,但是想求出准确的值
最大值(x,y,z)大概是(1.5,185,40)...

在已知的这样一个值附近更精确的找极值应该不是个困难的事情,即使你只是简单的对附近的点离散化进行扫描也可以找到啊。
4楼2015-07-14 07:05:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

WanderingHeart

铁杆木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
为什么不能画一个三维空间的曲面出来,这样的话首先可以直观上看到极值大概出现在哪里,然后就好办了啊。
2楼2015-07-13 21:43:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tuyuting

新虫 (小有名气)

引用回帖:
2楼: Originally posted by WanderingHeart at 2015-07-13 14:43:16
为什么不能画一个三维空间的曲面出来,这样的话首先可以直观上看到极值大概出现在哪里,然后就好办了啊。

画出来了,但是想求出准确的值
最大值(x,y,z)大概是(1.5,185,40)
3楼2015-07-13 21:51:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
tuyuting: 金币+20, 有帮助 2015-07-17 10:57:05
引用回帖:
3楼: Originally posted by tuyuting at 2015-07-13 21:51:01
画出来了,但是想求出准确的值
最大值(x,y,z)大概是(1.5,185,40)...

你确定z最大值为40左右么?
x=2.5
y=200时
z=77.880825
这是我找到的z的最大值。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2015-07-14 15:46:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见