关于MATlab的问题,回答正确后再加100分~!急!!!

来源:百度知道 编辑:UC知道 时间:2024/05/30 10:55:45
用Matlab写一个程序,求下列函数的最小值!
f(x1,x2) = 3*x1^2+2*x1*x2+x2^2,其中x1,x2都是变量.
要求:
变量为何值时,函数有最小值,且要写出最小值是多少!

我要一字不差的程序,能够直接复制运行出结果,答出来了我给100分!说话算数,哥哥姐姐们帮忙呀快!~

%by dynamic
%see also http://www.matlabsky.com
%contact me matlabsky@gmail.com
%2009.2.
%
matlab优化工具箱提供了fmin**系列函数可以进行目标函数最小值的求解

对于你的问题常用其中的两个fminunc和fminsearch ,从结果可以看出fminunc效果好些

clc
clear
%初建目标函数
fun=@(x)3*x(1).^2+2*x(1).*x(2)+x(2).^2;
%初值
x0=[0.1 0.1];
%优化选项
options=optimset('largescale','off','display','none','tolfun',1e-20,'tolx',1e-10);
%调用优化函数fminunc
[x,fval]=fminunc(fun,x0,options);
display(['使用fminunc函数,计算得:在x1=' num2str(x(1)) ',x2=' num2str(x(2)) ',取得目标函数最小值' num2str(fval)])
%调用fminsearch
[x,fval]=fminsearch(fun,x0,options);
disp(char(13))
display(['使用fminsearch函数,计算得:在x1=' num2str(x(1)) ',x2=' num2str(x(2)) ',取得目标函数最小值' num2str(fval)])

运行结果为(根据不同的初值,可能得到不同的