【问题标题】:Curve fitting using a equation that involves a integral that isnt possible to solve analytically?使用涉及无法解析求解的积分的方程进行曲线拟合?
【发布时间】:2011-09-30 23:34:23
【问题描述】:

我正在尝试用 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 = handlerr(errid, errmsg, suppresserr);

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

【问题讨论】:

  • 非常感谢.. 它帮助了

标签: matlab integration curve-fitting


【解决方案1】:

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

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

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

ans =

   NaN

更改您的积分限制,使您不包含 0,或重新定义您的函数 f,使其在 0 时表现更好。

【讨论】:

    猜你喜欢
    • 2014-06-21
    • 1970-01-01
    • 2017-08-27
    • 2014-04-21
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多