matlab——三元二次函数求最值

fmincon函数

今天晚上帮姐姐求一个方程的最值

果断用matlab啊

刚开始想得挺简单的,就是for循环

后来一想计算量太大

百度了一下都是用fmincon这个函数

可是算出来的是最小值


然后又找求最大值的函数

可是找了半天没找到

最后我机智的把函数前面加了一个负号

哈哈


贴一下函数吧,挺简单的

比如说

Y=99.27932+20.21776X1+4.67531X2-5.32589X3-1.26466X1^2-4.79916X2^2-6.13593X3^2-2.50155X1X2-4.77292X1X3-2.61070X2X3
这个方程自变量都在-1.682-1.682之间时Y的最大值。。。

options = optimset('Algorithm','active-set');

 [X,FVAL,EXITFLAG] = fmincon(@(x)(-(99.27932+20.21776*x(1)+4.67531*x(2)-5.32589*x(3)-1.26466*x(1)^2-2.50155*x(1)*x(2)-4.79916*x(2)^2-6.13593*x(3)^2-4.77292*x(1)*x(3)-2.61070*x(2)*x(3))),[0 0 0],[],[],[],[],[-1.682 -1.682 -1.682],[1.682 1.682 1.682],[],options) 

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB中,可以使用优化工具箱中的函数解二元一次函数最值。以下是一种常见的方法: 1. 定义二元一次函数:首先,需要定义你要最值的二元一次函数。假设函数为 f(x, y) = ax^2 + by^2 + cx + dy + e,其中 a、b、c、d、e 是函数的系数。 2. 创建优化问题:使用 `optimproblem` 函数创建一个优化问题对象。例如,可以使用以下代码创建一个最小化问题: ```matlab problem = optimproblem('Minimize'); ``` 3. 添加变量:使用 `optimvar` 函数添加变量。对于二元一次函数,需要添加两个变量 x 和 y。假设 x 和 y 的取值范围分别为 [x_min, x_max] 和 [y_min, y_max]。 ```matlab x = optimvar('x', [x_min, x_max]); y = optimvar('y', [y_min, y_max]); ``` 4. 添加约束:根据需要,可以添加额外的约束条件。例如,如果要 x 和 y 的和等于某个常数 k,可以使用以下代码添加约束: ```matlab constraint = x + y == k; problem.Constraints.constraint = constraint; ``` 5. 添加目标函数:使用 `addObjective` 函数将目标函数添加到问题中。对于最小化问题,可以使用以下代码添加目标函数: ```matlab objective = a*x^2 + b*y^2 + c*x + d*y + e; problem.Objective = objective; ``` 6. 解问题:使用 `solve` 函数解问题,并获取最优解。 ```matlab [solution, fval] = solve(problem); ``` 其中,`solution` 是最优解的结构体,包含了变量的取值,`fval` 是最优解对应的函数值。 以上是使用优化工具箱来解二元一次函数最值的一种方法。当然,还有其他方法可以实现相同的功能。如果你对其他方法感兴趣,可以提出相关问题,我会尽力回答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值