使用涉及无法解析求解的积分的方程进行曲线拟合?

问题描述 投票:0回答:1

我正在尝试用 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, suggesterr );

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

matlab curve-fitting numerical-integration
1个回答
2
投票

找出你的函数返回的原因

NaN
NaN
0 除以 0 的结果,或 其他原因

您的函数

f(x)
将计算
0/0
x=0
:

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

ans =

   NaN

更改积分限制,以便不包含 0,或重新定义函数

f
,以便在 0 时表现更好。

© www.soinside.com 2019 - 2024. All rights reserved.