作业帮 > 数学 > 作业

MATLAB 的多元非线性方程求极值问题

来源:学生作业帮 编辑:神马作文网作业帮 分类:数学作业 时间:2024/09/21 22:27:41
MATLAB 的多元非线性方程求极值问题
function f=fun(x)
f=0.5742*x(1)+11.8636*x(3)-0.1693*x(4)-0.3868*x(5)-0.0674*(x(1)^2)-0.3546*(x(2).^2)-1.2180*(x(3).^2)+0.0123*(x(4).^2)+0.0012*(x(5).^2);
x0=[5,2.75,6,27,60] %起始点
[x,fval]=fminunc(@fun,x0)
为什么会被报错?
MATLAB 的多元非线性方程求极值问题
f=@(x) 0.5742*x(1)+11.8636*x(3)-0.1693*x(4)-0.3868*x(5)-0.0674*(x(1)^2)-0.3546*(x(2).^2)-1.2180*(x(3).^2)+0.0123*(x(4).^2)+0.0012*(x(5).^2);
x0=[5,2.75,6,27,60] %起始点
[x,fval]=fminunc(f,x0)
再问: 他肿么报错> In fminunc at 241 ??? Error using ==> optim\private\lineSearch fPrimeInitial has to be negative. Error in ==> optim\private\fminusub at 202 [alpha,f,gPlusTimesDir,grad,exitflagLnSrch,funcCountLnSrch] = ... Error in ==> fminunc at 261 [x,FVAL,GRAD,HESSIAN,EXITFLAG,OUTPUT] = fminusub(funfcn,x,verbosity, ...
再答: 你的matlab是什么版本啊
再问: 7.0
再答: 这个函数是用来求最小值的,如果你要求最大值,需要在原来的函数前面加上负号,这个你需要处理一下。 我算出来的最值是-1.6550e+030
再问: 你算出来的这个就是最大值了么?我的天哪~不可能这么大的~可以给X1-X5设定范围么?
再答: 你的函数要求最值,必须给定一个范围,因为你的函数没有极大值,如果不限制的话,没法求。你的函数其实就是一个多元多项式,你可以使用求偏导数的方式手算求解的。
再问: 我数学很渣~所以~可以加QQ指导我么?我QQ296790953
再答: 使用fmincon函数吧,带约束的非线性优化。
再问: 可以帮我写成粘贴过去有结果的形式么?我现在重复做了太多次已经完全凌乱了= =都不知道该肿么入手了x1范围1-10,x2范围0.75-5x3范围4-6x4范围26-30x5范围60-140
再答: 你这是5*3还是5*10^3啊 f=@(x) -(0.5742*x(1)+11.8636*x(3)-0.1693*x(4)-0.3868*x(5)-0.0674*(x(1)^2)-0.3546*(x(2).^2)-1.2180*(x(3).^2)+0.0123*(x(4).^2)+0.0012*(x(5).^2));%0.75-5x3范围4-6x4范围26-30x5范围60-140 x0=[5,2.75,6,27,60] %起始点 [x,fval]=fmincon(f,x0,[],[],[],[],[1 0.75 4 26 60],[10 5*3 6*4 30*5 140]) 最后 的两个就是限制
再问: x1范围1-10,x2范围0.75-5;x3范围4-6;x4范围26-30;x5范围60-140
再答: f=@(x) -(0.5742*x(1)+11.8636*x(3)-0.1693*x(4)-0.3868*x(5)-0.0674*(x(1)^2)-0.3546*(x(2).^2)-1.2180*(x(3).^2)+0.0123*(x(4).^2)+0.0012*(x(5).^2));%0.75-5x3范围4-6x4范围26-30x5范围60-140 x0=[5,2.75,6,27,60] %起始点 [x,fval]=fmincon(f,x0,[],[],[],[],[1 0.75 4 26 60],[10 5 6 30 140]) 你要求f的最大值,所以我给f前面加上了负号,这个你要弄清楚了!
再问: 嗯~这个总算是出了个答案了~可以拜托您加QQ么?那么麻烦的问题我应该不会再问第二次~但是觉得您很可靠的样子~~~~(>_