关于matlab最优化中fmincon函数的使用问题

来源:百度知道 编辑:UC知道 时间:2024/09/21 04:23:43
目标函数:
function f = fconfun(x)
f = norm((inv(ln))*[x(1);x(2);x(3)])

主程序:
clear all
clc
a = randn(1,3);
ln = [1+a(3),a(2),a(1);a(1),1+a(3),a(2);a(2),a(1),1+a(3)];
x0 = [-1,-1,-1];
[x,f] = fmincon('fconfun',x0,[],[],[],[],[-1.000001,-1.000001,-1.000001],[1.000001,1.000001,1.000001],'fconfun2')

非线性约束:
function [c,ceq] = fconfun2(x)
c(1) = x(1)^2 - 1;
c(2) = x(2)^2 - 1;
c(3) = x(3)^2 - 1;
c(4) = -x(1)^2 + 1;
c(5) = -x(2)^2 + 1;
c(6) = -x(3)^2 + 1;
ceq=0;
我修改了好多次,为什么错了,毕业论文中要用的,很急,那位高手帮帮忙啊!小弟不胜感激啊!

主要是你的fconfun函数中的ln变量没办法赋值进去

你那样写肯定是不对的,fmincon函数求它的最优解时,只是吧x作为变量,当然这也是你希望的

个然建议ln = [1+a(3),a(2),a(1);a(1),1+a(3),a(2);a(2),a(1),1+a(3)]求出来后,再把ln的确切的值带进fconfun函数中,让fconfun函数只有一个变量x,然后你的程序应该就不会有错了~!