如何在MATLAB中使用fzero得到给定方程的零点?

时间:2018-05-28 12:30:18

标签: matlab

我希望使用fzero解决以下功能:

f = lambda* exp(lambda^2)* erfc(lambda) - frac {C (T_m - T_i)}/{L_f*sqrt(pi)}

此处,CT_mT_iL_f均由用户输入。

在尝试使用fzero求解时,MATLAB会出现以下错误。

Undefined function or variable 'X'.

(其中X是上述变量)

这个错误是可以理解的。但它有办法吗?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在阅读完您的问题之后,我会尽力回答这个问题,因为它并不是很清楚你正在尝试什么以及你想要什么。 发布确切的代码行有助于理解(尽可能干净,消除混乱)。如果然后添加了matlab给出的输出,那么确保我们正确回答您的问题变得更加容易,并且它允许我们尝试它。通常,最好为用户输入的数据提供一些示例值。

首先要使它成为一个功能,它需要一个句柄。 或者,如果你把它保存为matlab文件,你通常不希望m文件中的其他输入变量。 所以,

function [out]=yourfun(in)
constants=your values; %you can set a input or inputdlg to get a value from the user
 out= something something, your lambda thingy probably; %this is the equation/function you're solving for
end

现在因为那不方便我建议以下

%declare or get your constants here, above the function makes it easier
syms lambda
f = lambda* exp(lambda^2)* erfc(lambda) - frac {C (T_m - T_i)}/{L_f*sqrt(pi)};
hf=matlabFunction(f); %this way matlab automatically converts it to a function handle, alternatively put @(lambda) in front
fzero(hf,x0)

此matlab页面也可能对您有所帮助;)