Métodos Numéricos y su programación en C++

94
Instituto Politécnico Nacional Escuela Superior de Ingeniería Mecánica y Eléctrica Asesor: M.C. Jesús Reyes García. Curso Propedéutico para la Maestría en Ciencias en Ingeniería Eléctrica. Ingeniería Eléctrica 15/Enero/2015 Alumno: Ramos Albarrán Fernando [PROGRAMACIÓN Y MÉTODOS NUMÉRICOS]

description

Fernando Ramos Albarrán. Instituto Politécnico Nacional. Chapra.RAICES DE ECUACIONES. Métodos cerrados. El Método de Bisección. El Método de Regla Falsa. Métodos abiertos. Método de Newton ‐ Raphson. Método de la Secante. Raíces de polinomios. Método de Lin Bairstow. SISTEMAS DE ECUACIONES ALGEBRAICAS LINEALES. Eliminación Gaussiana Simple y Sustitución hacia atrás. Gauss‐Jordan. Matriz Inversa y Multiplicación de Matrices. Método Iterativo de Gauss. SISTEMAS DE ECUACIONES NO LINEALES. Método de Newton – Raphson para n ecuaciones. AJUSTE DE CURVAS. Mínimos Cuadrados. Interpolación Polinomial de Newton en Diferencias Divididas. Polinomios de Interpolación de Lagrange. ECUACIONES DIFERENCIALES ORDINARIAS. Método de Euler. Métodos de Runge‐Kutta de cuarto orden. Comparación Gráfica de los Métodos de Runge Kutta Primer segundo, tercero, cuarto, quinto orden en MATLAB

Transcript of Métodos Numéricos y su programación en C++

  • Instituto Politcnico Nacional Escuela Superior de Ingeniera

    Mecnica y Elctrica

    Asesor: M.C. Jess Reyes Garca.

    Curso Propedutico para la

    Maestra en Ciencias en Ingeniera Elctrica.

    IngenieraElctrica

    15/Enero/2015

    Alumno: Ramos Albarrn Fernando

    [PROGRAMACINYMTODOSNUMRICOS]

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 1

    NDICEINTRODUCCIN..................................................................................................................................2

    I. RAICESDEECUACIONES.............................................................................................................4

    Mtodoscerrados...........................................................................................................................4

    ElMtododeBiseccin...............................................................................................................6

    ElMtododeReglaFalsa..........................................................................................................12

    Mtodosabiertos..........................................................................................................................21

    MtododeNewtonRaphson..................................................................................................22

    MtododelaSecante...............................................................................................................27

    Racesdepolinomios.....................................................................................................................30

    MtododeLinBairstow............................................................................................................30

    II. SISTEMASDEECUACIONESALGEBRAICASLINEALES..............................................................39

    EliminacinGaussianaSimpleySustitucinhaciaatrs...............................................................39

    GaussJordan.................................................................................................................................44

    MatrizInversayMultiplicacindeMatrices.................................................................................47

    MtodoIterativodeGauss...........................................................................................................50

    III. SISTEMASDEECUACIONESNOLINEALES............................................................................55

    MtododeNewtonRaphsonparanecuaciones.......................................................................55

    IV. AJUSTEDECURVAS...............................................................................................................61

    MnimosCuadrados......................................................................................................................62

    InterpolacinPolinomialdeNewtonenDiferenciasDivididas.....................................................66

    PolinomiosdeInterpolacindeLagrange.....................................................................................73

    V. ECUACIONESDIFERENCIALESORDINARIAS.............................................................................77

    MtododeEuler...........................................................................................................................78

    MtodosdeRungeKuttadecuartoorden...................................................................................80

    ComparacinGrficadelosMtodosdeRungeKuttaenMATLABhasta5to.Orden.................83

    CdigodelasfuncionesenMATLABdelosmtodosusados.......................................................88

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 2

    INTRODUCCINLosmtodosnumricos son tcnicasmediante las cuales esposible formularproblemasde talforma que puedan resolverse usando operaciones aritmticas. Aunque hay muchos tipos demtodos numricos, todos comparten una caracterstica comn: Invariablemente losmtodosnumricos llevanacabounbuennmerodetediososclculosaritmticos.Noesraroqueconeldesarrollodecomputadorasdigitaleseficientesyrpidas,elpapeldelosmtodosnumricosenlasolucindeproblemasdeingenierahayaaumentadoconsiderablementeenlosltimosaos.

    AIusar lacomputadoraparaobtenersolucionesdirectamente,sepuedenaproximar losclculossin tener que recurrir a suposiciones de simplificacin o tcnicas deficientes. Aunque dichassuposiciones son aun extremadamente valiosas tanto para resolver problemas como paraproporcionar una mayor comprensin, los mtodos numricos representan alternativas queamplan considerablemente la capacidad para confrontar y resolver los problemas; comoresultado, sedisponedems tiempopara aprovechar lashabilidades creativaspersonales.Porconsiguiente,esposibledarmsimportanciaalaformulacindeunproblema,alainterpretacindelasolucinyasuincorporacinalsistematotal,oconcienciaholstica.

    Los mtodos numricos son herramientas extremadamente poderosas para la solucin deproblemas.Soncapacesdemanejarsistemasdeecuacionesgrandes,nolinealidadesygeometrascomplicadasquesoncomunesenlaprcticadelaingenierayque,amenudo,sonimposiblesderesolver analticamente. Por lo tanto, amplan la habilidad de quien los estudia para resolverproblemas.

    Haymuchos problemas que no pueden plantearse al emplear programas hechos. Si se estversado en losmtodos numricos y se es un adepto de la programacin de computadoras,entonces se tiene la capacidad de disear programas propios para resolver los problemas, sintenerquecomprarunsoftwarecostoso.Enelpresentedocumentoseusar laprogramacinenC++ para construir nuestros propios programas para la resolucin de problemas usando losmtodosnumricosquesedescribenacontinuacin:

    1. Racesdeecuaciones.Estosproblemasestnrelacionadosconelvalordeunavariableodeunparmetroquesatisfaceunaecuacinyaseatrascendentalounpolinomio(Enstedocumento trataremos las races de un polinomio). Son especialmente valiosos enproyectosde ingenieradondecon frecuencia resulta imposibledespejaranalticamenteparmetrosdeecuacionesdediseo.

    2. Sistemasdeecuacionesalgebraicaslineales.Enesencia,estosproblemassonsimilaresalos de races de ecuaciones en el sentido de que estn relacionados con valores quesatisfacenecuaciones.Sinembargo,adiferenciadesatisfacerunasolaecuacin,sebuscaun conjunto de valores que satisfaga simultneamente a un conjunto de ecuacionesalgebraicas.Lasecuacioneslinealessimultneassurgenenelcontextodeunavariedaddeproblemasyentodaslasdisciplinasdelaingeniera.Enparticular,seoriginanapartirdemodelos matemticos de sistemas grandes de elementos interconectados, como:

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 3

    estructuras, circuitos elctricos y redes de flujo de fluidos, aunque tambin puedenencontrarseenotrasreasdelosmtodosnumricoscomoelajustedecurvas.

    3. Ajuste de curvas. Con frecuencia se presentar la oportunidad de ajustar curvas a unconjuntodedatos representadosporpuntos.Las tcnicasque sehandesarrolladoparaeste fin pueden dividirse en dos categoras generales: regresin e interpolacin. Laregresin se emplea cuando hay un grado significativo de error asociado a los datos;frecuentementelosresultadosexperimentalessondeestaclase.Paraestassituaciones,laestrategiaesencontraruna curvaque represente la tendencia generalde losdatos sinnecesidad de tocar los puntos individuales. En contraste, la interpolacin se manejacuandoelobjetivoesdeterminarvaloresintermediosentredatosqueestnrelativamentelibres de error. Tal es el caso de la informacin tabulada. Para estas situaciones, laestrategiaesajustarunacurvadirectamenteatravsdelospuntosyusarestacurvaparapredecirvaloresintermedios.

    4. Ecuaciones diferenciales ordinarias. Las ecuaciones diferenciales ordinarias tienen unenormesignificadoenlaprcticadelaingeniera.Estosedebeaquemuchasleyesfsicasestnexpresadasentrminosdelarazndecambiodeunacantidadmsqueentrminosde su magnitud. Entre los ejemplos se observan desde los modelos de prediccindemogrfica (razn de cambio de la poblacin) hasta la aceleracin de un cuerpo endescenso(razndecambiodelavelocidad).

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 4

    I. RAICESDEECUACIONES

    Mtodoscerrados.Losmtodos cerrados consisten en dar 2 puntos tales que stos encierren el valor de la raz,dichospuntosescuandoalsustituirlosenlafuncin,stacambiadesigno.Enstecasoseaplicaun anlisisde la curvamediante la implementacindeunprograma tabula.cpp en c++, el cualevalalafuncinparavaloresobtenidosatravsdeunintervalodadoyunnmerodepuntosenloscuales sedividedicho intervalo.Elprograma tabula.cppmuestraal final lospuntospara loscualesen la funcinhayuncambiode signo,estospuntos seusanen losmtodoscerradosdebiseccinyreglafalsa.

    Porejemplo,paraelsiguientepolinomio.

    5 0.5 11 10 1 Se introduce lafuncinen la librera#defineenelcdigodelprogramadec++,cmose indicaacontinuacin:

    #definef1(x)(1.0*pow(x,4)5.0*pow(x,3)+0.5*pow(x,2)11.0*x+10.0)

    Seejecuta,para10puntos,conunintervaloinferiorde0a5.5.LaejecucinenC++semuestraacontinuacin:ProgramaqueEvaluaunafuncinIntervaloinferior(xa):0Intervalosuperior(xb):5.5Numerodeintervalos(np):10x[+0]=+0.0000y[+0]=+10.0000x[+1]=+0.5500y[+1]=+3.3609x[+2]=+1.1000y[+2]=6.6859x[+3]=+1.6500y[+3]=21.8374x[+4]=+2.2000y[+4]=41.5944x[+5]=+2.7500y[+5]=63.2617x[+6]=+3.3000y[+6]=81.9479x[+7]=+3.8500y[+7]=90.5654x[+8]=+4.4000y[+8]=79.8304x[+9]=+4.9500y[+9]=38.2631x[+10]=+5.5000y[+10]=+47.8125Haycambiodesignoen+0.5500y+1.1000Haycambiodesignoen+4.9500y+5.5000Processexitedafter8.446secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 5

    Figura1.1.Programatabula.c

    Elprograma indicaparaque intervalosde la funcinhayuncambiodesigno;por lo tanto,esosvaloreslomsprobableesqueencierrenunaomsraces.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 6

    ElMtododeBiseccin.Sesabequeunpolinomiodegradontienenraceslascualespuedenser:

    Realesydistintas. Realeseiguales. Complejasconjugadas.

    Deacuerdoaellounpolinomiodegrado impar tendrpor lomenosuna raz real,paradichasracesocuparemoslosmtodosnumricosdeBiseccin,ReglaFalsa,NewtonRaphson.

    Engeneral,sif(x)esrealycontinaenel intervaloquevadesdexlhastaxuyf(xl)yf(xu)tienensignosopuestos,esdecir,

    0 2 Entonces hay al menos una raz real entre xl y xu. Los mtodos de bsqueda incrementalaprovechan esta caracterstica localizando un intervalo en el que la funcin cambie de signo.Entonces, la localizacin del cambiode signo (y, en consecuencia,de la raz) se logra conmsexactitud al dividir el intervalo en varios subintervalos. Se investiga cada uno de estossubintervalosparaencontrarelcambiodesigno.Elprocesoserepitey laaproximacina larazmejoracadavezmsen lamedidaque los subintervalos sedividenen intervaloscadavezmspequeos.Por loquesabemosqueexiste,almenos,una raz real.Apartirdeestepuntosevareduciendo el intervalo sucesivamente hasta hacerlo tan pequeo como exija la precisin quehayamosdecididoemplear.Enseguidaseexplicaraafondoypasoapasoelmtodo:

    Figura1.2.MtododeBiseccin.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 7

    Figura1.3. Ilustracinde las formasgeneralesenquepuedeocurriruna razenun intervalopreescritoporloslmitesinferiorxlysuperiorxu.Lasfigurasa)yc)muestranquesif(xl)yf(xu)tienenelmismosigno,entoncesnohabrracesdentrodelintervaloohabrunnmeropardeellas. Las fi guras b) y d)muestran que si la funcin tiene signos diferentes en los puntosextremos,entonceshabrunnmeroimparderacesdentrodelintervalo.

    Criteriodeconvergencia.

    Sedebedesarrollaruncriterioobjetivoparadecidircundodebeterminarelmtodo. Una sugerencia inicial sera finalizar el clculo cuando el errorverdaderoseencuentrepordebajodealgnnivelprefijado.Puededecidirsequeelmtodoterminacuandosealcanceunerrormsbajo,porejemplo,al0.1%. Se requiere estimar el error de forma tal que no se necesite elconocimientopreviode laraz,sepuedecalcularelerrorrelativoporcentualeadelasiguientemanera:

    3 Dondexrnuevoes larazen la iteracinactualyxranterioreselvalorde la

    raz en la iteracin anterior. Se utiliza el valor absoluto, ya que por lo general importa slo lamagnituddeeasinconsiderarsusigno.Cuandoeaesmenorqueunvalorpreviamentefijadoes,terminaelclculo.

    Apartirdelpolinomiodelcualseobtuvieron los intervalospara loscuales la funcincambiadesigno,seusaelprimer intervalo+0.5500y+1.1000paraprobarelprogramadebiseccin.cppyobtener laprimer raz.Paraeso seescribe la funcinen la cabecera#defineal igualqueenelprogramadetabula.cppysecorreelprogramaparauncriteriodeconvergenciade0.0001y20iteraciones.

    ProgramaMtododeBiseccin**NOTA:SeespecificaunnumerodeiteracionesparaprotegerSielmtodoconvergeanteselprogramaharunanotificacinIntervaloinferior(xi):0.55Intervalosuperior(xu):1.1ErrordeConvergencia(DadoenPorUnidad):0.0001NumerodeIteraciones(Depreferenciauseunnmeroentre100y150):20iteracionxixuxrEayiyuyr+1+0.5500+1.1000+0.8250+0.0000+3.36096.68591.0790+2+0.5500+0.8250+0.6875+0.2000+3.36091.0790+1.2725+3+0.6875+0.8250+0.7563+0.0909+1.27251.0790+0.1317+4+0.7563+0.8250+0.7906+0.0435+0.13171.07900.4646+5+0.7563+0.7906+0.7734+0.0222+0.13170.46460.1642+6+0.7563+0.7734+0.7648+0.0112+0.13170.16420.0157

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 8

    +7+0.7563+0.7648+0.7605+0.0056+0.13170.0157+0.0582+8+0.7605+0.7648+0.7627+0.0028+0.05820.0157+0.0213+9+0.7627+0.7648+0.7638+0.0014+0.02130.0157+0.0028+10+0.7638+0.7648+0.7643+0.0007+0.00280.01570.0064+11+0.7638+0.7643+0.7640+0.0004+0.00280.00640.0018+12+0.7638+0.7640+0.7639+0.0002+0.00280.0018+0.0005+13+0.7639+0.7640+0.7640+0.0001+0.00280.0018+0.0005ElMtodoCONVERGEa+13iteraciones.LARAIZES:+0.7639709473Processexitedafter20.31secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 9

    Figura1.4.ProgramadeBiseccin

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 10

    Ahoraqueseencontrunaraz,sedivideelpolinomiooriginalentreelfactordedicharaz(Estoes, intercambiando el signo de la raz), para obtener un nuevo polinomio que se usar en elmtodo de la regla falsa para determinar la segunda raz. Se ejecuta el programaDivide_dos_polinomios.cpp.Elcualpide tanto losgradoscomo loscoeficientesdeldivisorydeldividendoymuestraelcocienteyelresiduo.Setienequeespecificarsiuncoeficienteescero(Endadocaso).Lasalidadelprogramaenc++semuestraacontinuacin.

    Programaquedivide2polinomiosIntroduceelgradodeldivisor:1Introduceelvectorasociadoaldivisordemayoramenorgrado:divisor[0]=1divisor[1]=0.76397Introduceelgradodeldividendo:4Introduceelvectorasociadoaldividendodemayoramenorgrado:dividendo[0]=1dividendo[1]=5dividendo[2]=0.5dividendo[3]=11dividendo[4]=10DatosdelDivisor:divisor[+0]=+1.00000divisor[+1]=0.76397DatosdelDividendo:dividendo[+0]=+1.00000dividendo[+1]=5.00000dividendo[+2]=+0.50000dividendo[+3]=11.00000dividendo[+4]=+10.00000DatosdelCociente:cociente[+0]=+1.00000cociente[+1]=4.23603cociente[+2]=2.73620cociente[+3]=13.09037DatosdelResiduo:residuo[+0]=+0.00000residuo[+1]=+0.00000residuo[+2]=+0.00000residuo[+3]=+0.00000

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 11

    residuo[+4]=0.00065Processexitedafter240secondswithreturnvalue0Presioneunateclaparacontinuar...

    Comopuedeobservarse,elnuevopolinomioes:

    4.23603 2.73620 13.09037 4 Elcdigodelprogramaquedividepolinomiossemuestraenlafigura1.5.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 12

    Figura1.5.Programadedivisindepolinomios.

    ElMtododeReglaFalsa.Auncuando labiseccinesunatcnicaperfectamentevlidaparadeterminarraces,sumtodode aproximacin por fuerza bruta es relativamente ineficiente. La falsa posicin es unaalternativabasadaenunavisualizacingrfica.

    Un inconveniente delmtododebiseccin esque aldividir el intervalode xl a xu enmitadesiguales,no se tomanen consideracin lasmagnitudesde f(xl) y f(xu).Porejemplo, si f(xl)estmuchomscercanaaceroquef(xu),eslgicoquelarazseencuentremscercadexlquedexu.Unmtodoalternativoqueaprovechaestavisualizacingrficaconsisteenunir f(xl)y f(xu)conunalnearecta.Lainterseccindeestalneaconelejedelasxrepresentaunamejoraproximacindelaraz.Elhechodequesereemplacelacurvaporunalnearectadaunafalsaposicindelaraz; de aqu el nombre demtodo de la falsa posicin, o en latn, regula falsi. Tambin se leconocecomomtododeinterpolacinlineal.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 13

    Usando tringulos semejantes, la interseccinde la lnea rectaconelejede lasx seestimamediante

    5 Enlacualsedespejaxr

    6 staes la frmulade la falsaposicin.Elvalordexrcalculadocon laecuacin (6),reemplazar,despus,acualquieradelosdosvaloresiniciales,xloxu,ydaunvalordelafuncinconelmismosignodef(xr).Deestamanera,losvaloresxlyxusiempreencierranlaverdaderaraz.Elprocesoserepitehastaquelaaproximacinalarazseaadecuada.Elalgoritmoesidnticoaldelabiseccin(figura1.2),exceptoenque laecuacinseusaenelpaso2.Adems,seusaelmismocriteriodeterminacin[ecuacin(3)]paraconcluirlosclculos.

    Figura1.6Representacingrficadelmtododelafalsaposicin.Conlostringulossemejantessombreadosseobtienelafrmulaparaelmtodo.

    A partir del polinomio de tercer grado que se obtiene de hacer la divisin, se usa el segundointervalo+4.9500y+5.5000paraprobarelprogramaderegla_falsa.cppyobtenerlasegundaraz.Paraesoseescribelafuncinenlacabecera#definealigualqueenelprogramadebiseccion.cppysecorreelprogramaparauncriteriodeconvergenciade0.0001y20iteraciones.

    ProgramaMtododeReglaFalsa**NOTA:SeespecificaunnumerodeiteracionesparaprotegerSielmtodoconvergeanteselprogramaharunanotificacinIntervaloinferior(xi):4.95

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 14

    Intervalosuperior(xu):5.5ErrordeConvergencia(DadoenPorUnidad):0.0001NumerodeIteraciones(Depreferenciauseunnmeroentre100y150):20iteracionxixuxrEayiyuyr+1+4.9500+5.5000+5.2113+0.00009.1405+10.09560.8619+2+5.2113+5.5000+5.2341+0.00430.8619+10.09560.0707+3+5.2341+5.5000+5.2359+0.00040.0707+10.09560.0057+4+5.2359+5.5000+5.2361+0.00000.0057+10.09560.0005ElMtodoCONVERGEa+4iteraciones.LARAIZES:+5.2360505080Processexitedafter16.6secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 15

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 16

    Figura1.7.ProgramadeReglaFalsa.

    Seusanuevamenteelprogramaparadividirpolinomios,usandoelfactordelasegundarazcomodivisoryelpolinomiodetercergradocomodividendo.Lasalidadelprogramaeslasiguiente:Programaquedivide2polinomiosIntroduceelgradodeldivisor:1Introduceelvectorasociadoaldivisordemayoramenorgrado:divisor[0]=1divisor[1]=5.23605Introduceelgradodeldividendo:3Introduceelvectorasociadoaldividendodemayoramenorgrado:dividendo[0]=1dividendo[1]=4.23603dividendo[2]=2.73620dividendo[3]=13.09037DatosdelDivisor:divisor[+0]=+1.00000divisor[+1]=5.23605DatosdelDividendo:dividendo[+0]=+1.00000dividendo[+1]=4.23603dividendo[+2]=2.73620dividendo[+3]=13.09037DatosdelCociente:cociente[+0]=+1.00000cociente[+1]=+1.00002cociente[+2]=+2.49995DatosdelResiduo:residuo[+0]=+0.00000residuo[+1]=+0.00000

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 17

    residuo[+2]=+0.00000residuo[+3]=0.00048Processexitedafter60.66secondswithreturnvalue0Presioneunateclaparacontinuar...Seobtieneunpolinomiodesegundogrado.

    2.5 7 Sepuedeapreciarquesudiscriminanteesnegativo,porlotantoseobtendrnracescomplejas,sepuede usar la formula general de segundo orden. Se ejecuta el programaEcuacion_general_2do_orden.cpp,yseobtienendichasracescomplejas.Lasalidadelprogramaimplementadoenc++eslasiguiente:ProgramaparacalcularlasracesdeunpolinomiodesegundogradoUsandolafrmulageneralax^2+bx+ca=1b=1c=2.5LasraicessonparesdeCOMPLEJOSCONJUGADOSx1=0.5000+1.5000ix2=0.50001.5000iProcessexitedafter10.48secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 18

    Figura1.8.ProgramadeEcuacinGeneralde2do.Orden.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 19

    Avecesesnecesariomultiplicardospolinomios,comoeselcasodelasinterpolacionesdeNewtonyLagrange;sinembargo,esosmtodossebasanenelusodematricesyarreglosimplementadosyadentrodelprogramadelmtodo,por lo cual enseguida semuestraunprograma individualdesarrolladoparamultiplicar2polinomios.Simultiplicamoselpolinomiodesegundogradodelaecuacin7porelfactordelasegundarazencontradaporelmtododereglafalsa,setienequeobtenerelpolinomiodetercergradodelaecuacin4.Lasalidadelprogramaes:

    Programaquemultiplica2polinomiosIntroduceelgradodelprimerpolinomio:1Introduceelvectorasociadoalprimerpolinomio:pol1[0]=5.23605pol1[1]=1Introduceelgradodelsegundopolinomio:2Introduceelvectorasociadoalsegundopolinomio:pol2[0]=2.5pol2[1]=1pol2[2]=1DatosdelPolinomio1:pol1[+0]=5.24pol1[+1]=+1.00DatosdelPolinomio2:pol2[+0]=+2.50pol2[+1]=+1.00pol2[+2]=+1.00DatosdelPolinomio3:pol3[+0]=13.09pol3[+1]=2.74pol3[+2]=4.24pol3[+3]=+1.00Processexitedafter237.2secondswithreturnvalue0Presioneunateclaparacontinuar...

    Sepuedeapreciarqueelresultadoescorrecto.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 20

    Figura1.9.Programaquemultiplica2polinomios.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 21

    Mtodosabiertos.En los mtodos cerrados del captulo anterior la raz se encuentra dentro de un intervalopredeterminadoporun lmite inferior yotro superior. Laaplicacin repetidadeestosmtodossiempregeneraaproximacionescadavezmscercanasa la raz.Sediceque talesmtodossonconvergentesporqueseacercanprogresivamentea larazamedidaqueseavanzaenelclculo(figura1.10a).

    Encontraste,losmtodosabiertosdescritosenestecaptulosebasanenfrmulasquerequierennicamente de un solo valor de inicio x o que empiecen con un par de ellos, pero que nonecesariamenteencierran laraz.stos,algunasvecesdivergenosealejandelarazverdaderaamedida que se avanza en el clculo (figura 1.10b). Sin embargo, cuando losmtodos abiertosconvergen(figura1.10c),engenerallohacenmuchomsrpidoquelosmtodoscerrados.

    Figura1.10.Representacingrficadelasdiferenciasfundamentalesentrelosmtodosa)cerrados,b)yc)losmtodosabiertos para el clculo de races. En a) se ilustra elmtodo de biseccin, donde la raz est contenida dentro delintervalodadopor xl, y xu. En contraste,en losmtodos abiertos, ilustradosenb) y c), seutilizauna frmulaparadirigirse de xi a xi+1, con un esquema iterativo. As, el mtodo puede b) diverger o c) converger rpidamente,dependiendodelosvaloresiniciales.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 22

    MtododeNewtonRaphson.Talvez,de las frmulaspara localizar races, la frmuladeNewtonRaphson (figura1.11)sea lams ampliamente utilizada. Si el valor inicial para la raz es xi, entonces se puede trazar unatangentedesdeelpunto[xi,f(xi)]delacurva.Porlocomn,elpuntodondeestatangentecruzaalejexrepresentaunaaproximacinmejoradadelaraz.

    ElmtododeNewtonRaphsonsededuceapartirdeesta interpretacingeomtrica(unmtodoalternativobasadoenlaseriedeTaylor).Delafigura1.11,setienequelaprimeraderivadaenxesequivalentealapendiente:

    8 Quesearreglaparaobtener:

    9 LacualseconocecomofrmuladeNewtonRaphson.

    NohayuncriteriogeneraldeconvergenciaparaelmtododeNewtonRaphson.Suconvergenciadependedelanaturalezadelafuncinydelaexactituddelvalorinicial.Lanicasolucinenestoscasos es tener un valor inicial que sea suficientemente cercano a la raz. Y para algunasfuncionesningnvalor inicial funcionar!Losbuenosvalores inicialespor locomn sepredicenconunconocimientodelproblemafsicoomedianteelusoderecursosalternativos,talescomolasgrficas,queproporcionanmayorclaridadenelcomportamientode lasolucin.Ante lafaltade un criterio general de convergencia se sugiere el diseo de programas computacionaleseficientesquereconozcanlaconvergencialentaoladivergencia.

    Figura1.11.RepresentacingrficadelmtododeNewtonRaphson.Seextrapolaunatangentealafuncinenxi[estoes,f(xi)]hastaelejexparaobtenerunaestimacindelarazenxi+1.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 23

    AunqueengeneralelmtododeNewtonRaphsonesmuyeficiente,haysituacionesdondesecomporta de manera deficiente. En efecto, una pendiente cero [(x) = 0] es un verdaderodesastre,yaquecausaunadivisinentreceroen la frmuladeNewtonRaphson[ecuacin (9)].En formagrfica (figura1.12),esto significaque la solucin sedisparahorizontalmentey jamstocaalejex.

    Figura1.12.CasoespecialdondeelmtododeNewtonRaphsonexhibeunaconvergenciadeficiente.

    Paraelsiguientepolinomio.

    4 5 6 4 10 Se obtendr la primera raz con el mtodo de NewtonRaphson. Primeramente se evala lafuncinparaunintervalousandoelprogramatabula.cppcmosemuestraenseguida,demaneradetenerunvalorinicialcercanoalarazyelmtodopuedaconvergerodivergirrpidamente.

    ProgramaqueEvaluaunafuncinIntervaloinferior(xa):2Intervalosuperior(xb):3Numerodeintervalos(np):20x[+0]=2.0000y[+0]=120.0000x[+1]=1.7500y[+1]=66.2256x[+2]=1.5000y[+2]=31.7188x[+3]=1.2500y[+3]=11.0830x[+4]=1.0000y[+4]=+0.0000x[+5]=0.7500y[+5]=+4.8877x[+6]=0.5000y[+6]=+6.0938x[+7]=0.2500y[+7]=+5.4053x[+8]=+0.0000y[+8]=+4.0000x[+9]=+0.2500y[+9]=+2.5635x[+10]=+0.5000y[+10]=+1.4062x[+11]=+0.7500y[+11]=+0.5811x[+12]=+1.0000y[+12]=+0.0000x[+13]=+1.2500y[+13]=0.4482x[+14]=+1.5000y[+14]=0.7812

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 24

    x[+15]=+1.7500y[+15]=0.8057x[+16]=+2.0000y[+16]=+0.0000x[+17]=+2.2500y[+17]=+2.6025x[+18]=+2.5000y[+18]=+8.5312x[+19]=+2.7500y[+19]=+19.9951x[+20]=+3.0000y[+20]=+40.0000Hayunarazentre1.2500y0.7500Ylarazes:1.0000Hayunarazentre+0.7500y+1.2500Ylarazes:+1.0000Hayunarazentre+1.7500y+2.2500Ylarazes:+2.0000Processexitedafter4.711secondswithreturnvalue0Presioneunateclaparacontinuar...

    Figura1.13.Unamejoradeprogramatabula.cpppuedesersiencuentraunvalorparaelcuallafuncinseacero,indicarquehayunarazenesevalor,stecdigoseagregadentrodelafuncintabula,peroparaaplicarelmtodotambinsepuedeindicardentrodelosintervalosenlosqueestdicharaz.Endadocasosepodraampliarelnmerodepuntoso

    elintervaloelegido.

    Seseleccionaelprimerintervaloentre1.2500y0.7500parausarelmtododeNewtonRaphson.Almomentodeintroducirlafuncindelpolinomioenlasdirectivas#defineserequieretambinsuderivada.Porlocuallaexpresindelaprimeraderivadadelaecuacin10es:

    5 16 15 6 11 ComoelmtododeNewtonRaphsonrequiereslounvalorinicial,setomaelpunto1.25conuncriteriodeconvergenciade0.0001a20iteraciones.Lasalidadelprogramaes:

    ProgramaMtododeNewtonRaphson**NOTA:Seespecificaunnumerodeiteracionessielmtodoconvergeanteselprogramaharunanotificacin.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 25

    Puntoinicial(xi):1.25ErrordeConvergencia(DadoenPorUnidad):0.0001NumerodeIteraciones(Depreferenciauseunnmeroentre100y150):20iteracionxixi+1Eaf(xi)f'(xi)+11.25001.0680+0.170411.0830+60.8945+21.06801.0066+0.06092.2764+37.1051+31.00661.0001+0.00660.2016+30.6555+41.00011.0000+0.00010.0021+30.0070ElMtodoCONVERGEa+4iteraciones.LARAIZES:1.0000000083Processexitedafter19.05secondswithreturnvalue0Presioneunateclaparacontinuar...Se divide el polinomio original de 5to orden entre el factor de la raz encontrada usando elprograma de divisin de polinomios. A continuacin se muestran nicamente las salidas delcocienteyresiduo.

    Programaquedivide2polinomiosDatosdelCociente:cociente[+0]=+1.00000cociente[+1]=5.00000cociente[+2]=+10.00000cociente[+3]=10.00000cociente[+4]=+4.00000DatosdelResiduo:residuo[+0]=+0.00000residuo[+1]=+0.00000residuo[+2]=+0.00000residuo[+3]=+0.00000residuo[+4]=+0.00000residuo[+5]=+0.00000Processexitedafter28.02secondswithreturnvalue0Presioneunateclaparacontinuar...Elpolinomiosimplificadodespusdeladivisines:

    5 10 10 4 12

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 26

    Figura1.14.ProgramadeNewtonRaphson

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 27

    MtododelaSecante.UnproblemapotencialenlaimplementacindelmtododeNewtonRaphsoneslaevaluacindela derivada. Aunque esto no es un inconveniente para los polinomios ni para muchas otrasfunciones, existen algunas funciones cuyas derivadas en ocasiones resultan muy difciles decalcular.Endichoscasos, laderivadasepuedeaproximarmedianteunadiferenciafinitadivididahaciaatrs,comoen(figura1.15).

    13 Estaaproximacinsesustituyeenlaecuacin(9)paraobtenerlasiguienteecuaciniterativa:

    14 Laculeslafrmulaparaelmtododelasecante.Observequeelmtodorequierededosvaloresinicialesdex.Sinembargo,debidoaquenosenecesitaquef(x)cambiedesignoentrelosvaloresdados,estemtodonoseclasificacomounmtodocerrado.

    Figura 1.15. Representacin grfica delmtodo de la secante. Esta tcnica es similar a la delmtodo deNewtonRaphson (figura1.11)enel sentidodequeunaaproximacinde la raz seprediceextrapolandouna tangentede lafuncinhastaelejex.Sinembargo,elmtododelasecanteusaunadiferenciadivididaenlugardeunaderivadaparaestimarlapendiente.

    Seseleccionaelsegundointervaloentre+0.7500y+1.2500parausarelmtododelaSecante.Almomentodeintroducirlafuncindelpolinomioenlasdirectivas#defineseintroduceelpolinomioreducidode laecuacin12. Los2puntosmencionadosensteprrafoencierrana la raz y seconsiderancomolospuntosiniciales,nonecesariamentetienenqueencerraralarazcomoantessemencion,peroparaste casousamosesospuntos,ademsun criteriode convergenciade0.0001a20iteraciones.Lasalidadelprogramaeslasiguiente:ProgramaMtododelaSecante

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 28

    **NOTA:Seespecificaunnumerodeiteraciones,sielmtodoconvergeanteselprogramaharunanotificacin.LospuntosinicialesdadospuedenonoencerrarlaraizPuntoinicial1(xi1):0.75Puntoinicial2(xi):1.25ErrordeConvergencia(DadoenPorUnidad):0.0001NumerodeIteraciones(Depreferenciauseunnmeroentre100y150):20iteracionxi1xixi+1Eaf(xi1)f(xi)pend+1+0.7500+1.2500+1.0625+0.1765+0.33200.19921.0625+2+1.2500+1.0625+0.9839+0.07980.19920.05880.7488+3+1.0625+0.9839+1.0010+0.01700.0588+0.01630.9565+4+0.9839+1.0010+1.0000+0.0010+0.01630.00101.0153+5+1.0010+1.0000+1.0000+0.00000.00100.00000.9990ElMtodoCONVERGEa+5iteraciones.LARAIZES:+0.9999999838Processexitedafter36.77secondswithreturnvalue0Presioneunateclaparacontinuar...

    Se usa el programa para dividir polinomios, para reducir el polinomio de cuarto orden de laecuacin12aunodetercerordendividindoloentreelfactorde larazobtenidaporelmtododelasecante.

    Programaquedivide2polinomiosDatosdelCociente:cociente[+0]=+1.00000cociente[+1]=4.00000cociente[+2]=+6.00000cociente[+3]=4.00000DatosdelResiduo:residuo[+0]=+0.00000residuo[+1]=+0.00000residuo[+2]=+0.00000residuo[+3]=+0.00000residuo[+4]=+0.00000Processexitedafter48.78secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 29

    Figura1.16.ProgramadelaSecante

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 30

    Elnuevopolinomioreducidoes:

    4 6 4 15 Esteresultadoseusarparaaproximarunfactorcuadrticoenelcualelfactorcuadrtico inicialconsisteenlosfactoresdelas2racesquesehanencontradoconlosmtodosabiertos,elfactorcuadrticoqueseencontraralresolverloporlafrmulageneraldesegundogradoproporcionarlasracescomplejas,aldividirelpolinomiodetercergradodelaecuacin15sehabrobtenidounltimofactoquealigualarloaceroydespejar,serlaltimarazrealdelpolinomiode5toordendelaecuacin10.

    Racesdepolinomios

    MtododeLinBairstowElmtododeBairstowesunmtodoiterativorelacionadodealgunamaneraconlosmtodosdeMller y de NewtonRaphson. Antes de hacer la descripcinmatemtica de ste, recuerde laformafactorizadadeunpolinomio,porejemplo

    5 4 5 3 2 16 Sisedivideentreunfactorquenoesunaraz(porejemplo,x+6),elcocienteesunpolinomiodecuartogrado.Aunque,enestecaso,habrunresiduodiferentedecero.

    Con estas consideraciones se puede elaborar un algoritmo para determinar la raz de unpolinomio:

    1) Dunvalorinicialparalarazx=t.2) Dividaelpolinomioentreelfactorxt3) Determinesihayunresiduodiferentedecero.Sino,elvalorinicialesperfectoylarazes

    igualat.Siexisteunresiduo,seajustaelvalor inicialenformasistemticayserepiteelprocedimientohastaqueelresiduodesaparezcayselocalice laraz.Unavezhechoesto,serepiteelprocedimientototalmente,ahoraconelcocienteparalocalizarotraraz.

    Por lo general, elmtodo deBairstow se basa en estamanera de proceder. Por consiguiente,dependedelprocesomatemticodedividirunpolinomioentreunfactor.

    Porejemplo,elpolinomiogeneral:

    0 1 2 2 17 Sedivideentreelfactorxtparadarunsegundopolinomioqueesdeungradomenor:

    1 1 2 3 2 1 18

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 31

    ConunresiduoR=b0,dondeloscoeficientessecalculanporlarelacinderecurrencia

    19.1 1 0 19.2

    Observequesitesunarazdelpolinomiooriginal,elresiduob0seraigualacero.

    Parapermitirlaevaluacinderacescomplejas,elmtododeBairstowdivideelpolinomioentreunfactorcuadrticox2rxs.Siestosehaceconlaecuacin(17),elresultadoesunnuevopolinomio

    2 2 3 1 3 2 20 Conunresiduo

    1 0 21 Comoconladivisinsintticanormal,seutilizaunarelacinderecurrenciasimplepararealizarladivisinentreelfactorcuadrtico:

    22.1 22.2

    2 0 22.3 El factorcuadrticose introduceparapermitir ladeterminacinde las racescomplejas.Estoserelaciona con el hecho de que, si los coeficientes del polinomio original son reales, las racescomplejassepresentanenparesconjugados.Six2rxsesundivisorexactodelpolinomio,lasraces complejas pueden determinarse con la frmula cuadrtica. As, elmtodo se reduce adeterminarlosvaloresderysquehacenqueelfactorcuadrticoseaundivisorexacto.Enotraspalabras,sebuscanlosvaloresquehacenqueelresiduoseaigualacero.

    La inspeccinde laecuacin (21)nos llevaaconcluirqueparaqueel residuoseacero,b0yb1debensercero.Comoesimprobablequelosvaloresinicialesparaevaluarrysconduzcanaesteresultado,debemosdeterminarunaformasistemticaparamodificar losvalores iniciales,detalformaqueb0yb1tiendanacero.Paralograrlo,elmtododeBairstowusaunaestrategiasimilara ladelmtododeNewtonRaphson.Comotantob0comob1sonfuncionesderys,sepuedenexpandirusandounaseriedeTayloryseobtieneunsistemadeecuacionesdederivadasparcialesdndelasvariablessonincrementosdelosfactoresdelaaproximacindelfactorcuadrtico,rys.Bairstowdemostrque lasderivadasparcialesseobtienenpordivisinsintticade lasbenformasimilaracomolasbmismasfueronobtenidas:

    23.1

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 32

    23.2 2 1 23.2

    Lasderivadasparcialesseobtienenpor ladivisinsintticade lasbysesustituyenenelsistemadeecuacionesdederivadasparcialesjuntoconlasbparadarelsiguientesistema:

    2 3 1 24.1 1 2 0 24.2

    Estas ecuaciones se resuelven para r y s, las cuales, a su vez, se emplean paramejorar losvaloresinicialesderys.Encadapaso,seestimaunerroraproximadoenrys:

    25.1

    25.2 Cuandoamboserroresestimadoscaenpordebajodeuncriterioespecificadodeterminacines,losvaloresdelasracessedeterminanmediante:

    26

    Enestepunto,existentresposibilidades:

    1) Elcocienteesunpolinomiodetercergradoomayor.Entalcaso,elmtododeBairstowseaplica al cocientepara evaluarunnuevo valorde r y s. Los valores anterioresde r y spuedenservircomovaloresinicialesenestaaplicacin.

    2) El cocientees cuadrtico.Aquesposibleevaluardirectamente lasdos races restantesconlaecuacin(26).

    3) El cociente es un polinomio de primer grado. En este caso, la raz restante se evalasimplementecomo

    27

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 33

    Para el polinomio de quinto grado de la ecuacin 10, 4 5 6 4seobtuvieron lasraces 1y+1yseredujoalpolinomiodetercergradode laecuacin15,

    4 6 4.Enelfactorcuadrtico inicial,rsetomacomo1yscomo 1auncriteriodeconvergenciade0.0001y20iteraciones.LasalidadelprogramaenC++eslasiguiente(Ntesequelosvaloresderyssecambiandesignoalintroducirloscomoelfactorcuadrticox2rxs).

    ProgramadeLinBairstowIntroduceelgradodelpolinomioareducir:3Introduceelvectorasociadoadichopolinomio:polinomio[0]=4polinomio[1]=6polinomio[2]=4polinomio[3]=1Introduceelvectorasociadoalfactorcuadrtico(elcoeficientedex^2debeseriguala1):factor[0]=1factor[1]=1factor[2]=1Tecleeelnumerodeiteraciones:20Tecleeelnumerocriteriodeconvergenciaes:0.0001FACTOR:+1.00000x^2+1.00000x1.00000******ITERACION*****:+1b[+3]=+1.00000b[+2]=5.00000b[+1]=+12.00000b[+0]=21.00000c[+3]=+1.00000c[+2]=6.00000c[+1]=+19.00000Er:+1.50000Es:+0.85714FACTOR:+1.00000x^22.00000x7.00000******ITERACION*****:+2b[+3]=+1.00000b[+2]=2.00000b[+1]=+9.00000b[+0]=+0.00000c[+3]=+1.00000c[+2]=+0.00000c[+1]=+16.00000

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 34

    Er:+0.00000Es:+4.50000FACTOR:+1.00000x^22.00000x+2.00000******ITERACION*****:+3b[+3]=+1.00000b[+2]=2.00000b[+1]=+0.00000b[+0]=+0.00000c[+3]=+1.00000c[+2]=+0.00000c[+1]=2.00000Er:+0.00000Es:+0.00000ElMtodoCONVERGEa+3iteraciones.Elfactorcuadrticoes:+1.00000x^22.00000x+2.00000Processexitedafter36.83secondswithreturnvalue0Presioneunateclaparacontinuar...

    Seusaelprogramadeecuacionesdesegundogradopararesolverdichofactorcuadrtico.

    ProgramaparacalcularlasracesdeunpolinomiodesegundogradoUsandolafrmulageneralax^2+bx+ca=1b=2c=2LasraicessonparesdeCOMPLEJOSCONJUGADOSx1=1.0000+1.0000ix2=1.00001.0000iProcessexitedafter8.515secondswithreturnvalue0Presioneunateclaparacontinuar...Yseobservaqueseobtienenracescomplejas.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 35

    Laquintayltimarazseencuentraaldividirelpolinomiodetercergradode laecuacin15,entreelfactorencontradoydespejarusandolaecuacin27.Programaquedivide2polinomiosDatosdelCociente:cociente[+0]=+1.00000cociente[+1]=2.00000DatosdelResiduo:residuo[+0]=+0.00000residuo[+1]=+0.00000residuo[+2]=+0.00000residuo[+3]=+0.00000Processexitedafter40.25secondswithreturnvalue0Presioneunateclaparacontinuar...Claramentelaquintarazesiguala2.0.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 36

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 37

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 38

    Figura1.17.ProgramadeLinBairstow

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 39

    II. SISTEMASDEECUACIONESALGEBRAICASLINEALES.

    EliminacinGaussianaSimpleySustitucinhaciaatrsLasecuacionesalgebraicaslinealessimultneasqueengeneralserepresentancomo:

    28

    Dondelasasonloscoeficientesconstantesylasbsonlostrminosindependientesconstantes.Latcnicaquesedescribeenestecaptuloseconocecomo laeliminacindeGauss,yaque implicaunacombinacindeecuacionesparaeliminar las incgnitas.Aunquesteesunode losmtodosmsantiguospararesolverecuacioneslinealessimultneas,continasiendounodelosalgoritmosdemayor importancia, y es la base para resolver ecuaciones lineales enmuchos paquetes desoftwarepopulares.

    La estrategiabsica consiste enmultiplicar las ecuacionespor constantes, de tal formaque seelimineunade las incgnitas cuando se combinen lasdosecuaciones.El resultadoesuna solaecuacinen laquesepuededespejar la incgnitarestante.Estevalorsesustituyeencualquieradelasecuacionesoriginalesparacalcularlaotravariable.

    Estatcnicabsicapuedeextenderseasistemasgrandesdeecuacionesdesarrollandounesquemasistemticooalgortmicoparaeliminarincgnitasysustituirhaciaatrs.Aunquetalestcnicassonmuy adecuadas para utilizarlas en computadoras, se requiere de algunasmodificaciones paraobtenerunalgoritmoconfiable.Enparticular,elprogramadebeevitar ladivisinentrecero.Almtodosiguienteselellamaeliminacingaussianasimple,yaquenoevitaesteproblema.Enlassiguientes secciones se vern algunas caractersticas adicionales necesarias para obtener unprogramadecmputoefectivo.

    Laprimerafaseconsisteenreducirelconjuntodeecuacionesaunsistematriangularsuperior.Elpasoinicialsereliminarlaprimeraincgnita,x1,desdelasegundahastalansimaecuacin.

    Dondelosvaloresde , y secalculancomo(parak=1,2,3,,N1[Tamaodelsistema]):

    29

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 40

    Donde el superndice prima indica que los elementos han cambiado sus valores originales. Elelemento , sedenominaelcoeficienteoelementopivote.Enparticularcuandodichoelementoes cerohayunadivisin entre cero y elmtodo falla,paraesoenelProgramadeeliminacinGaussiana Simpledesarrollado enC++ se implementaun algoritmoque intercambia filashastaencontrarunelementodiferentedecero,sinoseencuentraunvalordiferenteaceroelprogramaindicaqueel sistemano tiene solucinohay infinidadde soluciones. Yaqueendado casonohabramatriz inversadel sistemao sudeterminante sera iguala cero,por lo cual se llegaa lamismaconclusindequenoexistesolucinohayinfinidaddeellas.Alfinalde la implementacindelmtododeEliminacinGaussianaSimple,se llegaaunsistemadondesetieneunamatriztriangularsuperior,cmosemuestraacontinuacin.

    30

    El siguientepasopara resolver el sistema es emplear sustitucinhacia atrs. Este resultado sepuedesustituirhaciaatrsenla(n1)simaecuacinydespegarxn1.Elprocedimiento,queserepiteparaevaluarlasxrestantes,serepresentamediantelafrmula:

    31 Acontinuacinse introduceunsistemapararesolverloconelprogramadesarrolladoenC++,enparticular,seintroduceunsistemadndehayunpivotecero,seobservaqueelmismoprogramahaceelintercambiodefilas.ProgramadeEliminacinGaussiana1)Introduceelvectordeterminosindependientesb[+1]=1b[+2]=1b[+3]=1VECTORDETERMINOSINDEPENDIENTESb[+1]=+1.0000b[+2]=+1.0000b[+3]=+1.00002)IntroducelamatrizdeterminosdependientesA[+1][+1]=1

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 41

    A[+1][+2]=2A[+1][+3]=6A[+2][+1]=4A[+2][+2]=8A[+2][+3]=1A[+3][+1]=2A[+3][+2]=3A[+3][+3]=5MATRIZDETERMINOSDEPENDIENTESA[+1][+1]=+1.0000A[+1][+2]=+2.0000A[+1][+3]=+6.0000A[+2][+1]=+4.0000A[+2][+2]=+8.0000A[+2][+3]=1.0000A[+3][+1]=2.0000A[+3][+2]=+3.0000A[+3][+3]=+5.0000Seintercambialafila+2conlafila+3LAMATRIZTRIANGULARSUPERIORES:u[+1][+1]=+1.0000u[+1][+2]=+2.0000u[+1][+3]=+6.0000u[+2][+1]=+0.0000u[+2][+2]=+7.0000u[+2][+3]=+17.0000u[+3][+1]=+0.0000u[+3][+2]=+0.0000u[+3][+3]=25.0000VECTORINDEPENDIENTEY:y[+1]=+1.0000y[+2]=+3.0000y[+3]=3.0000AplicandosustitucinhaciaatrsVECTORSOLUCION:x[+1]=+0.0057x[+2]=+0.1371x[+3]=+0.1200Processexitedafter17.68secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 42

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 43

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 44

    Figura2.1.ProgramadeEliminacinGaussianaysustitucinhaciaatrs

    GaussJordanElmtododeGaussJordanesunavariacinde laeliminacindeGauss. LaprincipaldiferenciaconsisteenquecuandounaincgnitaseeliminaenelmtododeGaussJordan,staeseliminadade todas las otras ecuaciones, no slo de las subsecuentes. Adems, todos los renglones senormalizanaldividirlosentresuelementopivote.Deesta forma,elpasodeeliminacingeneraunamatrizidentidadenvezdeunatriangular(figura2.2).Enconsecuencia,noesnecesariousarlasustitucinhaciaatrsparaobtenerlasolucin.

    Figura 2.2. Representacin grfica del mtodo de GaussJordan. Observe la diferenciaentre esta tcnica y la de eliminacin de Gauss. El superndice (n) significa que loselementosdelvectordelladoderechosehanmodificadonveces(enestecason=3).

    Aunque la tcnicadeGaussJordan y laeliminacindeGausspodranparecer casi idnticas, laprimerarequieremstrabajo, involucraaproximadamente50porcientomsoperacionesque laeliminacindeGauss.Portanto,laeliminacindeGausseselmtododeeliminacinsencillaqueseprefiereparaobtenerlassolucionesdeecuacionesalgebraicaslineales.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 45

    SeintroduceelmismosistemaqueseresolviporEliminacinGaussianaSimpleparaelprogramadesarrolladoparaGaussJordan.Elvectorde trminos independientes seguardaenunamismamatriz donde se guardan los elementos de lamatriz de trminos dependientes. La salida delprogramaenC++es:

    MetododeEliminaciondeGaussJordanNumerodeEcuaciones:3Damelosvaloresdelamatriz:a[1][1]=1a[1][2]=2a[1][3]=6a[1][4]=1a[2][1]=2a[2][2]=3a[2][3]=5a[2][4]=1a[3][1]=4a[3][2]=8a[3][3]=1a[3][4]=1Solucionx[1]=0.00571428x[2]=0.137143x[3]=0.12Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 46

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 47

    Figura2.3.ProgramadeGaussJordan

    MatrizInversayMultiplicacindeMatricesUsandoelprincipio lamatrizaumentada,seaadeensuscolumnasa laderechadeunamatrizcuadrada, lamatriz identidad,al realizarelmtododeGauss Jordan, lamatrizdel ladodel ladoizquierdo resulta ser la identidad y la del lado izquierdo de igual tamao es la inversa. En elprogramaseintroduceunamatrizyseobtienelainversa,luegoseverificaqueefectivamentestaseasuinversa,porlocualsemultiplicaporsumatrizoriginalyseobtienelaidentidad.ProgramadeMatrizinversausandoGaussJordanDameelnumerodefilasycolumnasdelamatrizcuadradaA=3DameelvalordeA[1][1]=3DameelvalordeA[2][1]=1DameelvalordeA[3][1]=1DameelvalordeA[1][2]=1DameelvalordeA[2][2]=1DameelvalordeA[3][2]=0DameelvalordeA[1][3]=1DameelvalordeA[2][3]=0DameelvalordeA[3][3]=1MATRIZA311110101MATRIZINVERSA111121112MATRIZIDENTIDAD12.38419e0072.38419e0070101.19209e00701Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 48

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 49

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 50

    Figura2.4.ProgramaMatrizInversayMultiplicacindeMatrices

    MtodoIterativodeGaussParastemtodo,seconsideraelsiguientesistemadeecuaciones.

    32

    Yserepresentacadaunadelasvariablesentrminosdeellasmismas.

    33

    Locualsugiereelsiguienteesquemaiterativodesoluciones.

    34

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 51

    Engeneralsepuedeescribircomo:

    35

    Elcriteriodeconvergenciaquesemanejaparastemtodoeselvalorabsolutode lanormadelvector de soluciones de la iteracin anterior menos la norma del vector de soluciones de laiteracinactual,entre lanormadelvectordesolucionesde la iteracinanterior,tantoparastemtodo cmo para elNewtonRaphson para solucin de n ecuaciones no lineales que se verenseguida.ParaprobarelmtododeGauss Iterativo implementadoenC++, seusael siguientesistemadeecuaciones.

    36

    Conunvectordecondicionesinicialesde1,2y2.Parauncriteriodeconvergenciade0.000001y20iteraciones.Laejecucindelprogramaes:

    ProgramadeMtodoIterativodeGauss(Jacobi)1)Introduceelvectordeterminosindependientesb[+1]=7b[+2]=21b[+3]=152)IntroducelamatrizdeterminosdependientesA[+1][+1]=4A[+1][+2]=1A[+1][+3]=1A[+2][+1]=4A[+2][+2]=8A[+2][+3]=1A[+3][+1]=2A[+3][+2]=1A[+3][+3]=5MATRIZDETERMINOSDEPENDIENTESA[+1][+1]=+4.0000A[+1][+2]=1.0000A[+1][+3]=+1.0000A[+2][+1]=+4.0000A[+2][+2]=8.0000A[+2][+3]=+1.0000A[+3][+1]=2.0000A[+3][+2]=+1.0000A[+3][+3]=+5.00003)Introduceelvectordecondicionesincialesx[+1]=1x[+2]=2x[+3]=24)Introduceelnmerodeiteraciones:205)Introduceuncriteriodeconvergencia:0.000001

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 52

    ******Iteracin+1**********y[+1]=+1.7500y[+2]=+3.3750y[+3]=+3.0000******Iteracin+2**********y[+1]=+1.8438y[+2]=+3.8750y[+3]=+3.0250******Iteracin+3**********y[+1]=+1.9625y[+2]=+3.9250y[+3]=+2.9625******Iteracin+4**********y[+1]=+1.9906y[+2]=+3.9766y[+3]=+3.0000******Iteracin+5**********y[+1]=+1.9941y[+2]=+3.9953y[+3]=+3.0009******Iteracin+6**********y[+1]=+1.9986y[+2]=+3.9972y[+3]=+2.9986******Iteracin+7**********y[+1]=+1.9996y[+2]=+3.9991y[+3]=+3.0000******Iteracin+8**********y[+1]=+1.9998y[+2]=+3.9998y[+3]=+3.0000******Iteracin+9**********y[+1]=+1.9999y[+2]=+3.9999y[+3]=+2.9999******Iteracin+10**********y[+1]=+2.0000y[+2]=+4.0000y[+3]=+3.0000******Iteracin+11**********y[+1]=+2.0000y[+2]=+4.0000y[+3]=+3.0000******Iteracin+12**********y[+1]=+2.0000y[+2]=+4.0000y[+3]=+3.0000Elmtodoconvergea+12iteracionesLasolucines:x[+1]=+2.0000x[+2]=+4.0000x[+3]=+3.0000Processexitedafter33.63secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 53

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 54

    Figura2.5.ProgramaGaussIterativo

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 55

    III. SISTEMASDEECUACIONESNOLINEALES.

    MtododeNewtonRaphsonparanecuacionesDadoelcasogeneralpararesolvernecuacionesnolinealessimultneas.

    37

    Utilizando la serie de Taylor se puede hacer una aproximacin lineal para una funcin

    enunincremento como:

    38 Siseescribeelsistemaenformamatricial,setiene:

    39

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 56

    Enformacompacta:

    40

    DondeJ(x)eslamatrizdeprimerasderivadaoJacobiano.Comosequiereencontrarelcerodelafuncin,laaproximacinlinealquesedeberesolveres:

    41

    Dondelasactualizacionessehacencomo:

    42

    En elprogramadesarrollado enC++ lamatriz Jacobiana inversapor el vectorde funciones, sedefinecomodeltayseresuelveusandoEliminacinGaussianaSimple.Seresuelveelsiguientesistemadeecuacionesdadopor:

    43

    ElJacobianoes:

    44

    Yelarreglodefunciones

    45

    Considerandocomovaloresiniciales: Ademsal introducir las funcionesalprogramaascomo lamatriz Jacobiana, se consideraax1comoxyax2comoy,estoparanohacertediosa lacompresinde lasvariablesdentrodelcdigo en C++.Antes de ejecutar el programa, se introducen las funciones as como lamatrizJacobianaenlasdirectivas#define,seespecificaeltamaodelsistemaenlaconstanteglobalM,ste tiene que ser un sistema cuadrado, para que tenga almenos una solucin el sistema deecuaciones.Paraasegurarel llenadode las funcionesy lamatrizJacobiana,cuandoenelcdigocambiaeltamaodelsistema,setienequedefinirnuevamenteen lapartemaindelprogramay

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 57

    dentrodelafuncinnewton_raphson.steprogramasepodraimplementarmsfcilmente,usandounsoftwarecomoMATLAByaquepermiteelmanejoconvariablessimblicas.ProgramadeNewtonRaphsonparanecuaciones1)Introducelasfuncionesylamatrizjacobiana'#define'enelcdigodelprograma2)IntroduceelvectorcondicionesinicialesXo[+1]=1.5Xo[+2]=3.5VECTORDECONDICIONESINICIALES:Xo[+1]=+1.500000Xo[+2]=+3.500000MATRIZJACOBIANAEVALUADACONLASC.I.:Jacob[+1][+1]=+6.500000Jacob[+1][+2]=+1.500000Jacob[+2][+1]=+36.750000Jacob[+2][+2]=+32.500000VECTORDEFUNCIONESEVALUADOCONLASC.I.:F(x)[+1]=2.500000F(x)[+2]=+1.6250003)Introduceelnumerodeiteraciones:204)Introduceuncriteriodeconvergenciaparaelmtodo:0.0001******Iteracin+1**********delta[+1]=0.536029delta[+2]=+0.656125xk+1[+1]=+2.036029xk+1[+2]=+2.843875MATRIZJACOBIANADELA+2ITERACIONES:Jacob[+1][+1]=+6.915933Jacob[+1][+2]=+2.036029Jacob[+2][+1]=+24.262877Jacob[+2][+2]=+35.741270VECTORDEFUNCIONESDELA+2ITERACIONES:F(x)[+1]=0.064375F(x)[+2]=4.756208******Iteracin+2**********delta[+1]=+0.037328delta[+2]=0.158413xk+1[+1]=+1.998701xk+1[+2]=+3.002289MATRIZJACOBIANADELA+3ITERACIONES:Jacob[+1][+1]=+6.999690Jacob[+1][+2]=+1.998701Jacob[+2][+1]=+27.041210Jacob[+2][+2]=+37.004056VECTORDEFUNCIONESDELA+3ITERACIONES:F(x)[+1]=0.004520F(x)[+2]=+0.049571******Iteracin+3**********delta[+1]=0.001299delta[+2]=+0.002289xk+1[+1]=+2.000000xk+1[+2]=+2.999999

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 58

    MATRIZJACOBIANADELA+4ITERACIONES:Jacob[+1][+1]=+6.999999Jacob[+1][+2]=+2.000000Jacob[+2][+1]=+26.999989Jacob[+2][+2]=+36.999993VECTORDEFUNCIONESDELA+4ITERACIONES:F(x)[+1]=0.000001F(x)[+2]=0.000022******Iteracin+4**********delta[+1]=0.000000delta[+2]=0.000001xk+1[+1]=+2.000000xk+1[+2]=+3.000000Elmtodoconvergea+4iteracionesLasolucines:xk+1[+1]=+2.000000xk+1[+2]=+3.000000Processexitedafter13.5secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 59

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 60

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 61

    Figura3.1.ProgramadeNewtonRaphsonparalasolucindenecuacionesnolineales.

    IV. AJUSTEDECURVAS

    Escomnque losdatos sedancomovaloresdiscretosa lo largodeuncontinuo.Sinembargo,quizsusted requiera laestimacindeunpuntoentre valoresdiscretos.Adems,ustedpuedenecesitar laversin simplificadadeuna funcincomplicada.Unamaneradehacerloes calcularvaloresde la funcinenunnmerodiscretode valoresenel intervalode inters.Despus, seobtieneuna funcinms simplepara ajustardichos valores.Estasdos aplicaciones se conocencomoajustedecurvas.

    Existendosmtodosgeneralesparaelajustedecurvasquesedistinguenentresalconsiderarlacantidaddeerrorasociadocon losdatos.Primero,si losdatosexhibenungradosignificativodeerrororuido,laestrategiaserobtenerunasolacurvaquerepresentelatendenciageneraldelosdatos.Comocualquierdato individualpuedeser incorrecto,nosebusca intersecartodos lospuntos.En lugardeesto, se construyeuna curvaque siga la tendenciade lospuntos tomadoscomoungrupo.Unprocedimientodeestetiposellamaregresinpormnimoscuadrados.

    Segundo, si se sabeque losdatos sonmuyprecisos, elprocedimiento bsico ser colocarunacurvaounaseriedecurvasquepasenporcadaunodelospuntosenformadirecta.Usualmentetalesdatosprovienendetablas.Comoejemplossetienenlosvaloresdeladensidaddelaguaolacapacidad calorficade los gases en funcinde la temperatura. La estimacinde valores entrepuntosdiscretosbienconocidossellamainterpolacin.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 62

    MnimosCuadradosParaentenderelprocedimientodemnimoscuadradosparaelajustededatosconunpolinomiodegradon.Habraquesuponerqueseajustaunpolinomiodesegundogradoocuadrtico:

    0 1 2 2 46

    Enestecaso,lasumadeloscuadradosdelosresiduoses:

    47 Alseguirelprocedimientode laseccinanterior,obtenemos laderivadade laecuacin(47)conrespectoacadaunodeloscoeficientesdesconocidosdelpolinomio

    48

    Estas ecuaciones se igualan a cero y se reordenan para desarrollar el siguiente conjunto deecuacionesnormales:

    49

    Donde todas lassumatoriasvandesde i=1hastan.Observeque las tresecuacionesanterioresson linealesytienentres incgnitas:a0,a1ya2.Loscoeficientesde las incgnitasseevalandemaneradirecta,apartirde losdatosobservados.Enestecaso,observamosqueelproblemadedeterminarunpolinomiodesegundogradopormnimoscuadradosesequivalentearesolverunsistemade tresecuaciones linealessimultneas.En laparte tres seestudiaron las tcnicaspararesolvertalesecuaciones.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 63

    Elcasobidimensionalseextiendeconfacilidadaunpolinomiodemsimogradocomosigue

    0 1 2 2 50 Elanlisisanteriorsepuedeextenderfcilmenteaestecasomsgeneral.As,sereconocequeladeterminacindeloscoeficientesdeunpolinomiodemsimogradoesequivalentearesolverunsistemadem+1ecuaciones linealessimultneas.Enformageneral,paraajustaraunpolinomiodegradon,setiene:

    51 ParaelprogramadesarrolladoenC++Seajustaaunpolinomiodesegundoordenlosdatosdelasiguientetabla.

    MetododeMinimosCuadradosIngreseelnumerodepuntos=6Ingreseelgradodelpolinomio=2X[1]=0X[2]=1X[3]=2X[4]=3X[5]=4X[6]=5Y[1]=2.10Y[2]=7.70Y[3]=13.6Y[4]=27.2Y[5]=40.9Y[6]=61.1Lasoluciones:A[1]=2.47859A[2]=2.35927A[3]=1.86072Presioneunateclaparacontinuar...Lasolucindelsistemaesa=[2:4785;2:3592;1:8607]yelajustedacomoresultadoelpolinomiop(x)=2.4785+2.3592x+1.8607x2.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 64

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 65

    Figura4.1.ProgramadeMnimosCuadradosparaaproximarpolinomiosdegradon

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 66

    La interpolacinpolinomialconsisteendeterminarelpolinomionicodensimogradoqueseajustean+1puntos.Estepolinomio,entonces,proporcionaunafrmulaparacalcularvaloresintermedios.Aunquehayunoyslounpolinomiodensimogradoqueseajustaan+1puntos,existeunagranvariedaddeformasmatemticasen lascualespuedeexpresarseestepolinomio.Sedescribirndosalternativasquesonmuyadecuadasparaimplementarseencomputadora:lospolinomiosdeNewtonydeLagrange.

    InterpolacinPolinomialdeNewtonenDiferenciasDivididasComo se dijo antes, existe una gran variedad de formas alternativas para expresar unainterpolacinpolinomial.ElpolinomiodeinterpolacindeNewtonendiferenciasdivididasesunade las formasmspopularesytiles.Antesdepresentar laecuacingeneral,estudiaremos lasversionesdeprimeroysegundogradosporsusencillainterpretacinvisual.

    La formams simple de interpolacin consiste en unir dos puntos con una lnea recta. Dichatcnica, llamada interpolacin lineal, se ilustra de manera grfica en la figura 4.2. Utilizandotringulossemejantes.

    52

    Reordenndosesetiene:

    53

    Queesunafrmuladeinterpolacinlineal.Lanotacinf1(x)designaquesteesunpolinomiodeinterpolacindeprimergrado.Observequeademsderepresentar lapendientede la lneaqueunelospuntos,eltrmino[f(x1)f(x0)]/(x1x0)esunaaproximacinendiferenciadivididafinitaa la primer derivada. En general, cuantomenor sea el intervalo entre los datos,mejor ser laaproximacin. Esto se debe al hecho de que, conforme el intervalo disminuye, una funcincontinuaestarmejoraproximadaporunalnearecta.

    Figura4.2.Ejemplosde interpolacinpolinomial:a)deprimergrado(lineal)queunedospuntos,b)desegundogrado(cuadrticaoparablica)queunetrespuntosyc)detercergrado(cbica)queunecuatropuntos.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 67

    Sisetienentrespuntoscomodatos,stospuedenajustarseenunpolinomiodesegundogrado(tambinconocidocomopolinomiocuadrticooparbola).Unaformaparticularmenteconvenienteparaelloes

    2 0 1 0 2 0 1 54 Observequeaunquelaecuacin(53)parecediferirdelpolinomiogeneral 0 1 2 2 .lasdosecuacionessonequivalentes.Elanlisisanteriorpuedegeneralizarseparaajustarunpolinomiodensimogradoan+1datos.Elpolinomiodensimogradoes

    0 1 0 0 1 55

    Comosehizoantesconlasinterpolacioneslinealesycuadrticas,lospuntosasociadoscondatosse utilizan para evaluar los coeficientes b0, b1,..., bn. Para un polinomio de nsimo grado serequierenn+1puntos: [x0, f(x0)], [x1, f(x1)],..., [xn, f(xn)].Seusanestosdatosy las siguientesecuacionesparaevaluarloscoeficientes:

    0 0 56 1 1, 0

    2 2, 1, 0

    , , , 1, 0 Dondelasevaluacionesdelafuncincolocadasentreparntesissondiferenciasdivididasfinitas.Porejemplo,laprimeradiferenciadivididafinitaenformageneralserepresentacomo:

    57

    Lasegundadiferenciadivididafinita,querepresentaladiferenciadelasdosprimerasdiferenciasdivididas,seexpresaenformageneralcomo:

    58

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 68

    Enformasimilar,lansimadiferenciadivididafinitaes:

    59 Estasdiferenciassirvenparaevaluarloscoeficientesenlasecuaciones(56),loscualessesustituirnenlaecuacin(55)paraobtenerelpolinomiodeinterpolacin

    60

    QueseconocecomopolinomiodeinterpolacindeNewtonendiferenciasdivididas.

    Figura4.3Representacingrficadelanaturalezarecursivadelasdiferenciasdivididasfinitas.

    ParaimplementarelprogramaenC++,seconsideranlospuntos:

    ProgramadeDiferenciasDivididasdeNewtonDameelnumerodepuntos=6VectorXX[1]=0X[2]=1X[3]=2X[4]=3X[5]=4X[6]=5VectorYY[1]=2.10Y[2]=7.70Y[3]=13.60Y[4]=27.20

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 69

    Y[5]=40.90Y[6]=61.10MATRIZDD002.15.60.151.233330.6250.241667117.75.93.851.266670.58333302213.613.60.05000021.06667003327.213.73.250004440.920.200005561.100000ValoresdeBb[1]=2.1b[2]=5.6b[3]=0.15b[4]=1.23333b[5]=0.625b[6]=0.241667MATRIZPolinomios10000010000011000013200016116001103550240MATRIZPolinomiosMultiplicados2.1000005.6000000.150.1500001.233333.72.466670000.6253.756.8753.75000.2416672.416678.4583312.08335.80PolinomioP(x)=2.1X^0+17.4667X^1+22.5083X^2+13.4417X^3+3.04167X^4+0.241667X^5Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 70

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 71

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 72

    Figura4.4ProgramadeInterpolacindeNewtonparaunpolinomiodegradon1puntosdados

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 73

    PolinomiosdeInterpolacindeLagrangeElpolinomiode interpolacinde Lagrangees simplementeuna reformulacindelpolinomiodeNewtonqueevitaelclculodelasdiferenciasdivididas,yserepresentademaneraconcisacomo

    61

    Donde

    62 Dondedesignaelproductode.Porejemplo,laversinlineal(n=1)es

    63

    Ylaversindesegundogradoes

    64 ElrazonamientodetrsdelaformulacindeLagrangesecomprendedirectamentealdarsecuentadeque cada trmino Li(x) ser1enx=xi y0en todos losotrospuntos.Deesta forma, cadaproductoLi(x)f(xi)tomaelvalordef(xi)enelpuntoxi.Enconsecuencia,lasumatoriadetodoslosproductosen laecuacin (61)eselnicopolinomiodensimogradoquepasaexactamenteatravsdetodoslosn+1puntos,quesetienencomodatos.ParaelprogramaenC++.SecompruebanlosmismospuntosqueseemplearonparaencontrarelpolinomiodediferenciasdivididasdeNewton,paraelpolinomiode interpolacinde Lagrange.stetienequeserexactamenteelmismo.MetododeInterpolaciondeLagrangeNumerodedatosdetulista6Introducelosvaloresdex[i]x[0]=0x[1]=1x[2]=2x[3]=3x[4]=4x[5]=5

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 74

    Introducelosvaloresdef(x)fx(0)=2.10fx(1)=7.70fx(2)=13.60fx(3)=27.20fx(4)=40.90fx(5)=61.10/nElpolinomiodeLagrange:(0.241666x^5)+(3.04167x^4)+(13.4417x^3)+(22.5083x^2)+(17.4667x^1)+(2.1x^0)+Processexitedafter29.03secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 75

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 76

    Figura4.5ProgramadeInterpolacindeLagrangeparaunpolinomiodegradon1puntosdados

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 77

    V. ECUACIONESDIFERENCIALESORDINARIAS.

    Seaunaecuacindiferencialordinariadelaforma

    65 Ysea

    66 La ecuacin de pendiente ordenada al origen. De acuerdo con esta ecuacin, la pendienteestimadafseusaparaextrapolardesdeunvaloranterioryiaunnuevovaloryi+1enunadistanciah(figura5.1).

    Nuevovalor=valoranterior+pendientetamaodepaso

    Figura5.1Ilustracingrficadelmtododeunpaso.

    Estafrmulaseaplicapasoapasoparacalcularunvalorposteriory,por lotanto,paratrazar latrayectoriadelasolucin.Todoslosmtodosdeunpasoqueseexpresendeestaformageneral,tanslovanadiferirenlamaneraenlaqueseestimalapendiente.Enotraspalabras,setomalapendienteal iniciodel intervalocomounaaproximacinde lapendientepromediosobretodoelintervalo.Talprocedimiento,llamadomtododeEuler.Despusserevisaotromtododeunpasoque emplean otras formas de estimar la pendiente que dan como resultado prediccionesmsexactas.TodasestastcnicasengeneralseconocencomomtodosdeRungeKutta.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 78

    MtododeEulerLaprimeraderivadaofreceunaestimacindirectadelapendienteenxi

    , 67 Donde (xi, yi) es la ecuacin diferencial evaluada en xi y yi. La estimacin se sustituye en laecuacin(25.1):

    , 68 Esta frmula se conoce comomtodo de Euler (o de EulerCauchy o de punto pendiente). Seprediceunnuevovalordeyusandolapendiente(igualalaprimeraderivadaenelvalororiginaldex)paraextrapolarlinealmentesobreeltamaodepasoh.

    Para el programa implementado en C++ la ecuacin diferencial ordinaria de primer orden seescribeenlaprimeralibrera#definecomo.

    fp(x,y)(exp(x)*2*cos(2*x)exp(x)*sin(2*x))

    Comoelprogramaproporcionatambinlospuntosdelasolucinoriginal,sedefinetambin

    f(x,y)(sin(2*x)*exp(x))

    En las directivas #define, la cul es la solucin a dicha EDO. El programa muestra en formatabuladalosresultadospasoapaso.

    ProgramaMtododeEuler*Nota:Introducirdatosenformatodecimal(sinindicaroperaciones.Ejemplo:6.2832,envezde2*PIo2*3.1416)Limiteinferiordelintervalo(ti):0Limitesuperiordelintervalo(tf):6.2832Condicininicial(xi):0Condicininicial(yi):0Anchodeintervalo(h):0.3xi yi ytruef(x,y)+0.000000+0.000000+0.000000+2.000000+0.300000+0.600000+0.418297+0.804550+0.600000+0.841365+0.5115140.113782+0.900000+0.807230+0.3959370.580684+1.200000+0.633025+0.2034460.647643+1.500000+0.438732+0.0314880.473282+1.800000+0.2967480.0731480.223318+2.100000+0.2297520.1067300.013341+2.400000+0.2257500.090370+0.106245+2.700000+0.2576240.051934+0.137244+3.000000+0.2987970.013911+0.109519+3.300000+0.331652+0.011491+0.058605+3.600000+0.349234+0.021686+0.011559

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 79

    +3.900000+0.352701+0.0202120.018028+4.200000+0.347293+0.0128150.028389+4.500000+0.338776+0.0045780.024822+4.800000+0.3313300.0014350.014773+5.100000+0.3268980.0042670.004442+5.400000+0.3255650.004430+0.002675+5.700000+0.3263680.003076+0.005709+6.000000+0.3280800.001330+0.005513+6.300000+0.329735+0.000062+0.003609Processexitedafter64.68secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 80

    Figura5.2ProgramadeEuler.

    MtodosdeRungeKuttadecuartoordenElmspopulardelosmtodosRKeseldecuartoorden.Comoenelcasodelosprocedimientosdesegundoorden,hayunnmeroinfinitodeversiones.Lasiguiente,eslaformacomnmenteusaday,porlotanto,lellamamosmtodoclsicoRKdecuartoorden:

    69 Donde

    70

    ObservequeconlasEDOqueestnenfuncinslodex,elmtodoRKclsicodecuartoordenessimilara la regladeSimpson1/3.Adems,elmtodoRKdecuartoorden tienesimilitudconelprocedimiento deHeun en cuanto a que se usanmltiples estimaciones de la pendiente paraobtenerunamejorpendientepromedioenel intervalo.Comosemuestraen la figura5.2,cadaunadelaskrepresentaunapendiente.

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 81

    Figura5.3.RepresentacingrficadelaspendientesestimadasempleadasenelmtodoRKdecuartoOrden

    Para RK de 4to orden, se usa lamisma funcin que se us para Euler, con elmismo paso ycondicionesiniciales.

    ProgramaMtododeRungeKuttade4toorden*Nota:Introducirdatosenformatodecimal(sinindicaroperaciones.Ejemplo:6.2832,envezde2*PIo2*3.1416)Limiteinferiordelintervalo(ti):0Limitesuperiordelintervalo(tf):6.2832Condicininicial(xi):0Condicininicial(yi):0Anchodeintervalo(h):0.3xi yiytruek1k2k3k4Pendtot+0.000000+0.000000+0.000000+2.000000+1.390175+1.390175+0.804550+0.418262+0.300000+0.418262+0.418297+0.804550+0.293241+0.2932410.113782+0.093187+0.600000+0.511449+0.5115140.1137820.4043550.4043550.5806840.115594+0.900000+0.395855+0.3959370.5806840.6553990.6553990.6476430.192496+1.200000+0.203359+0.2034460.6476430.5795380.5795380.4732820.171954+1.500000+0.031405+0.0314880.4732820.3489960.3489960.2233180.104629+1.8000000.0732250.0731480.2233180.1087110.1087110.0133410.033575+2.1000000.1068000.1067300.013341+0.058595+0.058595+0.106245+0.016364+2.4000000.0904350.090370+0.106245+0.131315+0.131315+0.137244+0.038438+2.7000000.0519980.051934+0.137244+0.128421+0.128421+0.109519+0.038022+3.0000000.0139760.013911+0.109519+0.084972+0.084972+0.058605+0.025401+3.300000+0.011425+0.011491+0.058605+0.033428+0.033428+0.011559+0.010194+3.600000+0.021619+0.021686+0.0115590.0057550.0057550.0180280.001475+3.900000+0.020144+0.0202120.0180280.0253840.0253840.0283890.007398+4.200000+0.012747+0.0128150.0283890.0278820.0278820.0248220.008237+4.500000+0.004510+0.0045780.0248220.0201650.0201650.0147730.006013+4.8000000.0015030.0014350.0147730.0093560.0093560.0044420.002832+5.1000000.0043350.0042670.0044420.0003750.000375+0.0026750.000163+5.4000000.0044980.004430+0.002675+0.004677+0.004677+0.005709+0.001355+5.7000000.0031440.003076+0.005709+0.005924+0.005924+0.005513+0.001746+6.0000000.0013980.001330+0.005513+0.004678+0.004678+0.003609+0.001392+6.3000000.000006+0.000062+0.003609+0.002469+0.002469+0.001387+0.000744

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 82

    Processexitedafter47.91secondswithreturnvalue0Presioneunateclaparacontinuar...

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 83

    Figura5.4ProgramadeRungeKuttade4to.Orden.

    ComparacinGrficadelosMtodosdeRungeKuttaenMATLABhasta5to.Orden.

    Se modific el cdigo original para aplicar el mtodo por separado, para ejecutar un script(exp_sin_b_2.m) por separado llamando a las funciones originales, en ste caso elmtodo deEuler,cmosufuncineslaprimeraenserllamada,esenelquesegraficalafuncinoriginal,esecdigo se omite en las funciones de los demsmtodos. Los archivos .m por separado, estnprogramadosparaproporcionarlagrficadelmtodoencomparacinconlafuncinoriginal,quese introduzca su derivada, cada funcin recibe dicha funcin y calcula su primitiva para sercomparada;ademsseproporcionanlosvaloresenformatabulada.Nota:En losarchivos.moriginales,hayvariocdigoencomentarios, lamayoraessignificativoysin gran relevancia, ya que se fue perfeccionando poco a poco hasta corregir errores deprogramacin y se omite en ste documento. Hay otro cdigo que se puede usar paraproporcionar valores que se omiten en las tabulaciones. Al final de ste texto, se agregan loscdigosdelasfuncionesutilizadas.Cdigos del Script para la funcin:

    Para b=2

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 84

    syms x f; f='exp(-x)*(2*cos(2*x)-sin(2*x))'; ti=0; tf=2*pi; Xi=0; Yi=0; h=0.3; Euler_Method(f,ti,tf,Xi,Yi,h); Heun_Method(f,ti,tf,Xi,Yi,h); Mid_Method(f,ti,tf,Xi,Yi,h); Runge_Kutta2_Ralston(f,ti,tf,Xi,Yi,h); Runge_Kutta3(f,ti,tf,Xi,Yi,h); Runge_Kutta4(f,ti,tf,Xi,Yi,h); Runge_Kutta5_Butcher(f,ti,tf,Xi,Yi,h); title('Comparacin de los mtodos de Runge Kutta con la funcin original'); xlabel('Tiempo t (seg)'); ylabel('f(t)'); legend('Euler','Solucin verdadera','Heun','Punto Medio','Ralston','Runge Kutta 3', 'Runge Kutta 4','Runge Kutta 5 (Butcher)');

    Figura5.5ComparacingraficadelosmtodosdeRungeKutta,paralaEDO.

    2 cos b x sin 2

    0 1 2 3 4 5 6-0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    1.2Comparacin de los mtodos de Runge Kutta con la funcin original

    Tiempo t (seg)

    f(t)

    EulerSolucin verdaderaHeunPunto MedioRalstonRunge Kutta 3Runge Kutta 4Runge Kutta 5 (Butcher)

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 85

    Salida en la ventana de comandos primitiva = sin(2*x)*exp(-x) i x Y_Verdadero Y_Euler Pendiente Y+1_Euler B = 0 0 0 0 0 0 1.0000 0.3000 0.4183 0.6000 2.0000 0.6000 2.0000 0.6000 0.5115 0.8414 0.8045 0.8414 3.0000 0.9000 0.3959 0.8072 -0.1138 0.8072 4.0000 1.2000 0.2034 0.6330 -0.5807 0.6330 5.0000 1.5000 0.0315 0.4387 -0.6476 0.4387 6.0000 1.8000 -0.0731 0.2967 -0.4733 0.2967 7.0000 2.1000 -0.1067 0.2298 -0.2233 0.2298 8.0000 2.4000 -0.0904 0.2257 -0.0133 0.2257 9.0000 2.7000 -0.0519 0.2576 0.1062 0.2576 10.0000 3.0000 -0.0139 0.2988 0.1372 0.2988 11.0000 3.3000 0.0115 0.3317 0.1095 0.3317 12.0000 3.6000 0.0217 0.3492 0.0586 0.3492 13.0000 3.9000 0.0202 0.3527 0.0116 0.3527 14.0000 4.2000 0.0128 0.3473 -0.0180 0.3473 15.0000 4.5000 0.0046 0.3388 -0.0284 0.3388 16.0000 4.8000 -0.0014 0.3313 -0.0248 0.3313 17.0000 5.1000 -0.0043 0.3269 -0.0148 0.3269 18.0000 5.4000 -0.0044 0.3256 -0.0044 0.3256 19.0000 5.7000 -0.0031 0.3264 0.0027 0.3264 20.0000 6.0000 -0.0013 0.3281 0.0057 0.3281 x Y_Verdadero Y_Heun B = 0 0 0 0.3000 0.4183 0.4207 0.6000 0.5115 0.5243 0.9000 0.3959 0.4201 1.2000 0.2034 0.2359 1.5000 0.0315 0.0677 1.8000 -0.0731 -0.0368 2.1000 -0.1067 -0.0722 2.4000 -0.0904 -0.0583 2.7000 -0.0519 -0.0218 3.0000 -0.0139 0.0152 3.3000 0.0115 0.0404 3.6000 0.0217 0.0510 3.9000 0.0202 0.0500 4.2000 0.0128 0.0430

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 86

    4.5000 0.0046 0.0351 4.8000 -0.0014 0.0291 5.1000 -0.0043 0.0262 5.4000 -0.0044 0.0260 5.7000 -0.0031 0.0272 6.0000 -0.0013 0.0289 x Y_Verdadero Y_Punto_Medio B = 0 0 0 0.3000 0.4183 0.4171 0.6000 0.5115 0.5050 0.9000 0.3959 0.3837 1.2000 0.2034 0.1871 1.5000 0.0315 0.0132 1.8000 -0.0731 -0.0915 2.1000 -0.1067 -0.1241 2.4000 -0.0904 -0.1065 2.7000 -0.0519 -0.0671 3.0000 -0.0139 -0.0286 3.3000 0.0115 -0.0031 3.6000 0.0217 0.0069 3.9000 0.0202 0.0052 4.2000 0.0128 -0.0024 4.5000 0.0046 -0.0108 4.8000 -0.0014 -0.0168 5.1000 -0.0043 -0.0196 5.4000 -0.0044 -0.0197 5.7000 -0.0031 -0.0183 6.0000 -0.0013 -0.0166 x Y_Verdadero Y_Runge_Kutta2_Ralston B = 0 0 0 0.3000 0.4183 0.4181 0.6000 0.5115 0.5137 0.9000 0.3959 0.4011 1.2000 0.2034 0.2109 1.5000 0.0315 0.0402 1.8000 -0.0731 -0.0642 2.1000 -0.1067 -0.0982 2.4000 -0.0904 -0.0825 2.7000 -0.0519 -0.0446 3.0000 -0.0139 -0.0068 3.3000 0.0115 0.0185 3.6000 0.0217 0.0287 3.9000 0.0202 0.0274 4.2000 0.0128 0.0201 4.5000 0.0046 0.0119 4.8000 -0.0014 0.0059 5.1000 -0.0043 0.0031 5.4000 -0.0044 0.0029 5.7000 -0.0031 0.0042

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 87

    6.0000 -0.0013 0.0060 x Y_Verdadero Y_Runge_Kutta3 B = 0 0 0 0.3000 0.4183 0.4183 0.6000 0.5115 0.5114 0.9000 0.3959 0.3959 1.2000 0.2034 0.2034 1.5000 0.0315 0.0314 1.8000 -0.0731 -0.0732 2.1000 -0.1067 -0.1068 2.4000 -0.0904 -0.0904 2.7000 -0.0519 -0.0520 3.0000 -0.0139 -0.0140 3.3000 0.0115 0.0114 3.6000 0.0217 0.0216 3.9000 0.0202 0.0201 4.2000 0.0128 0.0127 4.5000 0.0046 0.0045 4.8000 -0.0014 -0.0015 5.1000 -0.0043 -0.0043 5.4000 -0.0044 -0.0045 5.7000 -0.0031 -0.0031 6.0000 -0.0013 -0.0014 x Y_Verdadero Y_Runge_Kutta4 B = 0 0 0 0.3000 0.4183 0.4183 0.6000 0.5115 0.5114 0.9000 0.3959 0.3959 1.2000 0.2034 0.2034 1.5000 0.0315 0.0314 1.8000 -0.0731 -0.0732 2.1000 -0.1067 -0.1068 2.4000 -0.0904 -0.0904 2.7000 -0.0519 -0.0520 3.0000 -0.0139 -0.0140 3.3000 0.0115 0.0114 3.6000 0.0217 0.0216 3.9000 0.0202 0.0201 4.2000 0.0128 0.0127 4.5000 0.0046 0.0045 4.8000 -0.0014 -0.0015 5.1000 -0.0043 -0.0043 5.4000 -0.0044 -0.0045 5.7000 -0.0031 -0.0031

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 88

    6.0000 -0.0013 -0.0014 x Y_Verdadero Y_Runge_Kutta5_Butcher B = 0 0 0 0.3000 0.4183 0.4183 0.6000 0.5115 0.5115 0.9000 0.3959 0.3959 1.2000 0.2034 0.2034 1.5000 0.0315 0.0315 1.8000 -0.0731 -0.0731 2.1000 -0.1067 -0.1067 2.4000 -0.0904 -0.0904 2.7000 -0.0519 -0.0519 3.0000 -0.0139 -0.0139 3.3000 0.0115 0.0115 3.6000 0.0217 0.0217 3.9000 0.0202 0.0202 4.2000 0.0128 0.0128 4.5000 0.0046 0.0046 4.8000 -0.0014 -0.0014 5.1000 -0.0043 -0.0043 5.4000 -0.0044 -0.0044 5.7000 -0.0031 -0.0031 6.0000 -0.0013 -0.0013

    CdigodelasfuncionesenMATLABdelosmtodosusados

    Cdigo para el Mtodo de Euler: function Euler_Method(f,ti,tf,Xi,Yi,h) n=(tf-ti)/h; x1=zeros(n,1); y1=zeros(n,1); x1=[ti:h:tf]; y1(1)=Yi; y2(1)=Yi; A(1)=0; for k=1:n x=x1(k); y=y1(k); fp(k+1)=eval(f); y2(k+1)=y1(k)+(fp(k+1))*h; y1(k+1)=y2(k+1); A(k+1,1)=k; end plot(x1,y1,'-r') primitiva=int(sym(f)) Q=length(x1); for u=1:Q

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 89

    x=x1(u); y3(u)=eval(primitiva); end hold on plot(x1,y3,'-b') disp(' i x Y_Verdadero Y_Euler Pendiente Y+1_Euler') B=[A, x1', y3', y1, fp', y2'] end Cdigo para el Mtodo de Heun: function Heun_Method(f,ti,tf,Xi,Yi,h) n=(tf-ti)/h; x1=zeros(n,1); y1=zeros(n,1); x1=[ti:h:tf]; y1(1)=Yi; y2(1)=Yi; A(1)=0; for k=1:n x=x1(k); y=y1(k); fp(k+1)=eval(f); y2(k+1)=y1(k)+(fp(k+1))*h; y=y2(k+1); x=x1(k+1); fp2(k+1)=eval(f); feval(k+1)=(fp(k+1)+fp2(k+1))/2; y1(k+1)=y1(k)+feval(k+1)*h; A(k+1,1)=k; end plot(x1,y1,'-g') primitiva=int(sym(f)); Q=length(x1); for u=1:Q x=x1(u); y4(u)=eval(primitiva); end disp(' x Y_Verdadero Y_Heun') B=[x1', y4', y1] end

    Cdigo para el Mtodo de Punto Medio: function Mid_Method(f,ti,tf,Xi,Yi,h) n=(tf-ti)/h; x1=zeros(n,1); y1=zeros(n,1); x1=[ti:h:tf];

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 90

    y1(1)=Yi; y2(1)=Yi; A(1)=0; for k=1:n x=x1(k); y=y1(k); fp(k+1)=eval(f); y2(k+1)=y1(k)+((fp(k+1))*h)/2; y=y2(k+1); x=x1(k)+h/2; fp2(k+1)=eval(f); y1(k+1)=y1(k)+(fp2(k+1))*h; A(k+1,1)=k; end plot(x1,y1,'-m') primitiva=int(sym(f)); Q=length(x1); for u=1:Q x=x1(u); y4(u)=eval(primitiva); end disp(' x Y_Verdadero Y_Punto_Medio') B=[x1', y4', y1] end Cdigo para el Mtodo de Runge Kutta de 2do. Orden (Ralston): function Runge_Kutta2_Ralston(f,ti,tf,Xi,Yi,h) n=(tf-ti)/h; x1=zeros(n,1); y1=zeros(n,1); x1=[ti:h:tf]; y1(1)=Yi; y2(1)=Yi; A(1)=0; for k=1:n x=x1(k); y=y1(k); k1(k+1)=eval(f); y2(k+1)=y1(k)+((k1(k+1))*3*h)/4; y=y2(k+1); x=x1(k)+3*h/4; k2(k+1)=eval(f); y1(k+1)=y1(k)+((1/3)*k1(k+1)+(2/3)*(k2(k+1)))*h; A(k+1,1)=k; end plot(x1,y1,'-c') primitiva=int(sym(f)); Q=length(x1); for u=1:Q x=x1(u); y4(u)=eval(primitiva); end disp(' x Y_Verdadero Y_Runge_Kutta2_Ralston') B=[x1', y4', y1]

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 91

    end Cdigo para el Mtodo de Runge Kutta de 3er. Orden: function Runge_Kutta3(f,ti,tf,Xi,Yi,h) n=(tf-ti)/h; x1=zeros(n,1); y1=zeros(n,1); x1=[ti:h:tf] y1(1)=Yi; y2(1)=Yi; A(1)=0; for k=1:n x=x1(k); y=y1(k); k1(k+1)=eval(f); y2(k+1)=y1(k)+((k1(k+1))*h)/2; y=y2(k+1); x=x1(k)+h/2; k2(k+1)=eval(f); y3(k+1)=y1(k)-h*k1(k+1)+2*h*k2(k+1); y=y3(k+1); x=x1(k)+h; k3(k+1)=eval(f); y1(k+1)=y1(k)+(1/6)*(k1(k+1)+4*(k2(k+1))+(k3(k+1)))*h; A(k+1,1)=k; end plot(x1,y1,'ok') primitiva=int(sym(f)); Q=length(x1); for u=1:Q x=x1(u); y4(u)=eval(primitiva); end disp(' x Y_Verdadero Y_Runge_Kutta3') B=[x1', y4', y1] end Cdigo para el Mtodo de Runge Kutta de 4to. Orden: function Runge_Kutta4(f,ti,tf,Xi,Yi,h) n=(tf-ti)/h; x1=zeros(n,1); y1=zeros(n,1); x1=[ti:h:tf] y1(1)=Yi; y2(1)=Yi; A(1)=0; for k=1:n x=x1(k); y=y1(k); k1(k+1)=eval(f); y2(k+1)=y1(k)+((k1(k+1))*h)/2; y=y2(k+1);

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 92

    x=x1(k)+h/2; k2(k+1)=eval(f); y3(k+1)=y1(k)+((k2(k+1))*h)/2; y=y3(k+1); x=x1(k)+h/2; k3(k+1)=eval(f); y4(k+1)=y1(k)+(k3(k+1))*h; y=y4(k+1); x=x1(k)+h; k4(k+1)=eval(f); y1(k+1)=y1(k)+(1/6)*(k1(k+1)+2*(k2(k+1))+2*(k3(k+1))+k4(k+1))*h; A(k+1,1)=k; end plot(x1,y1,'*y') primitiva=int(sym(f)) Q=length(x1); for u=1:Q x=x1(u); y4(u)=eval(primitiva); end disp(' x Y_Verdadero Y_Runge_Kutta4') B=[x1', y4', y1] end Cdigo para el Mtodo de Runge Kutta de 5to. Orden (Butcher): function Runge_Kutta5_Butcher(f,ti,tf,Xi,Yi,h) n=(tf-ti)/h; x1=zeros(n,1); y1=zeros(n,1); x1=[ti:h:tf] y1(1)=Yi; y2(1)=Yi; A(1)=0; for k=1:n x=x1(k); y=y1(k); k1(k+1)=eval(f); y2(k+1)=y1(k)+((k1(k+1))*h)/4; y=y2(k+1); x=x1(k)+h/4; k2(k+1)=eval(f); y3(k+1)=y1(k)+((k1(k+1))*h)/8+((k2(k+1))*h)/8; y=y3(k+1); x=x1(k)+h/4; k3(k+1)=eval(f); y4(k+1)=y1(k)-((k2(k+1))*h)/2+(k3(k+1))*h; y=y4(k+1); x=x1(k)+h/2; k4(k+1)=eval(f); y5(k+1)=y1(k)+(3/16)*(k1(k+1))*h+(9/16)*h*(k4(k+1)); y=y5(k+1);

  • EscuelaSuperiordeIngenieraMecnicayElctrica. ProgramacinyMtodosNumricos.

    CursoPropedutico 93

    x=x1(k)+(3/4)*h; k5(k+1)=eval(f); y6(k+1)=y1(k)-(3/7)*(k1(k+1))*h+(2/7)*(k2(k+1))*h+(12/7)*(k3(k+1))*h-(12/7)*(k4(k+1))*h+(8/7)*(k5(k+1))*h; y=y6(k+1); x=x1(k)+h; k6(k+1)=eval(f); y1(k+1)=y1(k)+(1/90)*(7*(k1(k+1))+32*(k3(k+1))+12*(k4(k+1))+32*(k5(k+1))+7*(k6(k+1)))*h; A(k+1,1)=k; end plot(x1,y1,'xk') primitiva=int(sym(f)) Q=length(x1); for u=1:Q x=x1(u); y4(u)=eval(primitiva); end disp(' x Y_Verdadero Y_Runge_Kutta5_Butcher') B=[x1', y4', y1] end