資源簡介
用matlab實現的牛頓外點罰函數法,求解n個未知變量
代碼片段和文件信息
%創建人:???常文靜
%?功能:????當未知數有n個時,用罰函數法求最優解
%???????????本程序中的目標函數是f=(x1-0.2)^2+(x2-0.2)^2+...+(xn-0.2)^2約束條件為x1+x2+...
%???????????+xn=3
%?參數:???
%?返回值:???
%?主要思路:?
%?備注:????
%?調用方法:?
%?日期:?????2015/4/23?
%================================================================
%定義要求的未知變量x1x2....xn罰因子M
n=20;
for?i=1:n
????syms?([‘x‘num2str(i)]);
end
syms?M?positive;
x?=?[];
for?i=1:n
????x?=?[xsym([‘x‘num2str(i)])];????%將未知變量x1x2....xn存到數組x中
end
m(1)=10;????????????????????%c為遞增系數。賦初值。
c=8;
d=0;
Q=3;%需要滿足的約束條件
for?i=1:n
????d=d+(x(i)-0.2).^2;???%目標函數
end
f=d+M*(sum(x)-Q).^2;????%增加罰函數的目標函數
f0(1)=5;???%f0為所求最優解下的f的值。賦初值5。
%求偏導、海森矩陣
for?i=1:n
????fx(i)=diff(fx(i));??%f的一階偏導
end
for?i=1:n
????for?j=1:n
????????fxx(ij)=diff(fx(i)x(j));??%f的二階
- 上一篇:互信息matlab源代碼
- 下一篇:圖像處理_jpeg格式_MATLAB實現
評論
共有 條評論