我是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);
答案 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)