fmincon函数求极值[通俗易懂]

fmincon函数求极值[通俗易懂]matlab中的函数fmincon可用于求可以求取多元函数的极值,其约束包括五种:1、线性不等式约束;2、线性等式约束;3、变量约束;4、非线性不等式约束;5、非线性等式约束。其形式如下:x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)求解问题的标准型为minF(X)s.tAX<=b(线性不等式约束)AeqX=beq(线性等…

大家好,又见面了,我是你们的朋友全栈君。

matlab中的函数fmincon可用于求可以求取多元函数的极值,其约束包括五种:1、线性不等式
约束;2、线性等式约束;3、变量约束;4、非线性不等式约束;5、非线性等式约束。

其形式如下:

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

求解问题的标准型为
min F(X)
s.t
AX <= b(线性不等式约束)
AeqX = beq(线性等式约束)
G(x) <= 0(非线性不等式约束)
Ceq(X) = 0(非线性等式约束)
lb <= X <= ub(变量约束)
matalb实例:
在这里插入图片描述

func.m

clc
clear
close all
fun=@(x)x(1)^2+x(2)^2+8;
x0=rand(2,1);
A=[];
b=[];
Aeq=[];
beq=[];
vlb=[0,0];
vub=[];
exitflag=1;
[x,fval,exitflag]=fmincon(fun,x0,A,b,Aeq,beq,vlb,vub,'mycon')

mycon.m

function [g,ceq]=mycon(x)
g=-x(1)^2+x(2);
ceq=-x(1)-x(2)^2+2;

其中,func是目标函数;x0是给定的初值;A,b对应线性不等式约束;Aeq,beq对应线性等式约束;vlb,vub对应变量约束;mycon对应非线性不等式和等式约束

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150084.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • VC++消息钩子编程「建议收藏」

    VC++消息钩子编程「建议收藏」一、消息钩子的概念1、基本概念Windows应用程序是基于消息驱动的,任何线程只要注册窗口类都会有一个消息队列用于接收用户输入的消息和系统消息。为了拦截消息,Windows提出了钩子的概念。钩子(H

  • nginx和apache优缺点

    nginx和apache优缺点nginx与Apache的对比今天准备较详细的对比一下apachehttpd与nginx两个web服务器的异同点、优缺点。由于我并不是做web开发的,所以有什么理解错误还请指出,想要了解它们是因为工作中有时候会用到它,有系统中用到了nginx+apache。本文绝大多数资料都是摘抄网上,自己做的只就是整合网上零散的资源然后加上自己的一点见解。简单的说apachehttpd和nginx都是we…

  • navicat在线生成激活码【最新永久激活】

    (navicat在线生成激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~83PV…

  • windows 怎样关闭redis

    windows 怎样关闭redis

    2021年10月16日
  • java容器类—概述

    java容器类—概述

  • iservice list方法_MyBatis-Plus IService<T> 方法汇总[通俗易懂]

    一、IService使用1.getOne(),这个是方法返回结果不止一条则会抛出异常,如果想默认取第一条结果,可以给这方法传第二个参数为false。@TestpublicvoidgetOne(){Userone=userService.getOne(Wrappers.lambdaQuery().eq(User::getAge,31),false);System.out.println…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号