matlab中解非线性方程(组)涉及两个函数: fzero和fsolve。
这两个函数的区别在于:fzero仅用于求解一元标量函数的零点;而fsolve可以求解多元矢量函数的零点,也即可以用于求解方程组。
这两个函数共同点在于:都使用迭代算法求解,因此必须给定初始值。
两个函数的原型都可以概括为:X = solver(FUN,X0, ...); 其中,FUN是函数句柄,X0是初始值。solver可以代表fzero或fsolve。
举例说明FUN对应的函数的格式:
一元标量函数,可以直接定义匿名函数:
f1 = @(x) exp(x+1);
当然可可以用m文件。
多元矢量函数则必须用m文件来定义:
function Y = fn(X)
Y = zeros(3, 1); % 最好返回列向量
Y(1) = X(1)+X(2)+X(3);
Y(2) = X(1)*X(2)/X(3);
Y(3) = exp(X(1))+sin(X(2)+X(3));
注意,FUN是函数句柄;匿名函数在引用时直接写函数句柄的名称(”f1“),而m函数则必须在函数名前加@转换成句柄("@fn")。