无法在Matlab中使用`fzero()`函数

时间:2014-12-02 10:58:42

标签: matlab equation nonlinear-functions

我是Matlab的新手。我正在尝试使用这个内置的Matlab函数fzero()来解决一个非线性方程,但它没有给我结果。

主文件就像

A = 5;
B = 6;
C = 10;

eq = equation (A, B, C);

fzero(@(x)eq);

另一个功能文件是:

function eq = equation (A, B, C)

syms x;
eq = A*x.^2 + B*x + C*(asinh(x)) ;

当我运行此代码时,出现以下错误:

Error using fzero (line 118)
The input should be either a structure with valid fields or at least two arguments to
FZERO.

Error in main (line 7)
fzero(@(x)eq); 

有人可以帮我这个吗?

修改 当我将检查点指定为0时,它会返回以下错误。

未定义的功能' isfinite'对于输入参数类型为' sym'。

Error in fzero (line 308)
    elseif ~isfinite(fx) || ~isreal(fx)

Error in main (line 7)
fzero(@(x)eq, 0); 

2 个答案:

答案 0 :(得分:0)

您需要指定一个猜测, x0

fun = @sin; % function
x0 = 3; % initial point
x = fzero(fun,x0)

答案 1 :(得分:0)

您的代码中存在多个错误。首先,fzero用于查找非线性方程的数字根,它不用于符号计算(检查documentation),因此请删除syms x。在您的案例中调用fzero的正确方法如下:

A = 5;
B = 6;
C = 10;
eq = @(x) A*x^2 + B*x + C*(asinh(x));
x0 = 0; % or whatever starting point you want to specify
x = fzero(eq,x0)