本帖最后由 steeling2014 于 2016-12-20 09:01 编辑
利用matlab符号运算求解一个方程,最后得到结果是T0-Ts = -(1.0*(1.2e-10*Ts + 0.68*q))/q,T0是求解出来的方程,Ts理论上Ts可以正好消掉,然后计算出结果。实际计算结果和理论计算结果比较接近,Ts前面系数很小,是可以忽略的,想知道1.2e-10的误差是怎么产生的,怎样消除。
方程如下图片有,常系数的三阶微分方程,代码如下:
%% 设置初始变量
% 量热器尺寸参数
D = 20.32; % 量热器直径(cm)
L = 72; % 量热器长度(cm)
t = 0.1588; % 量热器壁厚(cm)
A = 4620; % 量热器的测量面积(cm^2)
% 物性参数
k = 1.2; % 导热系数(W/cm*K)
Cp = 1.085; % 定压比热容(W*sec/g*K)
Kf = 0.07e-3; % 液氮的导热系数(W/cm*K)
h = 8 * Kf/D; % 对流传热系数(W/cm^2*K)
%% 参数计算
gMin = 10; % 蒸发液体的高度(cm)
gMax = 70; % 蒸发液体的高度(cm)
Ng = 7;
Gtotal = linspace(gMin, gMax, Ng);
FlowRateMin = 0.004; % 量热器气体流量(g/sec)
FlowRateMax = 0.2; % 量热器气体流量(g/sec)
Nf = 10;
Wtotal = linspace(FlowRateMin, FlowRateMax, Nf);
E = zeros(Ng, Nf); % 误差大小(%)
figure
for jj = 1:Ng
g = Gtotal(jj);
for ii = 1:Nf
w = Wtotal(ii);
syms z q Ts
Y = dsolve('D3y + f1*D2y + f2*Dy + f3*q = 0', 'Dy(0) = 0', 'y(g)=Ts', 'D2y(g)=-f4*q');
Fcy1 = (subs(Y, 't', 0) - Ts)/q;
Fcy1 = subs(Fcy1, 'f1', -pi*D*h/(w*Cp));
Fcy1 = subs(Fcy1, 'f2', -h/(k*t));
Fcy1 = subs(Fcy1, 'f3', -pi*D*h/(w*Cp*k*t*A));
Fcy1 = subs(Fcy1, 'f4', -1/(k*t*A));
Fcy1 = subs(Fcy1, 'g', g);
Fcy1 = subs(Fcy1, 'Ts', 77);
Fcy1 = subs(Fcy1, 'q', 0.2);
E(jj, ii) = w * Cp * (Fcy1);
end
plot(Wtotal, E(jj,:)*100)
hold on
end