方程如下,
![用matlab擬合積分方程- 急用!坐等!非常感謝!]()
自變量是T,因變量是Cp。Tt 和ΔH 是擬合常數(shù)。請用 β(T) 對T作圖,并根據(jù)以上方程擬合得出Tt 和ΔH的值。(Tend是數(shù)據(jù)的最后一個T值。)
以上是對于曲線只有一個峰值的情況,對于兩個峰的情況,方程有一點小改動,如下,
![用matlab擬合積分方程- 急用!坐等!非常感謝!-1]()
作圖要求跟第一種情況一樣。因為本人對于matlab知之甚少,哪怕是一點小改動對于我來說都是座高山,所以只能勞煩高手了。附件里有單峰和雙峰的數(shù)據(jù)舉例。第一列是T值,第二列是Cp值。
另外以下是我曾經(jīng)找一個朋友幫忙做的程序,當(dāng)時對方程的理解錯誤,把Cp完全積分出來作為Y值擬合的,結(jié)果在Tt轉(zhuǎn)折點附近總是積分不好,程序和擬合結(jié)果如下,(相應(yīng)的數(shù)據(jù)也在附件里面,data.txt)。希望能有參考價值。
clc
clear all
close all
d = load('data.txt', '-ASCII');
XX = d(:,1);
YY = d(:,2);
%idx = (XX>280);
idx = (XX>304);
X = XX(idx)
Y = YY(idx);
R = 8.314;
f = @(a,x)a(1)*(1-exp( a(2)/R * (1./x - 1/a(3))) ) ;
% hyperbolic-like
%f = @(a,x)a(1) * (1-(1-exp( a(2)/R * (1./x - 1/a(3))) ) ./ (1 + exp( a(2)/R * (1./x-1/a(3))) )) ;
a0 = [1400 220000 304]
[a1,r] = nlinfit(X, Y, f, a0);
A = a1(1)
B = a1(2)
T = a1(3)
mse = sum(r.^2)/(length(r)-length(a1))
plot(XX,YY,'k', XX, f(a1,XX), 'r')
ylabel('$\Delta \hat{H}(T) \quad / \quad kCal \cdot mol^{-1} \cdot K^{-1}$','Interpreter','LaTex')
xlabel('$T \quad / \quad K$','interpreter','latex')
legend('data', 'fitted param')
axis([XX(1), XX(end), YY(1), YY(end)])
|