ALGORITMO DO MATLAB - DIFERENÇAS FINITAS - DIRICHLET CONDITIONS EXERCÍCIO 1.6.1 DE T. J. CHUNG,...

2

Click here to load reader

Transcript of ALGORITMO DO MATLAB - DIFERENÇAS FINITAS - DIRICHLET CONDITIONS EXERCÍCIO 1.6.1 DE T. J. CHUNG,...

Page 1: ALGORITMO DO MATLAB - DIFERENÇAS FINITAS  - DIRICHLET CONDITIONS EXERCÍCIO 1.6.1 DE T. J. CHUNG, COMPUTATIONAL FLUID DYNAMICS

DIRICHLET CONDITIONS

EXERCÍCIO 1.6.1 DO LIVRO CHUNG, T. J., COMPUTATIONAL FLUID DYNAMICS function []= dirichlet_conditions() disp('Considere uma equação diferencial na forma geral (d²u/dx²)-2u =

f(x), com coeficientes constantes, sendo f(x)=4x^2-2x-4.') coef_du=0; coef_u=-2; disp('Condições de Dirichlet:'); ui=input('Entre o valor de u inicial:'); uf=input('Entre o valor de u final:'); x1=input('Entre com o valor de x inicial:'); xnp=input('Entre com o valor de x final:'); np=input('número de pontos:'); fa=4; fb=-2; fc=-4;

dx=(xnp-x1)/(np-1);

mat1=zeros(np-2,np);

mat1(1,1)=x1; mat1(np-2,np)=0;

for i=1:np-2 mat1(i,i+1)=-2; end

for i=2:np-2 mat1(i,i)=1; end

for i=1:np-3 mat1(i,i+2)=1; end

mat2=mat1*(dx^-2);

for i=1:np-2 mat2(i,i+1)=mat2(i,i+1) +coef_du*(dx^-1)+coef_u; end

for i=1:np x(i)=x1+dx*(i-1); end

for i=1:(np-2) fx(i)=fa*x(i+1)^2+fb*x(i+1)+fc; end

fx(np-2)=fx(np-2)-uf*(dx^-2);

mat_fx=transpose(fx); c=[mat2 mat_fx];

Page 2: ALGORITMO DO MATLAB - DIFERENÇAS FINITAS  - DIRICHLET CONDITIONS EXERCÍCIO 1.6.1 DE T. J. CHUNG, COMPUTATIONAL FLUID DYNAMICS

mat_resp=mat2\mat_fx; mat_resp(np)=uf

for i=1:np-2 fx(np-i)=fx(np-(i+1)); end

disp('Os vetores com pontos do domínio e com suas respectivas imagens

são:')

fx(1)=ui; fx(np)=uf; for i=1:np-2 fx(np-i)=mat_resp(np-i,1); end

x fx z=0:0.001:1; y=-2*z.^2+z;%solução analítica do exemplo 1.6.1 DO LIVRO! plot(x,fx,'k',z,y,'R')%em preto a aproximação, em vermelho -2x²+x.

end