You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB调用fzero函数报错无效函数句柄如何解决

报错原因
  • MATLAB 新版fzero函数已废弃字符串表达式作为入参的支持,仅接受函数句柄类型作为第一个输入参数
  • 你当前传入的是字符串类型的表达式,fzero会尝试将其解析为函数名或者带@前缀的合法函数句柄,匹配失败就会抛出找不到对应函数的错误
修复方法
  1. 将原代码中字符串形式的函数定义改为匿名函数句柄,修改第一行代码为:
f = @(x) 0.1*x - sin(2 * x) + 0.25;

其中@(x)是MATLAB匿名函数的定义语法,括号内的x是函数的输入参数,后续跟函数的计算表达式,fzero可以直接调用该句柄完成不同取值下的函数计算。

  1. 如果你用到的自定义函数fgraf仅支持字符串类型的表达式入参,可以分开定义两个变量分别给两个函数使用,完整修改后的代码如下:
% 字符串版本给fgraf用
f_str = '0.1*x - sin(2 * x) + 0.25';
% 函数句柄版本给fzero用
f = @(x) 0.1*x - sin(2 * x) + 0.25;

[a, b] = fgraf(f_str, -3, 3);
zs1 = fzero(f, [a, b]);
[a, b] = fgraf(f_str, -3, 3);
zs2 = fzero(f, [a, b]);
[a, b] = fgraf(f_str, -3, 3);
zs3 = fzero(f, [a, b]);

内容的提问来源于stack exchange,提问作者Deividas Kek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:15:10