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

在Matlab中求解含参数非线性方程组:添加参数c后如何修改代码?

在Matlab中给含参数的非线性方程组传参的修改方案

给带参数的非线性方程组用fsolve求解,核心是解决参数c的传递问题,同时注意原代码里的一个笔误:第二行的cx(1)应该是c*x(1),否则会报错。下面是两种常用的修改方法:

方法一:通过匿名函数传递参数

这是最直接常用的方式,先修改函数定义让它接收x和c两个参数,再用匿名函数把c绑定后传给fsolve:

% 主脚本部分
c = 1; % 先定义你需要的参数值
x0 = [0,0];
x = fsolve(@(x) myfunc(x,c), x0)

%===================
function F = myfunc(x,c)
F(1) = 4*c*(c*x(1) - 2)^3 + 2*c*x(2)^2 *(c*x(1)-2);
F(2) = 2*x(2)*(c*x(1) - 2)^2 + 2*(x(2)+1); % 修正原代码的笔误
end

方法二:使用嵌套函数

如果你的代码是写在一个主函数里,可以用嵌套函数直接访问外层的c变量,不用显式传参:

function solve_system()
    c = 1; % 定义参数
    x0 = [0,0];
    x = fsolve(@myfunc, x0);
    
    % 嵌套函数,直接使用外层的c变量
    function F = myfunc(x)
        F(1) = 4*c*(c*x(1) - 2)^3 + 2*c*x(2)^2 *(c*x(1)-2);
        F(2) = 2*x(2)*(c*x(1) - 2)^2 + 2*(x(2)+1); % 修正笔误
    end
end

注意事项

  • 优先用前两种方法,不推荐用全局变量,全局变量容易导致变量污染,增加调试难度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 01:04:55