Download - Solución Numérica de Ecuaciones Diferenciales

Transcript
  • 3/4/2015 Solucinnumricadeecuacionesdiferenciales

    http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/diferencial/diferencial.html 1/9

    Racesdeecuaciones

    Sistemasdeecuaciones

    Valoresyvectorespropios

    Integracinnumrica

    Ecuacionesdiferenciales

    Interpolacin,regresin

    banner

    Inicio MATLAB Numrico

    Solucinnumricadeecuacionesdiferenciales(I)

    Lasleyesquegobiernanlosfenmenosdelanaturalezaseexpresanhabitualmenteenformadeecuacionesdiferenciales.Lasecuacionesdelmovimientodeloscuerpos(lasegundaleydeNewton)esunaecuacindiferencialdesegundoorden,comoloeslaecuacinquedescribelossistemasoscilantes,lapropagacindelasondas,latransmisindelcalor,ladifusin,elmovimientodepartculassubatmicas,etc.

    Pocasecuacionesdiferencialestienenunasolucinanalticasencilla,lamayorpartedelasvecesesnecesariorealizaraproximaciones,estudiarelcomportamientodelsistemabajociertascondiciones.As,enunsistematansimplecomounpndulo,laamplituddelaoscilacinhadeserpequeayelrozamientohadeserdespreciable,paraobtenerunasolucinsencillaquedescribaaproximadamentesumovimientoperidico.

    SeestudiaelprocedimientodeRungeKuttaqueseaplicadeformadirectaaunaecuacindiferencialdeprimerorden,peroveremoscomoseextiendeaunsistemadeecuacionesdeprimerorden,aunecuacindiferencialdesegundoordenyaunsistemadeecuacionesdiferencialesdesegundoorden.

    ElprocedimientodeRungeKuttasepuedeprogramarfcilmenteenlosordenadoresyadems,seempleamuchoenlaprctica,debidoalasuexactitudrelativamenteelevadadelasolucinaproximadadelaecuacindiferencial.LajustificacindelprocedimientodeRungeKuttanoessencilla,ellectorinteresadopuedeconsultaralgnlibrodemtodosnumricosdeanlisis.

    MtododeEuler

    Vamosaresolverlaecuacindiferencialdeprimerorden

    conconlacondicininicialdequeenelinstantet0laposicinesx0

    Laprimeraderivadanospermiteconocerlaposicinxi+1enelinstanteti+1,apartirdelaposicinxienelinstantetideacuerdoalafrmulasiguiente.Lalneadecolorrojoeslatangentealacurvaenelinstanteti

    xi+1=xi+f(ti,xi)h

    ElprocedimientodeEulerproduceunerrorqueseacumulaacadapasohdeintegracin,queeselsegmentoencolorazulqueunelosdospuntosenlafigura.

    Escribimosunafuncindenominadaeuler,alaquelepasaremos:

    lafuncinf(t,x),

    lacondicininicialdequeenelinstantet0laposicinesx0,

    elinstantefinaltf

    elnmerodepasosdeintegracinn

    ynosdevolverunvectortysucorrespondientevectorx.

    function[t,x]=euler(f,t0,tf,x0,n)h=(tft0)/nt=t0:h:tfx=zeros(n+1,1)%reservamemoriaparan+1elementosdelvectorxx(1)=x0fori=1:n

    "0 4

    4

    0

  • 3/4/2015 Solucinnumricadeecuacionesdiferenciales

    http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/diferencial/diferencial.html 2/9

    x(i+1)=x(i)+f(t(i),x(i))*hendend

    Supongamosquequeremosintegrarlaecuacindiferencial

    conlascondicininicialt=0,x=0.

    Tomamosunintervaloh=/6,yconstruimoslasiguientetabla

    t x(Euler) x=sint

    0 1 0 0/6 0.866 0.523 0.5/3 0.5 0.977 0.866/2 0 1.239 12/3 0.5 1.239 0.8665/6 0.866 0.977 0.5 0.523 0

    EstatablanosilustraelmododeaplicarelmtododeEuleraunaecuacindiferencialdeprimerorden.ParaaplicarelmtododeEulerprecisamosdeunpasohpequeo,inclusoasloserroressevanacumulandoyalcabodeciertotiempoladiferenciaentreelvalorexactoyelcalculadoesgrande.

    Escribimosenscripteuler_scriptenelquedefiniremoslafuncinf(t,x),lascondicionesinicialesyllamaremosalafuncineuler.Finalmente,representaremosgrficamentelasolucinexactaylaobtenidaaplicandoelmtododeEuler

    tf=input('tiempofinal,tf:')n=input('nmerodepasos,n:')f=@(t,x)cos(t)%condicionesinicialest0=0x0=0[t,x]=euler(f,t0,tf,x0,n)

    holdonplot(t,x,'b')y=sin(t)plot(t,y,'r')xlabel('t')ylabel('x')legend('aproximada','exacta')title('dx/dt=cost')holdoff

    Enlaventanadecomandoscorremoselscripteuler_script

    >>euler_scripttiempofinal,tf:pinmerodepasos,n:40

    DPT 0

    4

    0

    4 DPT 0 0

    0

    4 TJO 0

    DPT 0

    4

    0

  • 3/4/2015 Solucinnumricadeecuacionesdiferenciales

    http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/diferencial/diferencial.html 3/9

    euler

    HaydiferenciaentrelasolucinexactaylaobtenidamedianteintegracinnumricaporelmtododeEuler

    MtododeRungeKutta

    EnestaseccinvamosaestudiarlaaplicacindelmtododeRungeKuttaa:

    Unaecuacindiferencialdeprimerorden

    Unsistemadedosecuacionesdiferencialesdeprimerorden

    Unaecuacindifrencialdesegundoorden

    Unsistemadedosecuacionesdiferencialesdesegundoorden

    Ecuacindiferencialdeprimerorden

    Seaunaecuacindiferencialdeprimerorden,conlacondicininicialdequeenelinstantet0elvalorinicialdexesx0

    Seeligeunaanchuradepasohysecalculancuatronmerosk1,k2,k3,k4deacuerdoconelprocedimientoesquematizadoenlatablaadjunta.SegnelprocedimientoordinariodeRungeKutta,apartirdelvalordexenelinstantetsedeterminaelvalordexenelinstantet+hmediantelafrmulaquefiguraenlaltimafiladedichatabla.

    Definimoslafuncinrk_1queresuelvelaecuacindiferencialdeprimerorden,cuandolepasamos:

    lafuncinf(t,x),

    lacondicininicialdequeenelinstantet0elvalorinicialesx0,

    elinstantefinaltf

    "0 4

    4

    0

    $"0 4'

    $" 0 $ 4 '

    '

    $" 0 $ 4 '

    '

    $" 0 $ 4 '

    '

    40 $ 40

    '

    '

    '

    '

  • 3/4/2015 Solucinnumricadeecuacionesdiferenciales

    http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/diferencial/diferencial.html 4/9

    elnmerodepasosdeintegracinncomprendidosentreelinstanteinicalt0yfinaltf.

    ynosdevolverunvectortysucorrespondientevectorx.

    function[t,x]=rk_1(f,t0,tf,x0,n)h=(tft0)/nt=t0:h:tfx=zeros(n+1,1)%reservamemoriaparanelementosdelvectorxx(1)=x0fori=1:nk1=h*f(t(i),x(i))k2=h*f(t(i)+h/2,x(i)+k1/2)k3=h*f(t(i)+h/2,x(i)+k2/2)k4=h*f(t(i)+h,x(i)+k3)x(i+1)=x(i)+(k1+2*k2+2*k3+k4)/6endend

    Considreseelcircuitoenseriedelafigura.Inicialmenteelcondensadorestdescargado.SisecierraelinterruptorIlacargaempiezaafluirproduciendocorrienteenelcircuito,elcondensadorseempiezaacargar.Unavezqueelcondensadoradquierelacargamxima,lacorrientecesaenelcircuito.

    Escribimoselscriptcargaparaquerealicelassiguientestareas:

    1. Establezca,mediantecomandosinput:

    LaresistenciaRdelcircuito

    LacapacidadCdelcondensador

    Eltiempofinal,tf

    elnmerodepasos,n.

    2. Fijelascondicionesiniciales,enelinstanteinicialt=0,elcondensadorestdescargadox=0.

    3. Definalafuncinf(t,x),

    4. Llamealprocedimientonumricork_1

    5. Medianteelcomandoplotrealiceunarepresentacingrficadelasolucinnumrica

    6. Realiceunarepresentacingrficadelasolucinexacta

    Ejemplo:R=2.0,C=0.8,ytf=10.

    V0=10R=input('ResistenciaR:')C=input('CapacidadC:')tf=input('tiempofinal,tf:')n=input('nmerodepasos,n:')

    f=@(t,x)V0/Rx/(R*C)%condicionesinicialest0=0x0=0[t,x]=rk_1(f,t0,tf,x0,n)

    holdonplot(t,x,'b')y=C*V0*(1exp(t/(R*C)))plot(t,y,'r')xlabel('t')ylabel('q')legend('aproximada','exacta','Location','Southeast')title('Cargadelcondensador')holdoff

    Enlaventanadecomandoscorremoselscriptcarga

    >>cargaResistenciaR:2CapacidadC:0.8tiempofinal,tf:10nmerodepasos,n:50

    -

    0

    G

    -

    0- FYQ

    -

    -

    -

    G

    0

    G

    0

  • 3/4/2015 Solucinnumricadeecuacionesdiferenciales

    http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/diferencial/diferencial.html 5/9

    Noseapreciadiferenciaentrelasolucinexactaylanumrica,aplicandoelprocedimientodeRunge_Kutta.

    Sistemadedosecuacionesdiferencialesdeprimerorden

    ElprocedimientodeRungeKuttaesigualmenteefectivoenlaresolucindeunsistemadedosecuacionesdiferencialesdeprimerorden.

    ElprocedimientodeaplicacindelmtododeRungeKuttaacadaunadelasecuacionesdiferenciales,conlascondicininicialsiguiente,enelinstantet0

    elvalorinicialdexesx0

    elvalorinicialdeyesy0

    seesquematizaenlatablaadjunta.Comovemosademsdeloscuatronmerosk1,k2,k3,k4paralaprimeraecuacindiferencialprecisamosotroscuatronmerosl1,l2,l3,l4paralasegundaecuacindiferencial.Apartirdelvalordexenelinstantet,sedeterminaelvalordexenelinstantet+h,yapartirdelvalordeyenelinstantetsedeterminaelvalordeyenelinstantet+hmediantelasfrmulasdelaltimafiladelatabla.

    Definimoslafuncinrk_2_1queresuelveelsistemadedosecuacionesdiferencialesdeprimerorden,cuandolepasamos:

    lasfuncionesf(t,x,y)yg(t,x,y)

    lascondicionesiniciales(x0,y0)enelinstantet0

    elnmerondepasosdeintegracinentret0yeltiempofinaltf

    Nosdevuelvelosvectoresxeyparacadainstantequeseguardaenelvectortcomprendidoentreelinstante

    "0 4 5 #0 4 5

    4

    0

    5

    0

    "0 4 5

    4

    0

    #0 4 5

    5

    0

    $"0 4 5'

    $" 0 $ 4 5 '

    '

    (

    $" 0 $ 4 5 '

    '

    (

    $" 0 $ 4 5 '

    '

    (

    $#0 4 5(

    $# 0 $ 4 5 (

    '

    (

    $# 0 $ 4 5 (

    '

    (

    $# 0 $ 4 5 (

    '

    (

    40 $ 40

    '

    '

    '

    '

    50 $ 50

    (

    (

    (

    (

  • 3/4/2015 Solucinnumricadeecuacionesdiferenciales

    http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/diferencial/diferencial.html 6/9

    inicialt0yelfinaltf.

    function[t,x,y]=rk_2_1(f,g,t0,tf,x0,y0,n)h=(tft0)/nt=t0:h:tfx=zeros(n+1,1)%reservamemoriaparan+1element(i)osdelvect(i)orx(i)y=zeros(n+1,1)x(1)=x0y(1)=y0fori=1:nk1=h*f(t(i),x(i),y(i))l1=h*g(t(i),x(i),y(i))k2=h*f(t(i)+h/2,x(i)+k1/2,y(i)+l1/2)l2=h*g(t(i)+h/2,x(i)+k1/2,y(i)+l1/2)k3=h*f(t(i)+h/2,x(i)+k2/2,y(i)+l2/2)l3=h*g(t(i)+h/2,x(i)+k2/2,y(i)+l2/2)k4=h*f(t(i)+h,x(i)+k3,y(i)+l3)l4=h*g(t(i)+h,x(i)+k3,y(i)+l3)x(i+1)=x(i)+(k1+2*k2+2*k3+k4)/6y(i+1)=y(i)+(l1+2*l2+2*l3+l4)/6endend

    ConsideremosunaserieradioactivadetreselementosA>B>Cenlaque,unasustanciaradiactivaAsedesintegraysetransformaenotrasustanciaradiactivaB,queasuvezsedesintegraysetransformaenunasustanciaCestable.Lasecuacionesdiferencialesquegobiernanelprocesoysussolucionesanalticasson,respectivamente,

    Lasolucinanalticaqueaparecealaderecha,sehaobtenidoconlascondicionesinicialest=0,x=x0ey=0.Lasegundasolucinseobtienesiemprequeaseadistintodeb.Enelcasodequeaseaigualab,lasolucinanalticaparayes

    Lainterpretacindelsistemadeecuacionesdiferencialesnoescomplicada.Enlaunidaddetiempo,desaparecenaxncleosdelasustanciaAaldesintegrarse(primeraecuacin).Enlaunidaddetiempo,seproducenaxncleosdelasustanciaByasuvezdesaparecenbxncleosdelasustanciaB,quealdesintegrarsesetransformanenncleosdelasustanciaCestable(segundaecuacin).

    Escribimoselscriptradioactivoenelquedefiniremoslasfuncionesf(t,x,y),g(t,x,y),lascondicionesinicialesyllamaremosalafuncinrk_2_1

    a=input('parmetroa:')b=input('parmetrob:')x0=input('valorinicialdex:')y0=input('valorinicialdey:')tf=input('tiempofinal,tf:')n=input('nmerodepasos,n:')f=@(t,x,y)a*xg=@(t,x,y)a*xb*y%condicionesinicialest0=0

    [t,x,y]=rk_2_1(f,g,t0,tf,x0,y0,n)holdonplot(t,x,'b')plot(t,y,'r')xlabel('t')ylabel('x,y')legend('x(t)','y(t)')title('dx/dt=ax,dy/dt=axby')holdoff

    Enlaventanadecomandoscorremoselscriptradioactivo

    >>radioactivoparmetroa:0.1parmetrob:.2valorinicialdex:100valorinicialdey:0tiempofinal,tf:10nmerodepasos,n:40

    44 FYQ0

    4

    0

    4

    4 55 FYQ0 FYQ0

    5

    0

    4

    5 FYQ04

  • 3/4/2015 Solucinnumricadeecuacionesdiferenciales

    http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/diferencial/diferencial.html 7/9

    Ecuacindiferencialdesegundoorden

    Existenmuchassituacionesenlasqueesnecesarioresolverunaecuacindiferencialdesegundoorden.

    conlascondicionesiniciales

    Unaecuacindiferencialdesegundoordenesequivalenteaunsistemadedosecuacionesdiferencialesdeprimerorden,porloqueaplicaremoselmismoesquema.

    Definimoslafuncinrk_2queresuelvelaecuacindiferencialdesegundoorden,cuandolepasamos:

    lafuncinf(t,x,v)

    lascondicionesiniciales:posicininicialx0yvelocidadinicialv0enelinstantet0

    elnmerondepasosdeintegracinentret0yeltiempofinaltf

    Nosdevuelvelosvectoresdelasposicionesxylasvelocidadesvparacadainstantequeseguardaenelvectortcomprendidoentreelinstanteinicialt0yelfinaltf.

    function[t,x,v]=rk_2(f,t0,tf,x0,v0,n)h=(tft0)/nt=t0:h:tfx=zeros(n+1,1)%reservamemoriaparan+1element(i)osdelvect(i)orx(i)v=zeros(n+1,1)x(1)=x0v(1)=v0

    "0 4 2

    4

    0

    4 0

    4

    4

    0

    0

    2

    2

    4

    0

    "0 4 2

    2

    0

    $2'

    $ 2 '

    (

    $ 2 '

    (

    $ 2 '

    (

    $"0 4 2(

    $" 0 $ 4 2 (

    '

    (

    $" 0 $ 4 2 (

    '

    (

    $" 0 $ 4 2 (

    '

    (

    40 $ 40

    '

    '

    '

    '

    20 $ 20

    (

    (

    (

    (

  • 3/4/2015 Solucinnumricadeecuacionesdiferenciales

    http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/diferencial/diferencial.html 8/9

    fori=1:nk1=h*v(i)l1=h*f(t(i),x(i),v(i))k2=h*(v(i)+l1/2)l2=h*f(t(i)+h/2,x(i)+k1/2,v(i)+l1/2)k3=h*(v(i)+l2/2)l3=h*f(t(i)+h/2,x(i)+k2/2,v(i)+l2/2)k4=h*(v(i)+l3)l4=h*f(t(i)+h,x(i)+k3,v(i)+l3)x(i+1)=x(i)+(k1+2*k2+2*k3+k4)/6v(i+1)=v(i)+(l1+2*l2+2*l3+l4)/6endend

    Laecuacindiferencialquedescribeunosciladorarmnicoamortiguadoysusolucinparaunascondicionesinicialesfijadases

    Condicionesiniciales:enelinstantet=0,laposicininicialesx0ylavelocidadinicialv0.

    Escribimoselscriptosciladorenelquedefiniremoslafuncinf(t,x,v),lascondicionesinicialesyllamaremosalafuncinrk_2

    w0=input('frecuenciaangularw0:')g=input('rozamiento,gamma:')x0=input('posicininicial,x0:')v0=input('velocidadinicial,v0:')tf=input('tiempofinal,tf:')n=input('nmerodepasos,n:')f=@(t,x,v)2*g*vw0*w0*x%condicionesinicialest0=0holdon%solucinnumrica[t,x,v]=rk_2(f,t0,tf,x0,v0,n)plot(t,x,'b')%solucinanalticaw=sqrt(w0*w0g*g)x=((v0+g*x0)*sin(w*t)/w+x0*cos(w*t)).*exp(g*t)plot(t,x,'r')gridonxlabel('t')ylabel('x')legend('aproximado','exacto')title('osciladoramortiguado')holdoff

    Enlaventanadecomandoscorremoselscriptosciladorcondistintascondicionesiniciales

    >>osciladorfrecuenciaangular,w0:2rozamiento,gamma:0.5posicininicial,x0:1.5velocidadinicial,v0:0tiempofinal,tf:8nmerodepasos,n:100

    E 4

    4

    0

    4

    0

    [

    [ [

    E

    4 FYQE0 TJO[0 DPT[0

    2 E FYQE0 TJO[0 DPT[0

    [ FYQE0 DPT[0 TJO[0

    4

    0

    0

    4

    E [2

    4 FYQE0 TJO[0 DPT[0

    E2

    4

    [

    4

  • 3/4/2015 Solucinnumricadeecuacionesdiferenciales

    http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/diferencial/diferencial.html 9/9

    Noseapreciatampocodiferenciaentrelasolucinexactaylanumrica,aplicandoelprocedimientodeRunge_Kutta.

    EnergasRenovablesEUITIdeEibar