使用包含无法通过分析解决的积分的等式进行曲线拟合?

时间:2011-07-08 04:05:26

标签: matlab integration curve-fitting

我正在尝试从2天开始曲线拟合我使用此等式的一些数据

f = @(x) ((x.^4) .* exp(x)) ./((exp(x)-1).^2);
gama*x + 9*R*((x/a)^3)*quad(f,0,a/x);

这里x是独立变量而a是未知的,gama是已知的。我最成功地尝试了以下程序。

function C=myquad(a,T)
C = zeros(size(T));
gama = 20 * 1e-3;
R = 8.314;
f = @(x) ((x.^4) .* exp(x)) ./((exp(x)-1).^2);
for n = 1:length(T)
    C(n) = gama*T(n) + 9*R*((T(n)/a)^3)*quad(f,0,a/T(n));
end


>>fit(T_0,C_0,fittype('myquad(a,x)'));

它返回以下错误

??? NaN由模型函数计算,拟合不能继续。尝试使用或收紧系数的上限和下限。

==>中的错误适合443 errstr = handleerr(errid,errmsg,suppresserr);

不知道该怎么做。请指导..

1 个答案:

答案 0 :(得分:2)

找出您的函数返回NaN的原因。 NaN的结果是0除以0或other causes

您的函数f(x)将为0/0计算x=0

>> f = @(x) ((x.^4) .* exp(x)) ./((exp(x)-1).^2);
>> f(0)

ans =

   NaN

更改集成限制,以便不包含0,或重新定义函数f,使其更好地表现为0。