我希望使用fzero解决以下功能:
f = lambda* exp(lambda^2)* erfc(lambda) - frac {C (T_m - T_i)}/{L_f*sqrt(pi)}
此处,C
,T_m
,T_i
和L_f
均由用户输入。
在尝试使用fzero
求解时,MATLAB会出现以下错误。
Undefined function or variable 'X'.
(其中X
是上述变量)
这个错误是可以理解的。但它有办法吗?我该如何解决这个问题?
答案 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页面也可能对您有所帮助;)