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

目标函数:functionf=fconfun(x)f=norm((inv(ln))*[x(1);x(2);x(3)])主程序:clearallclca=randn(1,3... 目标函数:
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;
我修改了好多次,为什么错了,毕业论文中要用的,很急,那位高手帮帮忙啊!小弟不胜感激啊!
展开
 我来答
twang_buaa
2008-05-22 · TA获得超过1062个赞
知道小有建树答主
回答量:389
采纳率:0%
帮助的人:353万
展开全部
主要是你的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,然后你的程序应该就不会有错了~!
咸曲荀志强
2019-07-06 · TA获得超过3803个赞
知道大有可为答主
回答量:3203
采纳率:24%
帮助的人:399万
展开全部
fmincon函数是默认从你给定的x0为中心开始搜索,直至找到函数的最小值,并返回距离x0最近的函数最小值对应的x值
这样我们在计算的时候就必须预先判定函数最小值的对应的x值的大概范围
确保我们定的初值x0在所求的x附近,以减少计算量
在利用调用f(x)就可以求得最小值了
如果你给的是周期函数
那你给不同的值一般应该会得到不同x值
但应该f(x)值是一致的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式