簡體   English   中英

如何解方程組Matlab

[英]How to solve set of equations Matlab

我有一組定義系統的方程式。 除了可能,而且需要迭代之外,我不知道如何在Matlab中執行此操作。

我有三個方程,三個未知數( QT_a_outT_b_out )。

該系統分為幾個子部分。 必須使用有關第一個和最后一個子部件中溫度的信息來查找中間子部件中的溫度。 我需要每個子部分QT_a_outT_b_out

系統描述

用於描述系統的方程式如下:

Q=U*((T_a_out-T_b_in)+(T_a_in-T_b_out))/2
Q=m_a*(cp_a_in*T_a_in-cp_a_out*T_a_out)
Q=m_b*cp_b*(T_b_out-T_b_in)

這些參數是已知的:

Initial T_a_in (110)
Initial T_b_in (5)
U
m_a
m_b
n (number of sub-parts)
cp_b

cp值是其所屬溫度的函數:

cp_a_in is a function of the temperature: cp_a_in=function_a(T_a_in)
cp_a_out is a function of the temperature: cp_a_out=function_a(T_a_out)

初始a值(110)的值高於最后一個子部分中的最終b_out溫度。 初始b_in值(5)的值小於最終a_out值。

我該如何計算Matlab中每個子部件的out溫度?

根據您的評論,我整理了一個快速的腳本,除了一些注意事項之外,還應該使您正確地入門。

首先,您要解決的問題是不平凡的,特別是考慮到Cp(T)是高度非線性的並且最重要的一點是在臨界點附近發散。

同樣,認識到H = CpdT,並且您使用的是REFPROP,則更精確的計算將是H(T_out)-H(T_in),其中將包含溫度影響。

話雖如此,通過寫出您的質量平衡,您可以制定一個非線性方程組來求解,如下所示。 由於我無法解決您使用UA我僅以“有效性因素”代替。 隨意使用您選擇的約定(例如NTU)來填寫。

提醒您,我在下面發布的內容不完整 這是一個起點,需要考慮一些問題:

我在指定n-2溫度變量的同時提供n方程式,這意味着可能會滿足Ta_end = Tb_end的界限(如果運行並繪圖,您將明白我的意思)。 這也有可能導致溫度的不連續性,作為階段的函數。

根據您的壓力和流體,如果您正在進行一階相變,則可能會遇到一些奇怪的數值問題。

如果您假設恆定的熱容量,則可以將下面的矩陣重新構造為一個更容易解決的系統。 我提供了這個更復雜的示例作為起點。

function Tf = gen_mat
n = 10; % Number of stages 
A = zeros(n,2*n+2); % Coefficients matrix.

ma = 10; % Mass flow of A.
mb = 5;  % Mass flow of B.
eff = 1.0; % Effectiveness factor.
Te(1) = 383.15; % Inlet T of A.
Te(2) = 278.15; % Inlet T of B.
P = 15000; % P (kPa)

% Generate guesses 
Ti = linspace(Te(1),Te(2),n+1)';
Tg = zeros(2*n+1,1);
for i=1:n+1
    Tg(2*i-1) = Ti(i);
    Tg(2*i) = Ti(i);
end
Tg([1,2*n+1]) = []; % We are only interested in the middle sections.

% construct coefficient matrix.
for i=1:n
    A(i,2*i-1) = -ma;
    A(i,2*i) = eff*mb;
    A(i,2*i+1) = ma;
    A(i,2*i+2) = -eff*mb;
end

% solve system of nonlinear equations
Tf = fsolve(@(T)obj_fxn(T,A,P,Te), Tg, optimset('Display', 'iter'));
Tf = [Te(1);Tf;Te(2)]; % Append temperatures.
end

function b = obj_fxn(T,A,P,Te)
T = [Te(1); T; Te(2)];
for i=1:2:length(T)-1
    x(i) = refpropm('H','T',T(i),'P',P,'CO2');
    x(i+1) = refpropm('H','T',T(i+1),'P',P,'water');
end
b = A*x';
end

您可以像這樣運行后創建上面的粗圖: plot(0:10,Tf(1:2:end)-273,10:-1:0,Tf(2:2:end)-273)

抱歉,這不是更井井有條,但希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM