You need to enable JavaScript to run this app. Matlab中fminbnd命令对应计算的目标函数表达式判断
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中fminbnd命令对应计算的目标函数表达式判断

Matlab fminbnd命令的目标函数辨析

原问题描述

给出的Matlab执行代码为:fminbnd(@(x) (sin(x).^2-1),0,pi)
该命令的功能是在区间[0, pi]内求解单变量函数的最小值,当前需要从两个候选选项中匹配正确的目标函数:

  • 选项(a):f(x)=1-sin x^2
  • 选项(b):f(x)=1-sin^2x
    此前尝试将代码输出的极值点x代入两个选项,得到的计算结果均为1,无法区分二者差异。

辨析核心逻辑

Matlab运算规则拆解

Matlab的运算优先级遵循:括号运算 > 内置函数运算 > 幂运算。针对代码内的核心表达式sin(x).^2,实际执行步骤为:

  1. 对输入x计算正弦值sin(x)
  2. 对得到的正弦值逐元素做平方运算
    等价于数学记法的(sinx)^2 = sin²x,整个匿名函数的数学表达式为sin²x -1。

两个候选选项的语义差异

按照通用数学书写的运算优先级规则:

  • 选项(a)的1-sin x^2:幂运算优先级高于三角函数,实际计算顺序为“先算x的平方,再对x²取正弦值”,即表达式本质为1 - sin(x²),和代码的运算顺序完全不符。
  • 选项(b)的1-sin^2x:sin²x是标准数学记法,即“先算sinx,再对sinx的结果平方”,和代码内sin(x).^2的核心运算逻辑完全匹配。

之前代入结果无法区分的原因:
fminbnd求解的sin²x -1在[0, pi]区间内的最小值点在x=0或x=pi处,此时sinx=0,x的值也接近0,x²同样接近0,sin(x²)的计算结果也为0,两个表达式在这个特殊点的计算值完全重合,自然无法区分。换用区间内非极值点(比如x=pi/2)测试即可明显看到差异:此时代码的目标函数值为0,对应选项(b)的计算值同样为0,选项(a)的计算值约为0.62,和代码结果完全不匹配。

结论

两个选项中,和代码运算逻辑匹配的是选项(b)。
注:代码内的目标函数虽然和选项(b)的表达式差一个负号,但两个候选选项的核心差异是三角函数的作用对象,不存在其他匹配可能——选项(a)的运算顺序从根本上和代码逻辑不符,哪怕符号调整也无法匹配代码的计算规则,题目给出的选项本身存在符号方向的表述偏差,但从运算逻辑匹配度判断,选项(b)是唯一对应代码核心运算逻辑的选项。


内容的提问来源于stack exchange,提问作者John Black

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.06 14:54:02