Baixe o app para aproveitar ainda mais
Prévia do material em texto
ALGORITMO RUNGE-KUTTA ve=//valor analítico x0=//condição inicial y0=//condição inicial xp=//ponto que se deseja calcular w=//passo function yp=runge(x0, y0, xp, w) n=(xp-x0)/w //número de repetições yp=y0 xn=x0 for i=1:n fxy=2*xn*yp // f(x,y) k1=w*fxy xn=xn+w/2 k2=w*((fxy/yp)*(yp+k1/2)) k3=w*((fxy/yp)*(yp+k2/2)) xn=xn+w/2 k4=w*((fxy/yp)*(yp+k3)) delt=(1/6)*(k1+2*(k2+k3)+k4) yp=yp+delt end endfunction erro=((ve-yp)*100)/ve Valor Analítico Valor Numérico Erro(%) dy/dx-4y=0 1.040811 1.0408108 0.0000026 dy/dx-2xy=0 1.00040008 1.0002 0.0199980 a)dy/dx-4y=0 -->ve=1.0408108; -->x0=0; -->y0=1; -->xp=0.01; -->w=0.01; -->exec('C:\Users\Matheus\Documents\runge.sci', -1) -->yp=runge(x0,y0,xp,w) yp = 1.0408108 -->erro=((ve-yp)*100)/ve erro = 0.0000026 b)dy/dx-2xy=0 -->ve=1.00040008; -->x0=0; -->y0=1; -->xp=0.02; -->w=0.01; -->exec('C:\Users\Matheus\Documents\runge.sci', -1) -->yp=runge(x0,y0,xp,w) yp = 1.0002 -->erro=((ve-yp)*100)/ve erro = 0.0199980 ALGORITMO SEGUNDA DERIVADA – MÉTODO DE EULER E MODIFICADO ve=//valor analítico x0=//condição inicial y0=//condição inicial z0=//condição inicial xp=//ponto que se deseja calcular w=//passo function yp=euler(x0, y0, z0, xp, w) n=(xp-x0)/w //número de repetições yp=y0 zp=z0 for i=1:n gxyz=2*zp-yp // g(x,y,z)=dz/dx yp=yp+w*zp zp=zp+w*gxyz end endfunction function yp=eulerm(x0, y0, z0, xp, w) n=(xp-x0)/w yp=y0 zp=z0 for i=1:n gxyz=2*zp-yp // g(x,y,z)=dz/dx yl=yp+w*zp zl=zp+w*gxyz gxyzl=2*zl-yl // g(x',y',z') my=(zp+zl)/2 // média das derivadas de y yp=yp+(w*my) mz=(gxyz+gxyzl)/2 // média das derivadas de z zp=zp+(w*mz) end endfunction Valor Analítico Método de Euler Erro (%) Método de Euler Modificado Erro(%) d²y/dx²-2dy/dx+y=0 0.82436 0.625 24.183609 0.8007812 2.8602492 a)d²y/dx²-2dy/dx+y=0 -->y0=0; -->z0=1; -->xp=0.5; -->w=0.25; -->exec('C:\Users\Matheus\Documents\euler.sci', -1) -->exec('C:\Users\Matheus\Documents\eulerm.sci', -1) -->yp=euler(x0,y0,z0,xp,w) yp = 0.625 -->erro=((ve-yp)*100)/ve erro = 24.183609 -->yp=eulerm (x0,y0,z0,xp,w) yp = 0.8007812 -->erro=((ve-yp)*100)/ve erro = 2.8602492
Compartilhar