You are on page 1of 12

ESTM003-17 - Tópicos Computacionais em Materiais

EXPERIMENTO 1
MÉTODO DAS DIFERENÇAS FINITAS

David da Mata Lopes R.A.: 11115615

Dêsirée de Cassia Reis R.A.: 11067713

Prof. Dr. Marcio Cuppari


Prof. Dr. Roberto Veiga

SANTO ANDRÉ
2018
DESCRIÇÃO DO EXPERIMENTO
O experimento consistia em determinar as soluções numéricas de diferentes
equações diferenciais utilizando e comparando os métodos de diferenças progressivas
e centrais. Avaliou-se também a influência do passo de integração na exatidão dos
resultados.

Os códigos (no item Anexos) foram implementados no software Scilab®. As


curvas geradas por eles podem ser conferidos no próximo tópico.

RESULTADOS E DISCUSSÃO
Abaixo constam graficamente as soluções numéricas das cincos equações
diferenciais ​pelo método ​forward (método de diferenças progressivas) e ​central
(método de diferenças centrais). Os gráficos apresentam quatro curvas a linha contínua
é referente a solução exata da equação. Os símbolos o, x e ⬜ são referentes às
variações de dx, do maior para o menor respectivamente.
● Exercício A

Gráfico 1 - Equação A pelo método​ forward.​ Legenda: ​o ​dx =0.025,​x​ dx=0.01 e ​⬜ ​dx =0.005.

Gráfico 2 - Equação A pelo método de diferenças centrais. Legenda: ​o ​dx =0.025,​x​ dx=0.01 e ​⬜ ​dx =0.005.
● Exercício B

Gráfico 3 - Equação B pelo método forward. Legenda: ​o​ dx =0.5,​x​ dx=0.25 e ​⬜ ​dx =0.05. ​Linha contínua​ - solução
analítica

Gráfico 4 - Equação B pelo método central. Legenda: ​o​ dx =0.1,​x​ dx=0.08 e ​⬜​ dx =0.05.​Linha contínua​ - solução
analítica
● Exercício C

Gráfico 5- Equação C pelo método forward. Legenda: ​o​ dx =0.6,​x​ dx=0.2 e ​⬜​ dx =0.05.​Linha contínua​ - solução
analítica

Gráfico 6- Equação C pelo método central.. Legenda: ​o​ dx =0.6,​x​ dx=0.2 e ​⬜​ dx =0.05. ​Linha contínua​ - solução
analítica
● Exercício D

Gráfico 7- Equação D pelo método forward.. Legenda: ​o​ dx =0.6,​x​ dx=0.2 e ​⬜​ dx =0.05. ​Linha contínua​ - solução
analítica

Gráfico 8- Equação D pelo método central.. Legenda: ​o​ dx =0.6,​x​ dx=0.2 e ​⬜​ dx =0.05. ​Linha contínua​ - solução
analítica
● Exercício (e)

Gráfico 9- Equação E pelo método forward. Legenda: ​o​ dx =1.0,​x​ dx=0.5 e ​⬜​ dx =0.1. ​Linha contínua​ - solução
analítica

Gráfico 10- Equação E pelo método central. Legenda: ​o​ dx =0.8,​x​ dx=0.5 e ​⬜​ dx =0.1. ​Linha contínua​ - solução
analítica
Nota-se que o passo de integração (dx) possui grande influência na exatidão dos
resultados. Em algumas equações, a mudança é bem sensível; ou seja, pequenas
variações no dx mudam totalmente o perfil da curva. Isso pode ser atribuído ao fato de
que nas soluções numéricas o valor de cada passo depende do passo anterior. Isso
pode gerar um erro que vai se propagando. Na solução numérica, grandes intervalos
(maiores valores de dx) geram curvas mais distantes da solução analítica, pois a última
é contínua, ou seja, é composta de intervalos que tendem a zero ( lim ).
dx→0

Também percebe-se um melhora na exatidão quando se usa o método das


diferenças centrais. Por tratar-se de uma diferença entre o método das diferenças
progressivas e o método das diferenças regressivas, os termos de 2° grau da série de
Taylor são cancelados, e não ignorados como no método ​forward​. Isso resulta numa
melhor aproximação da solução analítica. De qualquer forma, também é bastante
sensível ao intervalo do passo de integração. Notou-se que em maiores valores de dx,
os pontos apresentaram-se muito dispersos.

CONCLUSÃO

Ao analisar os resultados pode-se perceber que entre os dois métodos utilizados


o que apresenta mais exatidão é o método das diferenças centrais, e valores de dx
menores também contribuem para uma maior precisão do resultado.
ANEXOS
Exercício (a)

● forward ● central
clear clear
t0 = 0.0; t0 = 0.0;
tf=0.5;
tf=0.5; dt=0.005;
dt=0.005; t=(t0: dt: tf);
[row, col]=size(t);
t=(t0: dt: tf);
x=zeros(row,col);
[row, col]=size(t); x(1)=2000;
x=zeros(row,col); x(2)=x(1)+dt*(-0.8*x(1)^(3/2)
+10*2000*(1-exp(-3*t(1))));
x(1)=2000;
CO=2000; for i=2 : col -1;
for i=1 : col -1; x(i+1) = x(i)+ dt*(-0.8*x(i)^(3/2)
+10*2000*(1-exp(-3*t(i))))
x(i+1) = x(i)+ dt*(-0.8*x(i)^(3/2)
+10*CO*(1-exp(-3*t(i)))) end
x_calc =x;
end plot (t,x_calc, 'ks')
end

Exercício (b)

● forward ● central
clear clear
x0 = 0.0; x0 = 0.0;
xf=2.5; xf=2.5;
dx=0.05; dx=0.05;
x=(x0: dx: xf); x=(x0: dx: xf);
[row, col]=size(x); [row, col]=size(x);
y=zeros(row,col); y=zeros(row,col);
y(1)=3; y(1)=3;
y(2) = y(1) + dx*(-1.2*y(1)+7*exp(-0.3*x(1)));
for i=1 : col -1;
y(i+1) = y(i)+ dx*(-1.2*y(i)+7*exp(-0.3*x(i))) for i=2 : col -1;
y(i+1) = y(i-1)+
2*dx*(-1.2*y(i)+7*exp(-0.3*x(i)))
end
y_calc =y;
end
y_exat =
(70/9)*exp(-0.3*x)-(43/9)*exp(-1.2*x); y_calc =y;
plot (x,y_calc, 'ks',x,y_exat,'k') y_exat =
(70/9)*exp(-0.3*x)-(43/9)*exp(-1.2*x);
plot (x,y_calc, 'ks',x,y_exat,'k')

Exercício (c)

● forward ● central
clear clear

x0 = 0.0; x0 = 0.0;
xf=3.0; xf=3.0;
dx=0.05;
dx=0.05;
x=(x0: dx: xf);
x=(x0: dx: xf);
[row, col]=size(x);
[row, col]=size(x);
y=zeros(row,col);
y(1)=0; y=zeros(row,col);

y(1)=0;
for i=1 : col -1; y(2)=y(1)+
y(i+1) = y(i)+ dx*(((x(1)+1)^3)+((2/(x(1)+1)*y(1))));
dx*(((x(i)+1)^3)+((2/(x(i)+1)*y(i))))

for i=2 : col -1;


end
y_calc =y; y(i+1) = y(i-1)+
2*dx*(((x(i)+1)^3)+((2/(x(i)+1)*y(i))));
y_exat = ((1/2)*((x+1)^4))-((1/2)*((x+1)^2));
plot (x,y_calc, 'ks',x,y_exat,'k')

end

y_calc =y;

y_exat = ((1/2)*((x+1)^4))-((1/2)*((x+1)^2));

plot (x,y_calc, 'ks',x,y_exat,'k')

Exercício (d)

● forward ● central
clear clear

x0 = 0.0; x0 = 0.0;
xf=3.0; xf=3.0;
dx=0.05;
dx=0.05;
x=(x0: dx: xf);
x=(x0: dx: xf);
[row, col]=size(x);
y=zeros(row,col); [row, col]=size(x);

y(1)=0.5; y=zeros(row,col);

y(1)=0.5;
for i=1 : col -1;
y(2)=
y(i+1) = y(i)+ y(1)+dx*((((x(1))^3)*((y(1))^3))-(x(1)*y(1)));
dx*((((x(i))^3)*((y(i))^3))-(x(i)*y(i)))

end for i=2 : col -1;

y_calc =y; y(i+1) = y(i-1)+2*


dx*((((x(i))^3)*((y(i))^3))-(x(i)*y(i)));
y_exat = ((x^2)+1+(3*exp(x^2)))^(-1/2);
plot (x,y_calc, 'ks',x,y_exat,'k-')
end

y_calc =y;
y_exat = ((x^2)+1+(3*exp(x^2)))^(-1/2);

plot (x,y_calc, 'ks',x,y_exat,'k-')

Exercício (e)

● forward ● central
clear clear

x0 = 0.0; x0 = 0.0;
xf=5.0; xf=5.0;
dx=0.1;
dx=0.1;
x=(x0: dx: xf);
x=(x0: dx: xf);
[row, col]=size(x);
[row, col]=size(x);
y=zeros(row,col);
y(1)=2; y=zeros(row,col);

y(1)=2;
for i=1 : col -1; y(2)=y(1)+dx*((1/exp(x(1)))-(y(1)));
y(i+1) = y(i)+ dx*((1/exp(x(i)))-(y(i)));

for i=2 : col -1;


end
y_calc =y; y(i+1) = y(i-1)+2 *dx*((1/exp(x(i)))-(y(i)));

y_exat = ((x+2)./(exp(x)));
plot (x,y_calc, 'ks', x,y_exat,'k-') end

y_calc =y;

y_exat = (x+2)/(exp(x));

plot (x,y_calc, 'ks',x,y_exat,'k-')

You might also like