Você está na página 1de 7

% ROTINHA MATLAB QUESTAO 1

%%%%%%%%%%%%%

%lETRA a) e b)

clc
clear all

L=1;
N=7; % Número de nós
h=L/(N-1); % Tamanho do intervalo

for i=1:N
x(i,1)=(i-1)*h;
end

a=1/h^2;
b=-2/h^2;

A(1,1)=1;
A(N,N)=1;

d(1,1)=0;
d(N,1)=0;

for i=2:1:N-1

A(i,i-1)=a;
A(i,i)=b;
A(i,i+1)=a;
d(i,1)=-(x(i))^2;

end

T_DF=A\d; %Solução aproximada por Diferenças Finitas

T_DF

f=1/12*(x-x.^4); %Solução Exata

for i=1:1:7

fsol(i)=1/12*(x(i)-x(i)^4); % 7 Pontos da solução exata


end

fsol

figure(1)
plot(x,f,'red','Linewidth',1.2)
set(gca,'XTick',(0:0.25:1))
hold on

1
plot(x,T_DF,'bo','Linewidth',2)
hold on

% %%%%%%%%%%%%%%%%%%%%%
% LETRA c)

syms x C1 C2 C3 D1 D2 D3

phi_1=x*(x-1);
phi_2=x*(x-1/2)*(x-1);
phi_3=x*(x-1/3)*(x-2/3)*(x-1);

ddphi_1=diff(phi_1,2) %Segunda derivada de phi_1


ddphi_2=diff(phi_2,2) %Segunda derivada de phi_2
ddphi_3=simplify(diff(phi_3,2)) %Segunda derivada de phi_3

R=C1*ddphi_1+C2*ddphi_2+C3*ddphi_3+x^2 %Resíduo

%Integrando os resíduos
f1=int(R*phi_1,0,1);
f2=int(R*phi_2,0,1);
f3=int(R*phi_3,0,1);

sol=solve([f1,f2,f3],[C1,C2,C3])

C1=(sol.C1);
C2=(sol.C2);
C3=(sol.C3);

y=[0:1/6:1];

phi_1=y.*(y-1);
phi_2=y.*(y-1/2).*(y-1);
phi_3=y.*(y-1/3).*(y-2/3).*(y-1);

Tc=phi_1*C1+phi_2*C2+phi_3*C3 % Solução letra c)

figure(1)
plot(y,Tc,'go', 'Linewidth', 2)
grid on
hold on

%%%%%%%%%%
% LETRA d)

psi_1=sin(pi*x);
psi_2=sin(2*pi*x);
psi_3=sin(3*pi*x);

ddpsi_1=diff(psi_1,2)
ddpsi_2=diff(psi_2,2)
ddpsi_3=diff(psi_3,2)

2
Q=D1*ddpsi_1+D2*ddpsi_2+D3*ddpsi_3+x^2

g1=int(Q*psi_1,0,1)
g2=int(Q*psi_2,0,1)
g3=int(Q*psi_3,0,1)

solution=solve([g1,g2,g3],[D1,D2,D3])

D1=solution.D1
D2=solution.D2
D3=solution.D3

psi_1=sin(pi*y);
psi_2=sin(2*pi*y);
psi_3=sin(3*pi*y);

Td=D1*psi_1+D2*psi_2+D3*psi_3 %Solução letra d)

plot(y,Td, 'ko', 'Linewidth', 2)


legend('Solução Exata a)','Solução DF Central b)','Solução c)','Solução
d)','Location','northwest')
xlabel('Distância')
ylabel('Temperatura')
title('Comparação dos resultados')

% LETRA e)

% Erro DF

Erro_DF=0;

for i=2:1:6

Erro_DF=Erro_DF+abs(fsol(i)-T_DF(i))/fsol(i);
end

Erro_DF

Erro_MEF_c=0;

for i=2:1:6

Erro_MEF_c=Erro_MEF_c+abs(fsol(i)-Tc(i))/fsol(i);

end

Erro_MEF_c=double(Erro_MEF_c)

Erro_MEF_d=0;

for i=2:1:6

Erro_MEF_d=Erro_MEF_d+abs(fsol(i)-Td(i))/fsol(i);

3
end

Erro_MEF_d=double(Erro_MEF_d)

T_DF =

0.0000
0.0135
0.0262
0.0359
0.0386
0.0289
0

fsol =

0 0.0138 0.0267 0.0365 0.0391 0.0293 0

ddphi_1 =

ddphi_2 =

6*x - 3

ddphi_3 =

12*x^2 - 12*x + 22/9

R =

2*C1 + C3*(12*x^2 - 12*x + 22/9) + x^2 + C2*(6*x - 3)

sol =

struct with fields:

C1: -4/27
C2: -1/6
C3: -1/12

Tc =

4
[0, 215/15552, 13/486, 7/192,
24663410078040431667865421791363129/630864068311981556866455304000241664,
455/15552, 0]

ddpsi_1 =

-pi^2*sin(pi*x)

ddpsi_2 =

-4*pi^2*sin(2*pi*x)

ddpsi_3 =

-9*pi^2*sin(3*pi*x)

Q =

x^2 - D1*pi^2*sin(pi*x) - 4*D2*pi^2*sin(2*pi*x) - 9*D3*pi^2*sin(3*pi*x)

g1 =

(pi^2 - 4)/pi^3 - (D1*pi^2)/2

g2 =

- 2*D2*pi^2 - 1/(2*pi)

g3 =

(9*pi^2 - 4)/(27*pi^3) - (9*D3*pi^2)/2

solution =

struct with fields:

D1: (2*(pi^2 - 4))/pi^5


D2: -1/(4*pi^3)
D3: (2*(9*pi^2 - 4))/(243*pi^5)

D1 =

(2*(pi^2 - 4))/pi^5

5
D2 =

-1/(4*pi^3)

D3 =

(2*(9*pi^2 - 4))/(243*pi^5)

Td =

[0, (pi^2 - 4)/pi^5 - 3^(1/2)/(8*pi^3) + (2*(9*pi^2 - 4))/(243*pi^5),


(4967757600021511*(9*pi^2 - 4))/(4928625533687355913019182062501888*pi^5)
- 3^(1/2)/(8*pi^3) + (3^(1/2)*(pi^2 - 4))/pi^5, (2*(pi^2 -
4))/pi^5 - (2*(9*pi^2 - 4))/(243*pi^5) - 4967757600021511/
(162259276829213363391578010288128*pi^3), 3^(1/2)/(8*pi^3) +
(6523320454730237*(9*pi^2 - 4))/(1232156383421838978254795515625472*pi^5)
+ (3^(1/2)*(pi^2 - 4))/pi^5, (pi^2 - 4)/pi^5 + 3^(1/2)/(8*pi^3)
+ (2*(9*pi^2 - 4))/(243*pi^5), (4967757600021511*(pi^2 - 4))/
(20282409603651670423947251286016*pi^5) + (3725818200016133*(9*pi^2
- 4))/(1232156383421838978254795515625472*pi^5) + 4967757600021511/
(81129638414606681695789005144064*pi^3)]

Erro_DF =

0.0825

Erro_MEF_c =

1.7530e-17

Erro_MEF_d =

0.1330

6
Published with MATLAB® R2022a

Você também pode gostar