首页 > 解决方案 > 为反相流创建方程矩阵

问题描述

我正在使用 MATLAB 使用节点端口方法对通过管中换热器的流进行建模。我需要用微分方程填充矩阵,以求解每个点的焓。我已将管道分成多个部分,每个部分有 3 个节点。1 个节点用于内部流体,1 个节点用于外部流体,1 个节点用于管道。但是,由于存在逆流,我需要以外部流体与内部流体相反计数的方式填充矩阵。例如,如果我有 9 个节点,我的列向量将是 [Eq 1 Eq 2 Eq 9 Eq 4 Eq 5 Eq6 Eq 7 Eq 8 Eq 3]。我的代码似乎可以工作,但它没有为向量的第三个位置输入任何内容。预先感谢您的帮助。

NXP = 5; %Number of Divisions
HX = zeros(NXP,1);
cntr=2; %To see which number equation is being input
for j=1:NXP
        if j==1
            HX(1+(j-1)*3,1) = 125; %Boundary Condition
         
        else
            HX(1+(j-1)*3,1) = cntr; 
            cntr = cntr+1;
        end
        
       HX(2+(j-1)*3,1) = cntr;
       cntr = cntr+1;
       if j==NXP
       HX(3+(j-1)*3,1) = 40; %Boundary Condition
       else
           HX(3*NXP-3*(j-1),1) = cntr; 
           cntr = cntr+1;
       end 
end
'''

标签: matlabmodeling

解决方案


我改变了你的尝试,最显着的是将边界条件移到循环之外,但它现在返回我猜你正在寻找的内容:

NXP = 5;
HX = zeros(3*NXP, 1);

for j = 1:NXP
    idx = (j - 1)*3;
    HX(idx + 1, 1) = idx + 1;
    HX(idx + 2, 1) = idx + 2;
    HX(length(HX) - idx, 1) = idx + 3;
end

% Boundary conditions
HX(1) = 125;
HX(end) = 40;

编辑:

更好的是,只需将数组初始化为

HX = (1:3*NXP)';

然后只需更改第三个节点的顺序

HX(3:3:length(HX)) = flipud(HX(3:3:length(HX)));

最后设置你的边界条件

HX(1) = 125;
HX(end) = 40;

推荐阅读