Nesta seção do blog, apresentaremos um resultado gráfico notável que relaciona Pressão x Volume e Erro Relativo x Pressão, demonstrando a eficácia do método aplicado para m=10.
Os gráficos fornecidos mostram:
- Gráfico de Erro Relativo x Pressão:
Esse gráfico avalia o desempenho do ajuste em termos de precisão, onde o erro relativo é praticamente imperceptível em quase toda a faixa de pressão, destacando a qualidade do ajuste parabolizado. - Gráfico de Pressão x Volume:
A curva ajustada (linhas azul e preta) acompanha com precisão os dados numéricos (representados por círculos vermelhos). Isso demonstra que a parametrização escolhida é robusta e eficiente para descrever a relação entre as variáveis.
A partir desses gráficos, é evidente que o ajuste proposto oferece uma solução consistente e precisa para o problema modelado. Apesar da simplicidade da abordagem descrita, os resultados são impressionantes, especialmente considerando a pequena magnitude dos erros relativos para m=10.
Próximos Passos
No código generalizado em Maple (fornecido ao final do post), os interessados poderão replicar os resultados, ajustar o valor de m e explorar diferentes subdivisões para observar como o ajuste se comporta sob condições variadas.
Caminho para a Exploração
O método, apesar de minimalista na explicação aqui, abre possibilidades para estratégias ainda mais sofisticadas, visando melhorar a precisão e eficiência do modelo.
Os resultados apresentados nas curvas acima podem ser significativamente aprimorados por meio da aplicação de estratégias mais elaboradas e métodos analíticos avançados. Esses aprimoramentos dependem da criatividade e expertise do desenvolvedor, que pode explorar diferentes abordagens para refinar ainda mais a precisão das estimativas, ampliando o potencial do método e suas aplicações.
Abaixo, o código completo em Maple para obtenção desses resultados.
restart;
###########################
n := 2;
a := 3.64;
b := 0.0427;
T := 300;
R := 0.082;
Pini := 5.0;
Pfin := 40;
###########################
m := 10;
###########################
pressures := [seq(Pini + i*(Pfin - Pini)/m, i = 0 .. m)];
###########################
av := P -> P;
bv := P -> -P*n*b - n*R*T;
cv := a*n^2;
dv := -a*n^3*b;
###########################
h := P -> fsolve({av(P)*Vex^3 + bv(P)*Vex^2 + cv*Vex + dv = 0}, {Vex});
###########################
dados := [seq([P, rhs(h(P)[1])], P = Pini .. Pfin, 0.1)];
plot1 := plot(dados, color = red, style = point, symbol = circle, linestyle = dot, thickness = 3, legend = "numerico");
###########################
volumes := [seq(rhs(h(pressures[i])[1]), i = 1 .. m + 1)];
###########################
intervals := [];
ak_list := [];
bk_list := [];
for i to nops(pressures) - 1 do
P10 := pressures[i];
P20 := pressures[i + 1];
U10 := volumes[i];
U20 := volumes[i + 1];
ak := (U20 - U10)/(P20 - P10);
bk := (P10*U20 - P20*U10)/(P10 - P20);
ak_list := [op(ak_list), ak];
bk_list := [op(bk_list), bk];
intervals := [op(intervals), P10 <= P and P <= P20, P*ak + bk];
end do;
###########################
f := piecewise(op(intervals));
U := unapply(f, P);
###########################
theta1 := P -> 1/2*(-b1(P) + sqrt(b1(P)^2 - 4*a1(P)*c1(P)))/a1(P);
theta2 := P -> -1/2*(b1(P) + sqrt(b1(P)^2 - 4*a1(P)*c1(P)))/a1(P);
a1 := P -> 3*U(P)*av(P) + bv(P);
b1 := P -> 3*U(P)^2*av(P) + 2*U(P)*bv(P) + cv(P);
c1 := P -> U(P)^3*av(P) + U(P)^2*bv(P) + cv(P)*U(P) + dv(P);
V := P -> theta1(P) + U(P);
###########################
plot2 := plot(V(P), P = Pini .. Pfin, color = blue, style = line, symbol = point, linestyle = spacedash, thickness = 3, legend = "V(P)");
plot3 := plot(U(P), P = Pini .. Pfin, color = black, style = line, symbol = point, linestyle = dashdot, thickness = 3, legend = "U(P)");
plots[display]({plot1, plot2, plot3}, axes = boxed, labels = ["Pressão(atm)", "Volume(Litros)"], axis = [gridlines = [14, color = gray]], labeldirections = ["horizontal", "vertical"]);
Erro := [seq([P, 100*abs((rhs(h(P)[1]) - V(P))/rhs(h(P)[1]))], P = Pini .. Pfin, 0.1)];
plot4 := plot(Erro, color = black, style = line, symbol = circle, linestyle = dashdot, thickness = 3, legend = "SAAMM");
plots[display]({plot4}, axes = boxed, labels = ["Pressão(atm)", "Erro(%)"], axis = [gridlines = [14, color = gray]], labeldirections = ["horizontal", "vertical"]);
- 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. (…->)