Sie sind auf Seite 1von 94

15/Enero/2015

Instituto Politcnico Nacional


Escuela Superior de Ingeniera
Mecnica y Elctrica

Alumno:

Ramos Albarrn Fernando

Asesor: M.C. Jess Reyes Garca.

Curso Propedutico para la


Maestra en Ciencias en Ingeniera Elctrica.

[PROGRAMACINYMTODOSNUMRICOS]
IngenieraElctrica

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

NDICE
INTRODUCCIN..................................................................................................................................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

CursoPropedutico

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

INTRODUCCIN
Los mtodos numricos son tcnicas mediante las cuales es posible formular problemas de tal
forma que puedan resolverse usando operaciones aritmticas. Aunque hay muchos tipos de
mtodos numricos, todos comparten una caracterstica comn: Invariablemente los mtodos
numricosllevanacabounbuennmerodetediososclculosaritmticos.Noesraroqueconel
desarrollodecomputadorasdigitaleseficientesyrpidas,elpapeldelosmtodosnumricosenla
solucindeproblemasdeingenierahayaaumentadoconsiderablementeenlosltimosaos.
AIusarlacomputadoraparaobtenersolucionesdirectamente,sepuedenaproximarlosclculos
sin tener que recurrir a suposiciones de simplificacin o tcnicas deficientes. Aunque dichas
suposiciones son aun extremadamente valiosas tanto para resolver problemas como para
proporcionar una mayor comprensin, los mtodos numricos representan alternativas que
amplan considerablemente la capacidad para confrontar y resolver los problemas; como
resultado, se dispone de ms tiempo para aprovechar las habilidades creativas personales. Por
consiguiente,esposibledarmsimportanciaalaformulacindeunproblema,alainterpretacin
delasolucinyasuincorporacinalsistematotal,oconcienciaholstica.
Los mtodos numricos son herramientas extremadamente poderosas para la solucin de
problemas.Soncapacesdemanejarsistemasdeecuacionesgrandes,nolinealidadesygeometras
complicadasquesoncomunesenlaprcticadelaingenierayque,amenudo,sonimposiblesde
resolver analticamente. Por lo tanto, amplan la habilidad de quien los estudia para resolver
problemas.
Hay muchos problemas que no pueden plantearse al emplear programas hechos. Si se est
versado en los mtodos numricos y se es un adepto de la programacin de computadoras,
entonces se tiene la capacidad de disear programas propios para resolver los problemas, sin
tenerquecomprarunsoftwarecostoso.Enelpresentedocumentoseusarlaprogramacinen
C++ para construir nuestros propios programas para la resolucin de problemas usando los
mtodosnumricosquesedescribenacontinuacin:
1. Racesdeecuaciones.Estosproblemasestnrelacionadosconelvalordeunavariableo
deunparmetroquesatisfaceunaecuacinyaseatrascendentalounpolinomio(Enste
documento trataremos las races de un polinomio). Son especialmente valiosos en
proyectos de ingeniera donde con frecuencia resulta imposible despejar analticamente
parmetrosdeecuacionesdediseo.
2. Sistemasdeecuacionesalgebraicaslineales.Enesencia,estosproblemassonsimilaresa
los de races de ecuaciones en el sentido de que estn relacionados con valores que
satisfacenecuaciones.Sinembargo,adiferenciadesatisfacerunasolaecuacin,sebusca
un conjunto de valores que satisfaga simultneamente a un conjunto de ecuaciones
algebraicas.Lasecuacioneslinealessimultneassurgenenelcontextodeunavariedadde
problemasyentodaslasdisciplinasdelaingeniera.Enparticular,seoriginanapartirde
modelos matemticos de sistemas grandes de elementos interconectados, como:

CursoPropedutico

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

estructuras, circuitos elctricos y redes de flujo de fluidos, aunque tambin pueden


encontrarseenotrasreasdelosmtodosnumricoscomoelajustedecurvas.
3. Ajuste de curvas. Con frecuencia se presentar la oportunidad de ajustar curvas a un
conjunto de datos representados por puntos. Las tcnicas que se han desarrollado para
este fin pueden dividirse en dos categoras generales: regresin e interpolacin. La
regresin se emplea cuando hay un grado significativo de error asociado a los datos;
frecuentementelosresultadosexperimentalessondeestaclase.Paraestassituaciones,la
estrategia es encontrar una curva que represente la tendencia general de los datos sin
necesidad de tocar los puntos individuales. En contraste, la interpolacin se maneja
cuandoelobjetivoesdeterminarvaloresintermediosentredatosqueestnrelativamente
libres de error. Tal es el caso de la informacin tabulada. Para estas situaciones, la
estrategiaesajustarunacurvadirectamenteatravsdelospuntosyusarestacurvapara
predecirvaloresintermedios.
4. Ecuaciones diferenciales ordinarias. Las ecuaciones diferenciales ordinarias tienen un
enormesignificadoenlaprcticadelaingeniera.Estosedebeaquemuchasleyesfsicas
estnexpresadasentrminosdelarazndecambiodeunacantidadmsqueentrminos
de su magnitud. Entre los ejemplos se observan desde los modelos de prediccin
demogrfica (razn de cambio de la poblacin) hasta la aceleracin de un cuerpo en
descenso(razndecambiodelavelocidad).

CursoPropedutico

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

I. RAICESDEECUACIONES
Mtodoscerrados.
Los mtodos cerrados consisten en dar 2 puntos tales que stos encierren el valor de la raz,
dichospuntosescuandoalsustituirlosenlafuncin,stacambiadesigno.Enstecasoseaplica
un anlisis de la curva mediante la implementacin de un programa tabula.cpp en c++, el cual
evalalafuncinparavaloresobtenidosatravsdeunintervalodadoyunnmerodepuntosen
los cuales se divide dicho intervalo. El programa tabula.cpp muestra al final los puntos para los
cuales en la funcin hay un cambio de signo, estos puntos se usan en los mtodos cerrados de
biseccinyreglafalsa.
Porejemplo,paraelsiguientepolinomio.
5

0.5

11

10

Seintroducelafuncinenlalibrera#defineenelcdigodelprogramadec++,cmoseindicaa
continuacin:
#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++semuestraa
continuacin:

ProgramaqueEvaluaunafuncin
Intervaloinferior(xa):0
Intervalosuperior(xb):5.5
Numerodeintervalos(np):10
x[+0]=+0.0000y[+0]=+10.0000
x[+1]=+0.5500y[+1]=+3.3609
x[+2]=+1.1000y[+2]=6.6859
x[+3]=+1.6500y[+3]=21.8374
x[+4]=+2.2000y[+4]=41.5944
x[+5]=+2.7500y[+5]=63.2617
x[+6]=+3.3000y[+6]=81.9479
x[+7]=+3.8500y[+7]=90.5654
x[+8]=+4.4000y[+8]=79.8304
x[+9]=+4.9500y[+9]=38.2631
x[+10]=+5.5000y[+10]=+47.8125
Haycambiodesignoen+0.5500y+1.1000
Haycambiodesignoen+4.9500y+5.5000

Processexitedafter8.446secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura1.1.Programatabula.c

El programa indica para que intervalos de la funcin hay un cambio de signo; por lo tanto, esos
valoreslomsprobableesqueencierrenunaomsraces.

CursoPropedutico

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

ElMtododeBiseccin.
Sesabequeunpolinomiodegradontienenraceslascualespuedenser:

Realesydistintas.
Realeseiguales.
Complejasconjugadas.

De acuerdo a ello un polinomio de grado impar tendr por lo menos una raz real, para dichas
racesocuparemoslosmtodosnumricosdeBiseccin,ReglaFalsa,NewtonRaphson.
Engeneral,sif(x)esrealycontinaenelintervaloquevadesdexlhastaxuyf(xl)yf(xu)tienen
signosopuestos,esdecir,
0

Entonces hay al menos una raz real entre xl y xu. Los mtodos de bsqueda incremental
aprovechan esta caracterstica localizando un intervalo en el que la funcin cambie de signo.
Entonces, la localizacin del cambio de signo (y, en consecuencia, de la raz) se logra con ms
exactitud al dividir el intervalo en varios subintervalos. Se investiga cada uno de estos
subintervalosparaencontrarelcambiodesigno.El procesoserepiteylaaproximacinalaraz
mejora cada vez ms en la medida que los subintervalos se dividen en intervalos cada vez ms
pequeos. Por lo que sabemos que existe, al menos, una raz real. A partir de este punto se va
reduciendo el intervalo sucesivamente hasta hacerlo tan pequeo como exija la precisin que
hayamosdecididoemplear.Enseguidaseexplicaraafondoypasoapasoelmtodo:

Figura1.2.MtododeBiseccin.

CursoPropedutico

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura 1.3. Ilustracin de las formas generales en que puede ocurrir una raz en un intervalo
preescritoporloslmitesinferiorxlysuperiorxu.Lasfigurasa)yc)muestranquesif(xl)yf(xu)
tienenelmismosigno,entoncesnohabrracesdentrodelintervaloohabrunnmeroparde
ellas. Las fi guras b) y d) muestran que si la funcin tiene signos diferentes en los puntos
extremos,entonceshabrunnmeroimparderacesdentrodelintervalo.

Criteriodeconvergencia.
Sedebedesarrollaruncriterioobjetivoparadecidircundodebeterminarel
mtodo. Una sugerencia inicial sera finalizar el clculo cuando el error
verdaderoseencuentrepordebajodealgnnivelprefijado.Puededecidirse
queelmtodoterminacuandosealcanceunerrormsbajo,porejemplo,al
0.1%. Se requiere estimar el error de forma tal que no se necesite el
conocimientopreviodelaraz,sepuedecalcularelerrorrelativoporcentual
eadelasiguientemanera:

Dondexrnuevoeslarazenlaiteracinactualyxranterioreselvalordela
raz en la iteracin anterior. Se utiliza el valor absoluto, ya que por lo general importa slo la
magnituddeeasinconsiderarsusigno.Cuandoeaesmenorqueunvalorpreviamentefijadoes,
terminaelclculo.
A partir del polinomio del cual se obtuvieron los intervalos para los cuales la funcin cambia de
signo, se usa el primer intervalo +0.5500 y +1.1000 para probar el programa de biseccin.cpp y
obtener la primer raz. Para eso se escribe la funcin en la cabecera #define al igual que en el
programadetabula.cppysecorreelprogramaparauncriterio deconvergenciade0.0001y20
iteraciones.
ProgramaMtododeBiseccin
**NOTA:Seespecificaunnumerodeiteracionesparaproteger
Sielmtodoconvergeanteselprogramaharunanotificacin
Intervaloinferior(xi):0.55
Intervalosuperior(xu):1.1
ErrordeConvergencia(DadoenPorUnidad):0.0001
NumerodeIteraciones(Depreferenciauseunnmeroentre100y150):20
iteracionxixuxrEayiyuyr
+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

CursoPropedutico

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

+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.0005

ElMtodoCONVERGEa+13iteraciones.
LARAIZES:+0.7639709473

Processexitedafter20.31secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura1.4.ProgramadeBiseccin

CursoPropedutico

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Ahoraqueseencontrunaraz,sedivideelpolinomiooriginalentreelfactordedicharaz(Esto
es, intercambiando el signo de la raz), para obtener un nuevo polinomio que se usar en el
mtodo de la regla falsa para determinar la segunda raz. Se ejecuta el programa
Divide_dos_polinomios.cpp. El cual pide tanto los grados como los coeficientes del divisor y del
dividendoymuestraelcocienteyelresiduo.Setienequeespecificarsiuncoeficienteescero(En
dadocaso).Lasalidadelprogramaenc++semuestraacontinuacin.
Programaquedivide2polinomios
Introduceelgradodeldivisor:
1
Introduceelvectorasociadoaldivisordemayoramenorgrado:
divisor[0]=1
divisor[1]=0.76397
Introduceelgradodeldividendo:
4
Introduceelvectorasociadoaldividendodemayoramenorgrado:
dividendo[0]=1
dividendo[1]=5
dividendo[2]=0.5
dividendo[3]=11
dividendo[4]=10
DatosdelDivisor:
divisor[+0]=+1.00000
divisor[+1]=0.76397
DatosdelDividendo:
dividendo[+0]=+1.00000
dividendo[+1]=5.00000
dividendo[+2]=+0.50000
dividendo[+3]=11.00000
dividendo[+4]=+10.00000
DatosdelCociente:
cociente[+0]=+1.00000
cociente[+1]=4.23603
cociente[+2]=2.73620
cociente[+3]=13.09037
DatosdelResiduo:
residuo[+0]=+0.00000
residuo[+1]=+0.00000
residuo[+2]=+0.00000
residuo[+3]=+0.00000

CursoPropedutico

10

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

residuo[+4]=0.00065

Processexitedafter240secondswithreturnvalue0
Presioneunateclaparacontinuar...

Comopuedeobservarse,elnuevopolinomioes:
4.23603

2.73620

13.09037

Elcdigodelprogramaquedividepolinomiossemuestraenlafigura1.5.

CursoPropedutico

11

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura1.5.Programadedivisindepolinomios.

ElMtododeReglaFalsa.
Auncuandolabiseccinesunatcnicaperfectamentevlidaparadeterminarraces,sumtodo
de aproximacin por fuerza bruta es relativamente ineficiente. La falsa posicin es una
alternativabasadaenunavisualizacingrfica.
Un inconveniente del mtodo de biseccin es que al dividir el intervalo de xl a xu en mitades
iguales, no se toman en consideracin las magnitudes de f(xl) y f(xu). Por ejemplo, si f(xl) est
muchomscercanaaceroquef(xu),eslgicoquelarazseencuentremscercadexlquedexu.
Un mtodo alternativo que aprovecha esta visualizacin grfica consiste en unir f(xl) y f(xu) con
unalnearecta.Lainterseccindeestalneaconelejedelasxrepresentaunamejoraproximacin
delaraz.Elhechodequesereemplacelacurvaporunalnearectadaunafalsaposicindela
raz; de aqu el nombre de mtodo de la falsa posicin, o en latn, regula falsi. Tambin se le
conocecomomtododeinterpolacinlineal.

CursoPropedutico

12

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Usando tringulos semejantes, la interseccin de la lnea recta con el eje de las x se estima
mediante

Enlacualsedespejaxr

sta es la frmula de la falsa posicin.El valor de xr calculado con la ecuacin (6), reemplazar,
despus,acualquieradelosdosvaloresiniciales,xloxu,ydaunvalordelafuncinconelmismo
signodef(xr).Deestamanera,losvaloresxlyxusiempreencierranlaverdaderaraz.Elprocesose
repitehastaquelaaproximacinalarazseaadecuada.Elalgoritmoesidnticoaldelabiseccin
(figura1.2),exceptoenquelaecuacinseusaenelpaso2.Adems,seusaelmismocriteriode
terminacin[ecuacin(3)]paraconcluirlosclculos.

Figura1.6Representacingrficadelmtododelafalsaposicin.Conlostringulossemejantessombreadosseobtiene
lafrmulaparaelmtodo.

A partir del polinomio de tercer grado que se obtiene de hacer la divisin, se usa el segundo
intervalo+4.9500y+5.5000paraprobarelprogramaderegla_falsa.cppyobtenerlasegundaraz.
Paraesoseescribelafuncinenlacabecera#definealigualqueenelprogramadebiseccion.cpp
ysecorreelprogramaparauncriteriodeconvergenciade0.0001y20iteraciones.
ProgramaMtododeReglaFalsa
**NOTA:Seespecificaunnumerodeiteracionesparaproteger
Sielmtodoconvergeanteselprogramaharunanotificacin
Intervaloinferior(xi):4.95

CursoPropedutico

13

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Intervalosuperior(xu):5.5
ErrordeConvergencia(DadoenPorUnidad):0.0001
NumerodeIteraciones(Depreferenciauseunnmeroentre100y150):20
iteracionxixuxrEayiyuyr
+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.0005

ElMtodoCONVERGEa+4iteraciones.
LARAIZES:+5.2360505080

Processexitedafter16.6secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

14

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

15

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura1.7.ProgramadeReglaFalsa.

Seusanuevamenteelprogramaparadividirpolinomios,usandoelfactordelasegundarazcomo
divisoryelpolinomiodetercergradocomodividendo.Lasalidadelprogramaeslasiguiente:

Programaquedivide2polinomios
Introduceelgradodeldivisor:1
Introduceelvectorasociadoaldivisordemayoramenorgrado:
divisor[0]=1
divisor[1]=5.23605
Introduceelgradodeldividendo:3
Introduceelvectorasociadoaldividendodemayoramenorgrado:
dividendo[0]=1
dividendo[1]=4.23603
dividendo[2]=2.73620
dividendo[3]=13.09037
DatosdelDivisor:
divisor[+0]=+1.00000
divisor[+1]=5.23605
DatosdelDividendo:
dividendo[+0]=+1.00000
dividendo[+1]=4.23603
dividendo[+2]=2.73620
dividendo[+3]=13.09037
DatosdelCociente:
cociente[+0]=+1.00000
cociente[+1]=+1.00002
cociente[+2]=+2.49995
DatosdelResiduo:
residuo[+0]=+0.00000
residuo[+1]=+0.00000

CursoPropedutico

16

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

residuo[+2]=+0.00000
residuo[+3]=0.00048

Processexitedafter60.66secondswithreturnvalue0
Presioneunateclaparacontinuar...

Seobtieneunpolinomiodesegundogrado.

2.5

Sepuedeapreciarquesudiscriminanteesnegativo,porlotantoseobtendrnracescomplejas,se
puede usar la formula general de segundo orden. Se ejecuta el programa
Ecuacion_general_2do_orden.cpp, y se obtienen dichas races complejas. La salida del programa
implementadoenc++eslasiguiente:

Programaparacalcularlasracesdeunpolinomiodesegundogrado
Usandolafrmulageneralax^2+bx+c
a=1
b=1
c=2.5
LasraicessonparesdeCOMPLEJOSCONJUGADOS
x1=0.5000+1.5000i
x2=0.50001.5000i

Processexitedafter10.48secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

17

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura1.8.ProgramadeEcuacinGeneralde2do.Orden.

CursoPropedutico

18

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Avecesesnecesariomultiplicardospolinomios,comoeselcasodelasinterpolacionesdeNewton
yLagrange;sinembargo,esosmtodossebasanenelusodematricesyarreglosimplementados
ya dentro del programa del mtodo, por lo cual enseguida se muestra un programa individual
desarrolladoparamultiplicar2polinomios.Simultiplicamoselpolinomiodesegundogradodela
ecuacin7porelfactordelasegundarazencontradaporelmtododereglafalsa,setieneque
obtenerelpolinomiodetercergradodelaecuacin4.Lasalidadelprogramaes:
Programaquemultiplica2polinomios
Introduceelgradodelprimerpolinomio:1
Introduceelvectorasociadoalprimerpolinomio:
pol1[0]=5.23605
pol1[1]=1
Introduceelgradodelsegundopolinomio:2
Introduceelvectorasociadoalsegundopolinomio:
pol2[0]=2.5
pol2[1]=1
pol2[2]=1
DatosdelPolinomio1:
pol1[+0]=5.24
pol1[+1]=+1.00
DatosdelPolinomio2:
pol2[+0]=+2.50
pol2[+1]=+1.00
pol2[+2]=+1.00
DatosdelPolinomio3:
pol3[+0]=13.09
pol3[+1]=2.74
pol3[+2]=4.24
pol3[+3]=+1.00

Processexitedafter237.2secondswithreturnvalue0
Presioneunateclaparacontinuar...

Sepuedeapreciarqueelresultadoescorrecto.

CursoPropedutico

19

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura1.9.Programaquemultiplica2polinomios.

CursoPropedutico

20

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Mtodosabiertos.
En los mtodos cerrados del captulo anterior la raz se encuentra dentro de un intervalo
predeterminado por un lmite inferior y otro superior. La aplicacin repetida de estos mtodos
siempre genera aproximaciones cada vez ms cercanas a la raz. Se dice que tales mtodos son
convergentesporqueseacercanprogresivamentealarazamedidaqueseavanzaenelclculo
(figura1.10a).
Encontraste,losmtodosabiertosdescritosenestecaptulosebasanenfrmulasquerequieren
nicamente de un solo valor de inicio x o que empiecen con un par de ellos, pero que no
necesariamenteencierranlaraz.stos,algunasvecesdivergenosealejandelarazverdaderaa
medida que se avanza en el clculo (figura 1.10b). Sin embargo, cuando los mtodos abiertos
convergen(figura1.10c),engenerallohacenmuchomsrpidoquelosmtodoscerrados.

Figura1.10. Representacingrficadelasdiferenciasfundamentalesentrelosmtodosa)cerrados,b)yc)losmtodos
abiertos para el clculo de races. En a) se ilustra el mtodo de biseccin, donde la raz est contenida dentro del
intervalo dado por xl, y xu. En contraste, en los mtodos abiertos, ilustrados en b) y c), se utiliza una frmula para
dirigirse de xi a xi+1, con un esquema iterativo. As, el mtodo puede b) diverger o c) converger rpidamente,
dependiendodelosvaloresiniciales.

CursoPropedutico

21

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

MtododeNewtonRaphson.
Tal vez, de las frmulas para localizar races, la frmula de NewtonRaphson (figura 1.11) sea la
ms ampliamente utilizada. Si el valor inicial para la raz es xi, entonces se puede trazar una
tangentedesdeelpunto[xi,f(xi)]delacurva.Porlocomn,elpuntodondeestatangentecruzaal
ejexrepresentaunaaproximacinmejoradadelaraz.
ElmtododeNewtonRaphsonsededuceapartirdeestainterpretacingeomtrica(unmtodo
alternativobasadoenlaseriedeTaylor).Delafigura1.11,setienequelaprimeraderivadaenxes
equivalentealapendiente:

Quesearreglaparaobtener:

LacualseconocecomofrmuladeNewtonRaphson.
NohayuncriteriogeneraldeconvergenciaparaelmtododeNewtonRaphson.Suconvergencia
dependedelanaturalezadelafuncinydelaexactituddelvalorinicial.Lanicasolucinenestos
casos es tener un valor inicial que sea suficientemente cercano a la raz. Y para algunas
funciones ningn valor inicial funcionar! Los buenos valores iniciales por lo comn se predicen
conunconocimientodelproblemafsicoomedianteelusoderecursosalternativos,talescomo
lasgrficas,queproporcionanmayorclaridadenelcomportamientodelasolucin.Antelafalta
de un criterio general de convergencia se sugiere el diseo de programas computacionales
eficientesquereconozcanlaconvergencialentaoladivergencia.

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

CursoPropedutico

22

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

AunqueengeneralelmtododeNewtonRaphsonesmuyeficiente,haysituacionesdondese
comporta de manera deficiente. En efecto, una pendiente cero [(x) = 0] es un verdadero
desastre,yaquecausaunadivisinentreceroenlafrmuladeNewtonRaphson[ecuacin(9)].
En forma grfica (figura 1.12), esto significa que la solucin se dispara horizontalmente y jams
tocaalejex.

Figura1.12.CasoespecialdondeelmtododeNewtonRaphsonexhibeunaconvergenciadeficiente.

Paraelsiguientepolinomio.
4

10

Se obtendr la primera raz con el mtodo de NewtonRaphson. Primeramente se evala la


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

CursoPropedutico

23

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

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

Processexitedafter4.711secondswithreturnvalue0
Presioneunateclaparacontinuar...

Figura1.13.Unamejoradeprogramatabula.cpppuedesersiencuentraunvalorparaelcuallafuncinseacero,indicar
quehayunarazenesevalor,stecdigoseagregadentrodelafuncintabula,peroparaaplicarelmtodotambinse
puedeindicardentrodelosintervalosenlosqueestdicharaz.Endadocasosepodraampliarelnmerodepuntoso
elintervaloelegido.

Seseleccionaelprimerintervaloentre1.2500y0.7500parausarelmtododeNewtonRaphson.
Almomentodeintroducirlafuncindelpolinomioenlasdirectivas#defineserequieretambinsu
derivada.Porlocuallaexpresindelaprimeraderivadadelaecuacin10es:

16

15

11

ComoelmtododeNewtonRaphsonrequiereslounvalorinicial,setomaelpunto1.25conun
criteriodeconvergenciade0.0001a20iteraciones.Lasalidadelprogramaes:
ProgramaMtododeNewtonRaphson
**NOTA:Seespecificaunnumerodeiteracionessielmtodoconvergeantes
elprogramaharunanotificacin.

CursoPropedutico

24

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Puntoinicial(xi):1.25
ErrordeConvergencia(DadoenPorUnidad):0.0001
NumerodeIteraciones(Depreferenciauseunnmeroentre100y150):20
iteracionxixi+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.0070
ElMtodoCONVERGEa+4iteraciones.
LARAIZES:1.0000000083

Processexitedafter19.05secondswithreturnvalue0
Presioneunateclaparacontinuar...
Se divide el polinomio original de 5to orden entre el factor de la raz encontrada usando el
programa de divisin de polinomios. A continuacin se muestran nicamente las salidas del
cocienteyresiduo.
Programaquedivide2polinomios
DatosdelCociente:
cociente[+0]=+1.00000
cociente[+1]=5.00000
cociente[+2]=+10.00000
cociente[+3]=10.00000
cociente[+4]=+4.00000
DatosdelResiduo:
residuo[+0]=+0.00000
residuo[+1]=+0.00000
residuo[+2]=+0.00000
residuo[+3]=+0.00000
residuo[+4]=+0.00000
residuo[+5]=+0.00000

Processexitedafter28.02secondswithreturnvalue0
Presioneunateclaparacontinuar...

Elpolinomiosimplificadodespusdeladivisines:
5

10

10

12

CursoPropedutico

25

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura1.14.ProgramadeNewtonRaphson

CursoPropedutico

26

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

MtododelaSecante.
UnproblemapotencialenlaimplementacindelmtododeNewtonRaphsoneslaevaluacinde
la derivada. Aunque esto no es un inconveniente para los polinomios ni para muchas otras
funciones, existen algunas funciones cuyas derivadas en ocasiones resultan muy difciles de
calcular.Endichoscasos,laderivadasepuedeaproximarmedianteunadiferenciafinitadividida
haciaatrs,comoen(figura1.15).

13

Estaaproximacinsesustituyeenlaecuacin(9)paraobtenerlasiguienteecuaciniterativa:

14

Laculeslafrmulaparaelmtododelasecante.Observequeelmtodorequierededosvalores
inicialesdex.Sinembargo,debidoaquenosenecesitaquef(x)cambiedesignoentrelosvalores
dados,estemtodonoseclasificacomounmtodocerrado.

Figura 1.15. Representacin grfica del mtodo de la secante. Esta tcnica es similar a la del mtodo de Newton
Raphson (fi gura 1.11) en el sentido de que una aproximacin de la raz se predice extrapolando una tangente de la
funcinhastaelejex.Sinembargo,elmtododelasecanteusaunadiferenciadivididaenlugardeunaderivadapara
estimarlapendiente.

Seseleccionaelsegundointervaloentre+0.7500y+1.2500parausarelmtododelaSecante.Al
momentodeintroducirlafuncindelpolinomioenlasdirectivas#defineseintroduceelpolinomio
reducido de la ecuacin 12. Los 2 puntos mencionados en ste prrafo encierran a la raz y se
considerancomolospuntosiniciales,nonecesariamentetienenqueencerraralarazcomoantes
se mencion, pero para ste caso usamos esos puntos, adems un criterio de convergencia de
0.0001a20iteraciones.Lasalidadelprogramaeslasiguiente:

ProgramaMtododelaSecante

CursoPropedutico

27

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

**NOTA:Seespecificaunnumerodeiteraciones,sielmtodoconvergeantes
elprogramaharunanotificacin.Lospuntosinicialesdadospueden
onoencerrarlaraiz
Puntoinicial1(xi1):0.75
Puntoinicial2(xi):1.25
ErrordeConvergencia(DadoenPorUnidad):0.0001
NumerodeIteraciones(Depreferenciauseunnmeroentre100y150):20
iteracionxi1xixi+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.9990
ElMtodoCONVERGEa+5iteraciones.
LARAIZES:+0.9999999838

Processexitedafter36.77secondswithreturnvalue0
Presioneunateclaparacontinuar...

Se usa el programa para dividir polinomios, para reducir el polinomio de cuarto orden de la
ecuacin12aunodetercerordendividindoloentreelfactordelarazobtenidaporelmtodo
delasecante.
Programaquedivide2polinomios
DatosdelCociente:
cociente[+0]=+1.00000
cociente[+1]=4.00000
cociente[+2]=+6.00000
cociente[+3]=4.00000
DatosdelResiduo:
residuo[+0]=+0.00000
residuo[+1]=+0.00000
residuo[+2]=+0.00000
residuo[+3]=+0.00000
residuo[+4]=+0.00000

Processexitedafter48.78secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

28

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura1.16.ProgramadelaSecante

CursoPropedutico

29

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Elnuevopolinomioreducidoes:

15

Esteresultadoseusarparaaproximarunfactorcuadrticoenelcualelfactorcuadrticoinicial
consisteenlosfactoresdelas2racesquesehanencontradoconlosmtodosabiertos,elfactor
cuadrticoqueseencontraralresolverloporlafrmulageneraldesegundogradoproporcionar
lasracescomplejas,aldividirelpolinomiodetercergradodelaecuacin15sehabrobtenidoun
ltimofactoquealigualarloaceroydespejar,serlaltimarazrealdelpolinomiode5toorden
delaecuacin10.

Racesdepolinomios
MtododeLinBairstow
ElmtododeBairstowesunmtodoiterativorelacionadodealgunamaneraconlosmtodosde
Mller y de NewtonRaphson. Antes de hacer la descripcin matemtica de ste, recuerde la
formafactorizadadeunpolinomio,porejemplo
5

16

Sisedivideentreunfactorquenoesunaraz(porejemplo,x+6),elcocienteesunpolinomiode
cuartogrado.Aunque,enestecaso,habrunresiduodiferentedecero.
Con estas consideraciones se puede elaborar un algoritmo para determinar la raz de un
polinomio:
1) Dunvalorinicialparalarazx=t.
2) Dividaelpolinomioentreelfactorxt
3) Determinesihayunresiduodiferentedecero.Sino,elvalorinicialesperfectoylarazes
igualat.Siexisteunresiduo,seajustaelvalorinicialenformasistemticayserepiteel
procedimientohastaqueelresiduodesaparezcayselocalicelaraz.Unavezhechoesto,
serepiteelprocedimientototalmente,ahoraconelcocienteparalocalizarotraraz.
Por lo general, el mtodo de Bairstow se basa en esta manera de proceder. Por consiguiente,
dependedelprocesomatemticodedividirunpolinomioentreunfactor.
Porejemplo,elpolinomiogeneral:

2 2

17

Sedivideentreelfactorxtparadarunsegundopolinomioqueesdeungradomenor:
1

3 2

18

CursoPropedutico

30

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

ConunresiduoR=b0,dondeloscoeficientessecalculanporlarelacinderecurrencia

1 0

19.1

19.2

Observequesitesunarazdelpolinomiooriginal,elresiduob0seraigualacero.
Parapermitirlaevaluacinderacescomplejas,elmtododeBairstowdivideelpolinomioentre
unfactorcuadrticox2rxs.Siestosehaceconlaecuacin(17),elresultadoesunnuevo
polinomio
2

20

21

Conunresiduo

Comoconladivisinsintticanormal,seutilizaunarelacinderecurrenciasimplepararealizarla
divisinentreelfactorcuadrtico:


22.1

22.2

22.3

2 0

El factor cuadrtico se introduce para permitir la determinacin de las races complejas. Esto se
relaciona con el hecho de que, si los coeficientes del polinomio original son reales, las races
complejassepresentanenparesconjugados.Six2rxsesundivisorexactodelpolinomio,las
races complejas pueden determinarse con la frmula cuadrtica. As, el mtodo se reduce a
determinarlosvaloresderysquehacenqueelfactorcuadrticoseaundivisorexacto.Enotras
palabras,sebuscanlosvaloresquehacenqueelresiduoseaigualacero.
La inspeccin de la ecuacin (21) nos lleva a concluir que para que el residuo sea cero, b0 y b1
debensercero.Comoesimprobablequelosvaloresinicialesparaevaluarrysconduzcanaeste
resultado,debemosdeterminarunaformasistemticaparamodificarlosvaloresiniciales,detal
formaqueb0yb1tiendanacero.Paralograrlo,elmtododeBairstowusaunaestrategiasimilar
aladelmtododeNewtonRaphson.Comotantob0comob1sonfuncionesderys,sepueden
expandirusandounaseriedeTayloryseobtieneunsistemadeecuacionesdederivadasparciales
dndelasvariablessonincrementosdelosfactoresdelaaproximacindelfactorcuadrtico,ry
s. Bairstow demostr que las derivadas parciales se obtienen por divisin sinttica de las b en
formasimilaracomolasbmismasfueronobtenidas:

CursoPropedutico

23.1

31

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

2 1

23.2

23.2

Lasderivadasparcialesseobtienenporladivisinsintticadelasbysesustituyenenelsistema
deecuacionesdederivadasparcialesjuntoconlasbparadarelsiguientesistema:
2

24.1

24.2

Estas ecuaciones se resuelven para r y s, las cuales, a su vez, se emplean para mejorar los
valoresinicialesderys.Encadapaso,seestimaunerroraproximadoenrys:

25.1

25.2

Cuandoamboserroresestimadoscaenpordebajodeuncriterioespecificadodeterminacines,
losvaloresdelasracessedeterminanmediante:

26

Enestepunto,existentresposibilidades:
1) Elcocienteesunpolinomiodetercergradoomayor.Entalcaso,elmtododeBairstowse
aplica al cociente para evaluar un nuevo valor de r y s. Los valores anteriores de r y s
puedenservircomovaloresinicialesenestaaplicacin.
2) El cociente es cuadrtico. Aqu es posible evaluar directamente las dos races restantes
conlaecuacin(26).
3) El cociente es un polinomio de primer grado. En este caso, la raz restante se evala
simplementecomo

27

CursoPropedutico

32

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Para el polinomio de quinto grado de la ecuacin 10,


4
5
6
4 se
obtuvieronlasraces1y+1yseredujoalpolinomiodetercergradodelaecuacin15,
4
6
4. Enelfactorcuadrticoinicial,rsetomacomo1yscomo1auncriteriode
convergenciade0.0001y20iteraciones.LasalidadelprogramaenC++eslasiguiente(Nteseque
losvaloresderyssecambiandesignoalintroducirloscomoelfactorcuadrticox2rxs).
ProgramadeLinBairstow
Introduceelgradodelpolinomioareducir:3
Introduceelvectorasociadoadichopolinomio:
polinomio[0]=4
polinomio[1]=6
polinomio[2]=4
polinomio[3]=1
Introduceelvectorasociadoalfactorcuadrtico
(elcoeficientedex^2debeseriguala1):
factor[0]=1
factor[1]=1
factor[2]=1
Tecleeelnumerodeiteraciones:20
Tecleeelnumerocriteriodeconvergenciaes:0.0001
FACTOR:
+1.00000x^2+1.00000x1.00000
******ITERACION*****:+1
b[+3]=+1.00000
b[+2]=5.00000
b[+1]=+12.00000
b[+0]=21.00000
c[+3]=+1.00000
c[+2]=6.00000
c[+1]=+19.00000
Er:+1.50000
Es:+0.85714
FACTOR:
+1.00000x^22.00000x7.00000
******ITERACION*****:+2
b[+3]=+1.00000
b[+2]=2.00000
b[+1]=+9.00000
b[+0]=+0.00000
c[+3]=+1.00000
c[+2]=+0.00000
c[+1]=+16.00000

CursoPropedutico

33

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

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

Processexitedafter36.83secondswithreturnvalue0
Presioneunateclaparacontinuar...

Seusaelprogramadeecuacionesdesegundogradopararesolverdichofactorcuadrtico.
Programaparacalcularlasracesdeunpolinomiodesegundogrado
Usandolafrmulageneralax^2+bx+c
a=1
b=2
c=2
LasraicessonparesdeCOMPLEJOSCONJUGADOS
x1=1.0000+1.0000i
x2=1.00001.0000i

Processexitedafter8.515secondswithreturnvalue0
Presioneunateclaparacontinuar...

Yseobservaqueseobtienenracescomplejas.

CursoPropedutico

34

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Laquintayltimarazseencuentraaldividirelpolinomiodetercergradodelaecuacin15,
entreelfactorencontradoydespejarusandolaecuacin27.

Programaquedivide2polinomios
DatosdelCociente:
cociente[+0]=+1.00000
cociente[+1]=2.00000
DatosdelResiduo:
residuo[+0]=+0.00000
residuo[+1]=+0.00000
residuo[+2]=+0.00000
residuo[+3]=+0.00000

Processexitedafter40.25secondswithreturnvalue0
Presioneunateclaparacontinuar...

Claramentelaquintarazesiguala2.0.

CursoPropedutico

35

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

36

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

37

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura1.17.ProgramadeLinBairstow

CursoPropedutico

38

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

II. SISTEMASDEECUACIONESALGEBRAICASLINEALES.
EliminacinGaussianaSimpleySustitucinhaciaatrs
Lasecuacionesalgebraicaslinealessimultneasqueengeneralserepresentancomo:

28

Dondelasasonloscoeficientesconstantesylasbsonlostrminosindependientesconstantes.La
tcnicaquesedescribeenestecaptuloseconocecomolaeliminacindeGauss,yaqueimplica
unacombinacindeecuacionesparaeliminarlasincgnitas.Aunquesteesunodelosmtodos
msantiguospararesolverecuacioneslinealessimultneas,continasiendounodelosalgoritmos
de mayor importancia, y es la base para resolver ecuaciones lineales en muchos paquetes de
softwarepopulares.
La estrategia bsica consiste en multiplicar las ecuaciones por constantes, de tal forma que se
elimine una de las incgnitas cuando se combinen las dos ecuaciones. El resultado es una sola
ecuacinenlaquesepuededespejarlaincgnitarestante.Estevalorsesustituyeencualquiera
delasecuacionesoriginalesparacalcularlaotravariable.
Estatcnicabsicapuedeextenderseasistemasgrandesdeecuacionesdesarrollandounesquema
sistemticooalgortmicoparaeliminarincgnitasysustituirhaciaatrs.Aunquetalestcnicasson
muy adecuadas para utilizarlas en computadoras, se requiere de algunas modificaciones para
obtener un algoritmo confiable. En particular, el programa debe evitar la divisin entre cero. Al
mtodosiguienteselellamaeliminacingaussianasimple,yaquenoevitaesteproblema.Enlas
siguientes secciones se vern algunas caractersticas adicionales necesarias para obtener un
programadecmputoefectivo.
Laprimerafaseconsisteenreducirelconjuntodeecuacionesaunsistematriangularsuperior.El
pasoinicialsereliminarlaprimeraincgnita,x1,desdelasegundahastalansimaecuacin.
Dondelosvaloresde

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

29

CursoPropedutico

39

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Donde el superndice prima indica que los elementos han cambiado sus valores originales. El
elemento , sedenominaelcoeficienteoelementopivote.Enparticularcuandodichoelemento
es cero hay una divisin entre cero y el mtodo falla, para eso en el Programa de eliminacin
Gaussiana Simple desarrollado en C++ se implementa un algoritmo que intercambia filas hasta
encontrarunelementodiferentedecero,sinoseencuentraunvalordiferenteaceroelprograma
indica que el sistema no tiene solucin o hay infinidad de soluciones. Ya que en dado caso no
habra matriz inversa del sistema o su determinante sera igual a cero, por lo cual se llega a la
mismaconclusindequenoexistesolucinohayinfinidaddeellas.

AlfinaldelaimplementacindelmtododeEliminacinGaussianaSimple,sellegaaunsistema
dondesetieneunamatriztriangularsuperior,cmosemuestraacontinuacin.


30

El siguiente paso para resolver el sistema es emplear sustitucin hacia atrs. Este resultado se
puedesustituirhaciaatrsenla(n1)simaecuacinydespegarxn1.Elprocedimiento,quese
repiteparaevaluarlasxrestantes,serepresentamediantelafrmula:

31

AcontinuacinseintroduceunsistemapararesolverloconelprogramadesarrolladoenC++,en
particular,seintroduceunsistemadndehayunpivotecero,seobservaqueelmismoprograma
haceelintercambiodefilas.

ProgramadeEliminacinGaussiana
1)Introduceelvectordeterminosindependientes
b[+1]=1
b[+2]=1
b[+3]=1
VECTORDETERMINOSINDEPENDIENTES
b[+1]=+1.0000
b[+2]=+1.0000
b[+3]=+1.0000
2)Introducelamatrizdeterminosdependientes
A[+1][+1]=1

CursoPropedutico

40

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

A[+1][+2]=2
A[+1][+3]=6
A[+2][+1]=4
A[+2][+2]=8
A[+2][+3]=1
A[+3][+1]=2
A[+3][+2]=3
A[+3][+3]=5
MATRIZDETERMINOSDEPENDIENTES
A[+1][+1]=+1.0000A[+1][+2]=+2.0000A[+1][+3]=+6.0000
A[+2][+1]=+4.0000A[+2][+2]=+8.0000A[+2][+3]=1.0000
A[+3][+1]=2.0000A[+3][+2]=+3.0000A[+3][+3]=+5.0000
Seintercambialafila+2conlafila+3
LAMATRIZTRIANGULARSUPERIORES:
u[+1][+1]=+1.0000u[+1][+2]=+2.0000u[+1][+3]=+6.0000
u[+2][+1]=+0.0000u[+2][+2]=+7.0000u[+2][+3]=+17.0000
u[+3][+1]=+0.0000u[+3][+2]=+0.0000u[+3][+3]=25.0000
VECTORINDEPENDIENTEY:
y[+1]=+1.0000
y[+2]=+3.0000
y[+3]=3.0000
Aplicandosustitucinhaciaatrs
VECTORSOLUCION:
x[+1]=+0.0057
x[+2]=+0.1371
x[+3]=+0.1200

Processexitedafter17.68secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

41

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

42

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

43

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura2.1.ProgramadeEliminacinGaussianaysustitucinhaciaatrs

GaussJordan
El mtodo de GaussJordan es una variacin de la eliminacin de Gauss. La principal diferencia
consisteenquecuandounaincgnitaseeliminaenelmtododeGaussJordan,staeseliminada
de todas las otras ecuaciones, no slo de las subsecuentes. Adems, todos los renglones se
normalizan al dividirlos entre su elemento pivote. De esta forma, el paso de eliminacin genera
unamatrizidentidadenvezdeunatriangular(figura2.2).Enconsecuencia,noesnecesariousarla
sustitucinhaciaatrsparaobtenerlasolucin.

Figura 2.2. Representacin grfica del mtodo de GaussJordan. Observe la diferencia


entre esta tcnica y la de eliminacin de Gauss. El superndice (n) significa que los
elementosdelvectordelladoderechosehanmodificadonveces(enestecason=3).

Aunque la tcnica de GaussJordan y la eliminacin de Gauss podran parecer casi idnticas, la


primerarequieremstrabajo,involucraaproximadamente50porcientomsoperacionesquela
eliminacindeGauss.Portanto,laeliminacindeGausseselmtododeeliminacinsencillaque
seprefiereparaobtenerlassolucionesdeecuacionesalgebraicaslineales.

CursoPropedutico

44

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

SeintroduceelmismosistemaqueseresolviporEliminacinGaussianaSimpleparaelprograma
desarrollado para GaussJordan. El vector de trminos independientes se guarda en una misma
matriz donde se guardan los elementos de la matriz de trminos dependientes. La salida del
programaenC++es:
MetododeEliminaciondeGaussJordan
NumerodeEcuaciones:3
Damelosvaloresdelamatriz:
a[1][1]=1
a[1][2]=2
a[1][3]=6
a[1][4]=1
a[2][1]=2
a[2][2]=3
a[2][3]=5
a[2][4]=1
a[3][1]=4
a[3][2]=8
a[3][3]=1
a[3][4]=1
Solucion
x[1]=0.00571428
x[2]=0.137143
x[3]=0.12
Presioneunateclaparacontinuar...

CursoPropedutico

45

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

46

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura2.3.ProgramadeGaussJordan

MatrizInversayMultiplicacindeMatrices
Usando el principio la matriz aumentada, se aade en sus columnas a la derecha de una matriz
cuadrada, la matriz identidad, al realizar el mtodo de Gauss Jordan, la matriz del lado del lado
izquierdo resulta ser la identidad y la del lado izquierdo de igual tamao es la inversa. En el
programaseintroduceunamatrizyseobtienelainversa,luegoseverificaqueefectivamentesta
seasuinversa,porlocualsemultiplicaporsumatrizoriginalyseobtienelaidentidad.

ProgramadeMatrizinversausandoGaussJordan
DameelnumerodefilasycolumnasdelamatrizcuadradaA=3
DameelvalordeA[1][1]=3
DameelvalordeA[2][1]=1
DameelvalordeA[3][1]=1
DameelvalordeA[1][2]=1
DameelvalordeA[2][2]=1
DameelvalordeA[3][2]=0
DameelvalordeA[1][3]=1
DameelvalordeA[2][3]=0
DameelvalordeA[3][3]=1

MATRIZA
311
110
101
MATRIZINVERSA
111
121
112
MATRIZIDENTIDAD
12.38419e0072.38419e007
010
1.19209e00701
Presioneunateclaparacontinuar...

CursoPropedutico

47

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

48

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

49

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura2.4.ProgramaMatrizInversayMultiplicacindeMatrices

MtodoIterativodeGauss
Parastemtodo,seconsideraelsiguientesistemadeecuaciones.

32

Yserepresentacadaunadelasvariablesentrminosdeellasmismas.

33

Locualsugiereelsiguienteesquemaiterativodesoluciones.

34

CursoPropedutico

50

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Engeneralsepuedeescribircomo:
35

Elcriteriodeconvergenciaquesemanejaparastemtodoeselvalorabsolutodelanormadel
vector de soluciones de la iteracin anterior menos la norma del vector de soluciones de la
iteracinactual,entrelanormadelvectordesolucionesdelaiteracinanterior,tantoparaste
mtodo cmo para el NewtonRaphson para solucin de n ecuaciones no lineales que se ver
enseguida. Para probar el mtodo de Gauss Iterativo implementado en C++, se usa el siguiente
sistemadeecuaciones.

36

Conunvectordecondicionesinicialesde1,2y2.Parauncriteriodeconvergenciade0.000001y
20iteraciones.Laejecucindelprogramaes:
ProgramadeMtodoIterativodeGauss(Jacobi)
1)Introduceelvectordeterminosindependientes
b[+1]=7
b[+2]=21
b[+3]=15
2)Introducelamatrizdeterminosdependientes
A[+1][+1]=4
A[+1][+2]=1
A[+1][+3]=1
A[+2][+1]=4
A[+2][+2]=8
A[+2][+3]=1
A[+3][+1]=2
A[+3][+2]=1
A[+3][+3]=5
MATRIZDETERMINOSDEPENDIENTES
A[+1][+1]=+4.0000A[+1][+2]=1.0000A[+1][+3]=+1.0000
A[+2][+1]=+4.0000A[+2][+2]=8.0000A[+2][+3]=+1.0000
A[+3][+1]=2.0000A[+3][+2]=+1.0000A[+3][+3]=+5.0000
3)Introduceelvectordecondicionesinciales
x[+1]=1
x[+2]=2
x[+3]=2
4)Introduceelnmerodeiteraciones:20
5)Introduceuncriteriodeconvergencia:0.000001

CursoPropedutico

51

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

******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.0000
Elmtodoconvergea+12iteraciones
Lasolucines:
x[+1]=+2.0000x[+2]=+4.0000x[+3]=+3.0000

Processexitedafter33.63secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

52

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

53

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura2.5.ProgramaGaussIterativo

CursoPropedutico

54

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

III. SISTEMASDEECUACIONESNOLINEALES.
MtododeNewtonRaphsonparanecuaciones
Dadoelcasogeneralpararesolvernecuacionesnolinealessimultneas.

37

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

como:

38

Siseescribeelsistemaenformamatricial,setiene:

39

CursoPropedutico

55

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Enformacompacta:


40

DondeJ(x)eslamatrizdeprimerasderivadaoJacobiano.Comosequiereencontrarelcerodela
funcin,laaproximacinlinealquesedeberesolveres:

41
Dondelasactualizacionessehacencomo:
42

En el programa desarrollado en C++ la matriz Jacobiana inversa por el vector de funciones, se


definecomodeltayseresuelveusandoEliminacinGaussianaSimple.

Seresuelveelsiguientesistemadeecuacionesdadopor:

43

ElJacobianoes:

44

Yelarreglodefunciones

45

Considerandocomovaloresiniciales:

Adems al introducir las funciones al programa as como la matriz Jacobiana, se considera a x1


comoxyax2comoy,estoparanohacertediosalacompresindelasvariablesdentrodel
cdigo en C++. Antes de ejecutar el programa, se introducen las funciones as como la matriz
Jacobianaenlasdirectivas#define,seespecificaeltamaodelsistemaenlaconstanteglobalM,
ste tiene que ser un sistema cuadrado, para que tenga al menos una solucin el sistema de
ecuaciones.ParaasegurarelllenadodelasfuncionesylamatrizJacobiana,cuandoenelcdigo
cambiaeltamaodelsistema,setienequedefinirnuevamenteenlapartemaindelprogramay

CursoPropedutico

56

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

dentrodelafuncinnewton_raphson.steprogramasepodraimplementarmsfcilmente,
usandounsoftwarecomoMATLAByaquepermiteelmanejoconvariablessimblicas.

ProgramadeNewtonRaphsonparanecuaciones
1)Introducelasfuncionesylamatrizjacobiana'#define'enelcdigodelprog
rama
2)Introduceelvectorcondicionesiniciales
Xo[+1]=1.5
Xo[+2]=3.5
VECTORDECONDICIONESINICIALES:
Xo[+1]=+1.500000
Xo[+2]=+3.500000
MATRIZJACOBIANAEVALUADACONLASC.I.:
Jacob[+1][+1]=+6.500000Jacob[+1][+2]=+1.500000
Jacob[+2][+1]=+36.750000Jacob[+2][+2]=+32.500000
VECTORDEFUNCIONESEVALUADOCONLASC.I.:
F(x)[+1]=2.500000
F(x)[+2]=+1.625000
3)Introduceelnumerodeiteraciones:20
4)Introduceuncriteriodeconvergenciaparaelmtodo:0.0001

******Iteracin+1**********
delta[+1]=0.536029
delta[+2]=+0.656125
xk+1[+1]=+2.036029
xk+1[+2]=+2.843875
MATRIZJACOBIANADELA+2ITERACIONES:
Jacob[+1][+1]=+6.915933Jacob[+1][+2]=+2.036029
Jacob[+2][+1]=+24.262877Jacob[+2][+2]=+35.741270
VECTORDEFUNCIONESDELA+2ITERACIONES:
F(x)[+1]=0.064375
F(x)[+2]=4.756208
******Iteracin+2**********
delta[+1]=+0.037328
delta[+2]=0.158413
xk+1[+1]=+1.998701
xk+1[+2]=+3.002289
MATRIZJACOBIANADELA+3ITERACIONES:
Jacob[+1][+1]=+6.999690Jacob[+1][+2]=+1.998701
Jacob[+2][+1]=+27.041210Jacob[+2][+2]=+37.004056
VECTORDEFUNCIONESDELA+3ITERACIONES:
F(x)[+1]=0.004520
F(x)[+2]=+0.049571
******Iteracin+3**********
delta[+1]=0.001299
delta[+2]=+0.002289
xk+1[+1]=+2.000000
xk+1[+2]=+2.999999

CursoPropedutico

57

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

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

Processexitedafter13.5secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

58

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

59

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

60

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura3.1.ProgramadeNewtonRaphsonparalasolucindenecuacionesnolineales.

IV.

AJUSTEDECURVAS

Es comn que los datos se dan como valores discretos a lo largo de un continuo. Sin embargo,
quizs usted requiera la estimacin de un punto entre valores discretos. Adems, usted puede
necesitar la versin simplificada de una funcin complicada. Una manera de hacerlo es calcular
valores de la funcin en un nmero discreto de valores en el intervalo de inters. Despus, se
obtiene una funcin ms simple para ajustar dichos valores. Estas dos aplicaciones se conocen
comoajustedecurvas.
Existendosmtodosgeneralesparaelajustedecurvasquesedistinguenentresalconsiderarla
cantidadde errorasociadoconlosdatos.Primero,silosdatosexhibenungradosignificativode
errororuido,laestrategiaserobtenerunasolacurvaquerepresentelatendenciageneralde
losdatos.Comocualquierdatoindividualpuedeserincorrecto,nosebuscaintersecartodoslos
puntos. En lugar de esto, se construye una curva que siga la tendencia de los puntos tomados
comoungrupo.Unprocedimientodeestetiposellamaregresinpormnimoscuadrados.
Segundo, si se sabe que los datos son muy precisos, el procedimiento bsico ser colocar una
curvaounaseriedecurvasquepasenporcadaunodelospuntosenformadirecta.Usualmente
talesdatosprovienendetablas.Comoejemplossetienenlosvaloresdeladensidaddelaguaola
capacidad calorfica de los gases en funcin de la temperatura. La estimacin de valores entre
puntosdiscretosbienconocidossellamainterpolacin.

CursoPropedutico

61

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

MnimosCuadrados
Paraentenderelprocedimientodemnimoscuadradosparaelajustededatosconunpolinomio
degradon.Habraquesuponerqueseajustaunpolinomiodesegundogradoocuadrtico:

2 2

46

47

Enestecaso,lasumadeloscuadradosdelosresiduoses:

Alseguirelprocedimientodelaseccinanterior,obtenemosladerivadadelaecuacin(47)con
respectoacadaunodeloscoeficientesdesconocidosdelpolinomio

48

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


ecuacionesnormales:

49

Donde todas las sumatorias van desde i = 1 hastan. Observe que las tres ecuaciones anteriores
sonlinealesytienentresincgnitas:a0,a1ya2.Loscoeficientesdelasincgnitasseevalande
manera directa, a partir de los datos observados. En este caso, observamosque el problema de
determinarunpolinomiodesegundogradopormnimoscuadradosesequivalentearesolverun
sistema de tres ecuaciones lineales simultneas. En la parte tres se estudiaron las tcnicas para
resolvertalesecuaciones.

CursoPropedutico

62

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Elcasobidimensionalseextiendeconfacilidadaunpolinomiodemsimogradocomosigue

2 2

50

Elanlisisanteriorsepuedeextenderfcilmenteaestecasomsgeneral.As,sereconocequela
determinacindeloscoeficientesdeunpolinomiodemsimogradoesequivalentearesolverun
sistemadem+1ecuacioneslinealessimultneas.Enformageneral,paraajustaraunpolinomio
degradon,setiene:

51
ParaelprogramadesarrolladoenC++Seajustaaunpolinomiodesegundoordenlosdatosdela
siguientetabla.

MetododeMinimosCuadrados
Ingreseelnumerodepuntos=6
Ingreseelgradodelpolinomio=2
X[1]=0
X[2]=1
X[3]=2
X[4]=3
X[5]=4
X[6]=5
Y[1]=2.10
Y[2]=7.70
Y[3]=13.6
Y[4]=27.2
Y[5]=40.9
Y[6]=61.1
Lasoluciones:
A[1]=2.47859
A[2]=2.35927
A[3]=1.86072
Presioneunateclaparacontinuar...

Lasolucindelsistemaesa=[2:4785;2:3592;1:8607]yelajustedacomoresultadoelpolinomio
p(x)=2.4785+2.3592x+1.8607x2.

CursoPropedutico

63

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

64

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura4.1.ProgramadeMnimosCuadradosparaaproximarpolinomiosdegradon

CursoPropedutico

65

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Lainterpolacinpolinomialconsisteendeterminarelpolinomionicodensimogradoque
seajustean+1puntos.Estepolinomio,entonces,proporcionaunafrmulaparacalcularvalores
intermedios.Aunquehayunoyslounpolinomiodensimogradoqueseajustaan+1puntos,
existeunagranvariedaddeformasmatemticasenlascualespuedeexpresarseestepolinomio.
Sedescribirndosalternativasquesonmuyadecuadasparaimplementarseencomputadora:los
polinomiosdeNewtonydeLagrange.

InterpolacinPolinomialdeNewtonenDiferenciasDivididas
Como se dijo antes, existe una gran variedad de formas alternativas para expresar una
interpolacinpolinomial.ElpolinomiodeinterpolacindeNewtonendiferenciasdivididasesuna
de las formas ms populares y tiles. Antes de presentar la ecuacin general, estudiaremos las
versionesdeprimeroysegundogradosporsusencillainterpretacinvisual.
La forma ms simple de interpolacin consiste en unir dos puntos con una lnea recta. Dicha
tcnica, llamada interpolacin lineal, se ilustra de manera grfica en la figura 4.2. Utilizando
tringulossemejantes.

52

Reordenndosesetiene:
53

Queesunafrmuladeinterpolacinlineal.Lanotacinf1(x)designaquesteesunpolinomiode
interpolacindeprimergrado.Observequeademsderepresentarlapendientedelalneaque
unelospuntos,eltrmino[f(x1)f(x0)]/(x1x0)esunaaproximacinendiferenciadivididafinita
a la primer derivada. En general, cuanto menor sea el intervalo entre los datos, mejor ser la
aproximacin. Esto se debe al hecho de que, conforme el intervalo disminuye, una funcin
continuaestarmejoraproximadaporunalnearecta.

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

CursoPropedutico

66

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Sisetienentrespuntoscomodatos,stospuedenajustarseenunpolinomiodesegundo
grado(tambinconocidocomopolinomiocuadrticooparbola).Unaformaparticularmente
convenienteparaelloes
2

1 0

2 0

Observequeaunquelaecuacin(53)parecediferirdelpolinomiogeneral
2 2
.lasdosecuacionessonequivalentes.

54
1

Elanlisisanteriorpuedegeneralizarseparaajustarunpolinomiodensimogradoan+1datos.
Elpolinomiodensimogradoes

1 0

55

Comosehizoantesconlasinterpolacioneslinealesycuadrticas,lospuntosasociadoscondatos
se utilizan para evaluar los coeficientes b0, b1,..., bn. Para un polinomio de nsimo grado se
requieren n + 1 puntos: [x0, f(x0)], [x1, f(x1)],..., [xn, f(xn)]. Se usan estos datos y las siguientes
ecuacionesparaevaluarloscoeficientes:
0

1
2

56

1, 0
2, 1, 0

, , 1, 0

Dondelasevaluacionesdelafuncincolocadasentreparntesissondiferenciasdivididasfinitas.
Porejemplo,laprimeradiferenciadivididafinitaenformageneralserepresentacomo:

57

Lasegundadiferenciadivididafinita,querepresentaladiferenciadelasdosprimerasdiferencias
divididas,seexpresaenformageneralcomo:

58

CursoPropedutico

67

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Enformasimilar,lansimadiferenciadivididafinitaes:

59
Estasdiferenciassirvenparaevaluarloscoeficientesenlasecuaciones(56),loscualesse
sustituirnenlaecuacin(55)paraobtenerelpolinomiodeinterpolacin
60

QueseconocecomopolinomiodeinterpolacindeNewtonendiferenciasdivididas.

Figura4.3Representacingrficadelanaturalezarecursivadelasdiferenciasdivididasfinitas.

ParaimplementarelprogramaenC++,seconsideranlospuntos:

ProgramadeDiferenciasDivididasdeNewton

Dameelnumerodepuntos=6
VectorX
X[1]=0
X[2]=1
X[3]=2
X[4]=3
X[5]=4
X[6]=5
VectorY
Y[1]=2.10
Y[2]=7.70
Y[3]=13.60
Y[4]=27.20

CursoPropedutico

68

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Y[5]=40.90
Y[6]=61.10
MATRIZDD

002.15.60.151.233330.6250.241667
117.75.93.851.266670.5833330
2213.613.60.05000021.0666700
3327.213.73.25000
4440.920.20000
5561.100000

ValoresdeB
b[1]=2.1
b[2]=5.6
b[3]=0.15
b[4]=1.23333
b[5]=0.625
b[6]=0.241667

MATRIZPolinomios
100000
100000
110000
132000
1611600
1103550240

MATRIZPolinomiosMultiplicados
2.100000
5.600000
0.150.150000
1.233333.72.46667000
0.6253.756.8753.7500
0.2416672.416678.4583312.08335.80

PolinomioP(x)=2.1X^0+17.4667X^1+22.5083X^2+13.4417X^3+3.04167X^4+0.241667X^5
Presioneunateclaparacontinuar...

CursoPropedutico

69

EscuelaSuperiordeIngenieraMecnicayElctrica.

CursoPropedutico

ProgramacinyMtodosNumricos.

70

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

71

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura4.4ProgramadeInterpolacindeNewtonparaunpolinomiodegradon1puntosdados

CursoPropedutico

72

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

PolinomiosdeInterpolacindeLagrange
El polinomio de interpolacin de Lagrange es simplemente una reformulacin del polinomio de
Newtonqueevitaelclculodelasdiferenciasdivididas,yserepresentademaneraconcisacomo

61
Donde

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

63

Ylaversindesegundogradoes


64

ElrazonamientodetrsdelaformulacindeLagrangesecomprendedirectamentealdarsecuenta
de que cada trmino Li(x) ser 1 en x = xi y 0 en todos los otros puntos. De esta forma, cada
productoLi(x)f(xi)tomaelvalordef(xi)enelpuntoxi.Enconsecuencia,lasumatoriadetodoslos
productos en la ecuacin (61) es el nico polinomio de nsimo grado que pasa exactamente a
travsdetodoslosn+1puntos,quesetienencomodatos.

ParaelprogramaenC++.Secompruebanlosmismospuntosqueseemplearonparaencontrarel
polinomio de diferencias divididas de Newton, para el polinomio de interpolacin de Lagrange.
stetienequeserexactamenteelmismo.

MetododeInterpolaciondeLagrange
Numerodedatosdetulista6
Introducelosvaloresdex[i]
x[0]=0
x[1]=1
x[2]=2
x[3]=3
x[4]=4
x[5]=5

CursoPropedutico

73

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Introducelosvaloresdef(x)

fx(0)=2.10
fx(1)=7.70
fx(2)=13.60
fx(3)=27.20
fx(4)=40.90
fx(5)=61.10

/nElpolinomiodeLagrange:

(0.241666x^5)+(3.04167x^4)+(13.4417x^3)+(22.5083x^2)+(17.4667x^1)+(2.1x^0)+

Processexitedafter29.03secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

74

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

CursoPropedutico

75

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura4.5ProgramadeInterpolacindeLagrangeparaunpolinomiodegradon1puntosdados

CursoPropedutico

76

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

V.

ECUACIONESDIFERENCIALESORDINARIAS.

Seaunaecuacindiferencialordinariadelaforma

65

66

Ysea

La ecuacin de pendiente ordenada al origen. De acuerdo con esta ecuacin, la pendiente


estimadafseusaparaextrapolardesdeunvaloranterioryiaunnuevovaloryi+1enunadistancia
h(figura5.1).
Nuevovalor=valoranterior+pendientetamaodepaso

Figura5.1Ilustracingrficadelmtododeunpaso.

Estafrmulaseaplicapasoapasoparacalcularunvalorposteriory,porlotanto,paratrazarla
trayectoriadelasolucin.Todoslosmtodosdeunpasoqueseexpresendeestaformageneral,
tanslovanadiferirenlamaneraenlaqueseestimalapendiente.Enotraspalabras,setomala
pendientealiniciodelintervalocomounaaproximacindelapendientepromediosobretodoel
intervalo.Talprocedimiento,llamadomtododeEuler.Despusserevisaotromtododeunpaso
que emplean otras formas de estimar la pendiente que dan como resultado predicciones ms
exactas.TodasestastcnicasengeneralseconocencomomtodosdeRungeKutta.

CursoPropedutico

77

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

MtododeEuler
Laprimeraderivadaofreceunaestimacindirectadelapendienteenxi

67

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


ecuacin(25.1):

68

Esta frmula se conoce como mtodo de Euler (o de EulerCauchy o de punto pendiente). Se


prediceunnuevovalordeyusandolapendiente(igualalaprimeraderivadaenelvalororiginalde
x)paraextrapolarlinealmentesobreeltamaodepasoh.
Para el programa implementado en C++ la ecuacin diferencial ordinaria de primer orden se
escribeenlaprimeralibrera#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 forma
tabuladalosresultadospasoapaso.
ProgramaMtododeEuler
*Nota:Introducirdatosenformatodecimal(sinindicaroperaciones.
Ejemplo:6.2832,envezde2*PIo2*3.1416)
Limiteinferiordelintervalo(ti):0
Limitesuperiordelintervalo(tf):6.2832
Condicininicial(xi):0
Condicininicial(yi):0
Anchodeintervalo(h):0.3
xi
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

CursoPropedutico

78

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

+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.003609

Processexitedafter64.68secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

79

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura5.2ProgramadeEuler.

MtodosdeRungeKuttadecuartoorden
ElmspopulardelosmtodosRKeseldecuartoorden.Comoenelcasodelosprocedimientosde
segundoorden,hayunnmeroinfinitodeversiones.Lasiguiente,eslaformacomnmenteusada
y,porlotanto,lellamamosmtodoclsicoRKdecuartoorden:

69

Donde

70

ObservequeconlasEDOqueestnenfuncinslodex,elmtodoRKclsicodecuartoordenes
similar a la regla de Simpson 1/3. Adems, el mtodo RK de cuarto orden tiene similitud con el
procedimiento de Heun en cuanto a que se usan mltiples estimaciones de la pendiente para
obtener una mejor pendiente promedio en el intervalo. Como se muestra en la figura 5.2, cada
unadelaskrepresentaunapendiente.

CursoPropedutico

80

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Figura5.3.RepresentacingrficadelaspendientesestimadasempleadasenelmtodoRKdecuartoOrden

Para RK de 4to orden, se usa la misma funcin que se us para Euler, con el mismo paso y
condicionesiniciales.
ProgramaMtododeRungeKuttade4toorden
*Nota:Introducirdatosenformatodecimal(sinindicaroperaciones.
Ejemplo:6.2832,envezde2*PIo2*3.1416)
Limiteinferiordelintervalo(ti):0
Limitesuperiordelintervalo(tf):6.2832
Condicininicial(xi):0
Condicininicial(yi):0
Anchodeintervalo(h):0.3
xi
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
CursoPropedutico

81

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Processexitedafter47.91secondswithreturnvalue0
Presioneunateclaparacontinuar...

CursoPropedutico

82

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

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 el mtodo de
Euler,cmosufuncineslaprimeraenserllamada,esenelquesegraficalafuncinoriginal,ese
cdigo se omite en las funciones de los dems mtodos. Los archivos .m por separado, estn
programadosparaproporcionarlagrficadelmtodoencomparacinconlafuncinoriginal,que
se introduzca su derivada, cada funcin recibe dicha funcin y calcula su primitiva para ser
comparada;ademsseproporcionanlosvaloresenformatabulada.

Nota:Enlosarchivos.moriginales,hayvariocdigoencomentarios,lamayoraessignificativoy
sin gran relevancia, ya que se fue perfeccionando poco a poco hasta corregir errores de
programacin y se omite en ste documento. Hay otro cdigo que se puede usar para
proporcionar valores que se omiten en las tabulaciones. Al final de ste texto, se agregan los
cdigosdelasfuncionesutilizadas.

Cdigos del Script para la funcin:

Para b=2

CursoPropedutico

83

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

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)');
Comparacin de los mtodos de Runge Kutta con la funcin original
1.2
Euler
Solucin verdadera
Heun
Punto Medio
Ralston
Runge Kutta 3
Runge Kutta 4
Runge Kutta 5 (Butcher)

0.8

f(t)

0.6

0.4

0.2

-0.2

3
Tiempo t (seg)

Figura5.5ComparacingraficadelosmtodosdeRungeKutta,paralaEDO.
2 cos b x
sin 2

CursoPropedutico

84

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

Salida en la ventana de comandos

primitiva =
sin(2*x)*exp(-x)
i

Y_Verdadero

Y_Euler

Pendiente

Y+1_Euler

B =
0
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000
9.0000
10.0000
11.0000
12.0000
13.0000
14.0000
15.0000
16.0000
17.0000
18.0000
19.0000
20.0000
x

0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000
6.0000

Y_Verdadero

0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
-0.0013

0
0.6000
0.8414
0.8072
0.6330
0.4387
0.2967
0.2298
0.2257
0.2576
0.2988
0.3317
0.3492
0.3527
0.3473
0.3388
0.3313
0.3269
0.3256
0.3264
0.3281

0
2.0000
0.8045
-0.1138
-0.5807
-0.6476
-0.4733
-0.2233
-0.0133
0.1062
0.1372
0.1095
0.0586
0.0116
-0.0180
-0.0284
-0.0248
-0.0148
-0.0044
0.0027
0.0057

0
0.6000
0.8414
0.8072
0.6330
0.4387
0.2967
0.2298
0.2257
0.2576
0.2988
0.3317
0.3492
0.3527
0.3473
0.3388
0.3313
0.3269
0.3256
0.3264
0.3281

Y_Heun

B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000

0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128

CursoPropedutico

0
0.4207
0.5243
0.4201
0.2359
0.0677
-0.0368
-0.0722
-0.0583
-0.0218
0.0152
0.0404
0.0510
0.0500
0.0430

85

EscuelaSuperiordeIngenieraMecnicayElctrica.
4.5000
0.0046
4.8000
-0.0014
5.1000
-0.0043
5.4000
-0.0044
5.7000
-0.0031
6.0000
-0.0013
x

Y_Verdadero

ProgramacinyMtodosNumricos.

0.0351
0.0291
0.0262
0.0260
0.0272
0.0289
Y_Punto_Medio

B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000
6.0000
x

0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
-0.0013

Y_Verdadero

0
0.4171
0.5050
0.3837
0.1871
0.0132
-0.0915
-0.1241
-0.1065
-0.0671
-0.0286
-0.0031
0.0069
0.0052
-0.0024
-0.0108
-0.0168
-0.0196
-0.0197
-0.0183
-0.0166
Y_Runge_Kutta2_Ralston

B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000

0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031

CursoPropedutico

0
0.4181
0.5137
0.4011
0.2109
0.0402
-0.0642
-0.0982
-0.0825
-0.0446
-0.0068
0.0185
0.0287
0.0274
0.0201
0.0119
0.0059
0.0031
0.0029
0.0042

86

EscuelaSuperiordeIngenieraMecnicayElctrica.
6.0000

-0.0013

Y_Verdadero

ProgramacinyMtodosNumricos.

0.0060

Y_Runge_Kutta3

B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000
6.0000

0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
-0.0013

Y_Verdadero

0
0.4183
0.5114
0.3959
0.2034
0.0314
-0.0732
-0.1068
-0.0904
-0.0520
-0.0140
0.0114
0.0216
0.0201
0.0127
0.0045
-0.0015
-0.0043
-0.0045
-0.0031
-0.0014

Y_Runge_Kutta4

B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000

0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031

CursoPropedutico

0
0.4183
0.5114
0.3959
0.2034
0.0314
-0.0732
-0.1068
-0.0904
-0.0520
-0.0140
0.0114
0.0216
0.0201
0.0127
0.0045
-0.0015
-0.0043
-0.0045
-0.0031

87

EscuelaSuperiordeIngenieraMecnicayElctrica.
6.0000

-0.0013

Y_Verdadero

ProgramacinyMtodosNumricos.

-0.0014

Y_Runge_Kutta5_Butcher

B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000
6.0000

0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
-0.0013

0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
-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

CursoPropedutico

88

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

x=x1(u);
y3(u)=eval(primitiva);
end
hold on
plot(x1,y3,'-b')
disp('
i
x
Y_Verdadero
Y+1_Euler')
B=[A, x1', y3', y1, fp', y2']
end

Y_Euler

Pendiente

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];

CursoPropedutico

89

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

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]

CursoPropedutico

90

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

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);

CursoPropedutico

91

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

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
B=[x1', y4', y1]
end

Y_Runge_Kutta4')

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);

CursoPropedutico

92

EscuelaSuperiordeIngenieraMecnicayElctrica.

ProgramacinyMtodosNumricos.

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

CursoPropedutico

93

Das könnte Ihnen auch gefallen