Na transição para m = 2, o principal ajuste está na subdivisão do intervalo de pressões [Pini, Pfin]. Agora, ele é dividido em duas partes iguais, o que resulta na definição de três pontos principais de pressão: P1 = Pini, P2 (ponto médio), e P3 = Pfin. Para cada subintervalo, ajusta-se uma função linear distinta para U(P), resultando em uma aproximação piecewise composta por duas funções lineares.
As mudanças principais são:
Cálculo das pressões intermediárias:
O ponto P2 é calculado como a média entre Pini e Pfin, isto é,
P2=(Pini + Pfin)/2.
Definição de U(P):
Para m = 2, U(P) é definido como uma função piecewise com dois trechos lineares:
- No primeiro subintervalo [Pini, P2], U(P) é ajustado a partir de U1=U(Pini) e U2=U(P2).
- No segundo subintervalo [P2, Pfin], U(P) é ajustado a partir de U2=U(P2) e U3=U(Pfin).
Cada trecho é obtido resolvendo um sistema de duas equações lineares, como no caso de m=1.
Melhoria da precisão:
Ao dividir o intervalo, o erro relativo reduz-se significativamente, já que cada trecho linear captura melhor a variação de V(P) em relação a P. Isso reflete-se em uma aproximação mais precisa para os volumes calculados.
A partir dessas mudanças, os resultados obtidos para m = 2 mostram uma melhoria considerável na descrição de V(P), mantendo a convergência característica do modelo SAAMM. O método segue a mesma lógica de m = 1, mas beneficia-se da maior flexibilidade permitida pela subdivisão.
No código Maple teremos algumas alterações:
############################
DeltaP := m -> (Pm - P1)/m;
Pressures := m -> local i; [seq(P1 + (i - 1.0)*DeltaP(m), i = 1 .. m + 1)];
Pressures(2);
[P1, 0.5000000000 P1 + 20.0, 40.0]
P1 := Pini;
P1 := 5
P2 := Pressures(2)[2];
P2 := 22.50000000
P3 := Pfin;
P3 := 40
############################
U1 := rhs(h(P1)[1]);
U1 := 9.625556118
U2 := rhs(h(P2)[1]);
U2 := 1.955618200
U3 := rhs(h(P3)[1]);
U3 := 0.9746591555
############################
hu1 := solve({U1 = P1*ak1 + bk1, U2 = P2*ak1 + bk1}, {ak1, bk1});
hu1 := {ak1 = -0.4382821667, bk1 = 11.81696695}
hu2 := solve({U2 = P2*ak2 + bk2, U3 = P3*ak2 + bk2}, {ak2, bk2});
hu2 := {ak2 = -0.05605480254, bk2 = 3.216851257}
############################
ak1 := (U1 - U2)/(P1 - P2);
ak1 := -0.4382821667
bk1 := -P1*ak1 + U1;
bk1 := 11.81696695
ak2 := (U2 - U3)/(P2 - P3);
ak2 := -0.05605480254
bk2 := (P2*U3 - P3*U2)/(P2 - P3);
bk2 := 3.216851257
############################
U := P -> piecewise(P1 <= P and P <= P2, ak1*P + bk1, P2 <= P and P <= P3, ak2*P + bk2);
Com isso, é verificado uma melhora nos resultados como pode ser visto na Figura abaixo.
Neste caso, o erro relativo melhorou significativamente.
Apesar de m = 2 ainda não apresentar um grande ganho em precisão em relação a m = 1, o processo já revela a tendência de melhoria significativa à medida que o número de partições aumenta. Isso demonstra que o método tem potencial de refinamento contínuo, com reduções sucessivas no erro relativo. Mais importante, esse caso nos permite identificar uma estrutura geral que pode ser utilizada para expandir o modelo.
Por meio de um procedimento de indução matemática, é possível generalizar o processo para m partições, permitindo escrever expressões para U(P) e V(P) que sejam aplicáveis a qualquer subdivisão do intervalo de pressão. A lógica segue a mesma: cada subintervalo é associado a uma função linear que descreve U(P), ajustada a partir dos valores de pressão e seus respectivos volumes.
Para tanto, basta fornecer como dados de entrada:
- Os valores das pressões nas extremidades e nos pontos intermediários (calculados a partir do número de partições, m, ou como escolhido pelo desenvolvedor).
- Os volumes correspondentes a essas pressões, que podem ser obtidos por métodos gráficos, numéricos ou experimentais.
Com essas informações, é possível construir uma solução aproximada que, teoricamente, converge para o valor exato de V(P) à medida que m→∞. Esse procedimento generalizável reforça a versatilidade do método SAAMM na resolução de problemas complexos como o de Van der Waals.
Vejamos a seguir os resultados quando fazemos, m = 3 (…->).
- Para m=1: Linearização única no intervalo inteiro, maior erro. (…->)
- Para m=2: Melhor aproximação com dois segmentos. (…->)
- Para m=3: Refinamento ainda maior, com possibilidades de erro relativo no resultado final, significativamente reduzido. (…->)
- Assim por diante. Generalização para m. (…->)
- Generalização para m com ajuste parabólico. (…->)