matlab符号运算怎么样,matlab符号运算问题

博客作者使用MATLAB的符号运算解决了一个三阶微分方程,并探讨了在计算过程中出现的1.2e-10误差来源。通过分析代码,可以看到作者设置了一系列参数并进行了数值计算,最终结果与理论值接近但存在小数点后多位的误差。作者寻求理解这一误差如何产生以及如何进行消除。
摘要由CSDN通过智能技术生成

本帖最后由 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值