P. 1
Metodo de Interpolacion de Newton

Metodo de Interpolacion de Newton

|Views: 6.111|Likes:
Publicado porOrgasmadness Abbott

More info:

Published by: Orgasmadness Abbott on Nov 26, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

07/24/2013

pdf

text

original

Instituto Politécnico Nacional

Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Zacatenco Ingeniería en Comunicaciones y Electrónica

ASIGNATURA:
ANALISIS NUMERICOS

NOMBRE DEL TRABAJO:
TRABAJO DE INVESTIGACION SEGUNDO DEPARTAMENTAL

NOMBRE DEL PROFESOR:
ING. JOSE ANTONIO BERNAL MENDOZA

INTEGRANTES:
AVILA MACIAS JESUS EDUARDO GONZALEZ LOPEZ FERNANDO GUARNEROS DE LA TORRE HECTOR GUTIERREZ VICTOR RAUL MICHEL JULIAN ALEJANDRO

GRUPO: 4CV7

10/ NOVIEMBRE/ 2001

INDICE

INTRODUCCION ................................................................................................................................... 3 OBJETIVOS………………………………………………………………………………………………………………………………………4 MARCO TEORICO……………………………………………………………………………………………………………………………4

METODO DE LU ............................................................................................................. 5
PROBLEMAS ................................................................................................................................ 7 CODIGO FUENETE...................................................................................................................... 15

METODO DE CHOLESKY .......................................................................................... 16
CODIGO FUENTE........................................................................................................................ 22

METODO DE CHEBYSHEV ........................................................................................ 26
PROBLEMAS…………………………………………………………………………………………………………………………..27 CODIGO FUENTE……………………………………………………………………………………………………………………..30

METODO DE HERMITE ............................................................................................. 32
PROBLEMAS .............................................................................................................................. 36

INTERPOLACION DE NEWTON…………………………………………………...38
PROBLEMAS……………………………………………………………………………………………………………………39. CODIGO FUENTE………………………………………………………………………………………………………………41

CONCLUSIONES ........................................................................................................... 60 GLOSARIO ..................................................................................................................... 60 BOBLIOGRAFIA ........................................................................................................... 62

Página 2

INTRODUCCIÓN Muchas veces en el campo de la ingeniería, ciencia y vida diaria, se encuentran diversos problemas, los cuales deben ser analizados desde el enfoque que los métodos numéricos pueden dar, más aun, si dicho método numérico, es enfrentado a polinomios, de difícil trato. Sabemos que para resolver una ecuación, existen diferentes métodos, algunos de ellos ya los hemos utilizado en repetidas ocasiones, estos métodos son Método de sustitución 1 Se d espeja una incógnita en una de las ecuaciones. 2 Se sustituye la expresión de esta incógnita en la otra ecuación, obteniendo un ecuación con una sola incógnita. 3 Se resuelve la ecuación. 4 El valor obtenido se sustituye en la ecuación en la que aparecía la incógnita despejada. 5 Los dos valores obtenidos constituyen la solución del sistema. Método de igualación 1 Se despeja la misma incógnita en ambas ecuaciones. 2 Se igualan las expresiones, con lo que obtenemos una ecuación con una incógnita. 3 Se resuelve la ecuación. 4 El valor obtenido se sustituye en cualquiera de las dos expresiones en las que aparecía despejada la otra incógnita. 5 Los dos valores obtenidos constituyen la solución del sistema. Método de reducción 1 Se preparan las dos ecuaciones, multiplicándolas por los números que convenga. 2 La restamos, y desaparece una de las incógnitas.

Página 3

porque son los resultados de un experimento gobernado por una ley que desconocemos. para poder resolver ecuaciones de cualquier tipo. por ejemplo. OBJETIVOS -GENERAL Este trabajo busca enseñar la implementación de distintos métodos para la resolución de sistemas de ecuaciones tales como Lu. desarrollo de método. 4 El valor obtenido se sustituye en una de las ecuaciones iniciales y se resuelve. Esto puede suceder. También puede suceder que sepamos la expresión analítica de la Página 4 . naturalmente.3 Se resuelve la ecuación resultante. En este trabajo se llevo a cabo la investigación de nuevos métodos matemáticos. de una función sólo conocemos un conjunto de valores. encontraremos cada vez un nivel mayor de dificultad para resolver este tipo de problemas. además del estudio de métodos de interpolación. Recordamos que los métodos que se aplicaron en esta investigación son:      El método de LU Cholesky Chebyshev Hermite Y la interpolacion de Newton para 2 ecuaciones Los cuales fueron detalladamente explicados de tal forma que fueran claros para nuestros lectores. ya que conforme avanzamos. el lograr explicar en base a un marco teórico. Si queremos calcular el valor de la función para una abscisa diferente de las conocidas. será más que suficiente para poder aplicar estos métodos y no tener problema alguno. el valor que obtengamos será una aproximación del valor real. debemos utilizar otra función que la aproxime y. MARCO TEORICO Muchas veces. problemas de ejemplo y una implementación en el compilador Turbo o C o DevC++. tales como el método de Newton. Chebyshev y Hermite. -PARTICULAR El objetivo particular de este trabajo tiene como principal meta. Era lógico esperar un grado mayor de razonamiento. 5 Los dos valores obtenidos constituyen la solución del sistema. para poder aplicar estos métodos. sin embargo con los conocimientos previos que tenemos. Cholesky. para cada uno de los métodos que más adelante se explicaran.

[U] es una matriz diagonal superior en la que sobre la diagonal no necesariamente tiene que haber números 1.función. analizando cómo una matriz original se descompone en dos matrices triangulares. La descomposición LU involucra solo operaciones sobre los coeficientes de la matriz [A]. es decir obtener la matriz triangular inferior [L] y la matriz triangular superior [U]. que en español se traducen como ―Inferior‖ y ―Superior‖. Existen varias formas de hacer esto. pero la más sencilla y una de las más utilizadas es la interpolación1. Estudiando el proceso que se sigue en la descomposición LU es posible comprender el por qué de este nombre. Página 5 . hablamos de interpolación polinómica. una superior y otra inferior. El primer paso es descomponer o transformar [A] en [L] y [U]. proporcionando un medio eficiente para calcular la matriz inversa o resolver sistemas de álgebra lineal. [L] es una matriz diagonal inferior con números 1 sobre la diagonal. DESARROLLO METODO DE LU Su nombre se deriva de las palabras inglesas ―Lower" y ―Upper‖. que consiste en construir una función que pase por los valores conocidos (llamados polos) y utilizar ésta como aproximación de la función primitiva. Si se utilizan polinomios como funciones de aproximación. Primeramente se debe obtener la matriz [L] y la matriz [U]. pero sea lo suficientemente complicada como para calcular aproximaciones a los valores de la función a partir de otros ya conocidos.

Esto es: . Se utiliza el mismo concepto de ―factor‖ explicado anteriormente y se ubican todos los ―factores‖ debajo de la diagonal según corresponda en cada uno.PASOS PARA ENCONTRAR LA MATRIZ TRIANGULAR SUPERIOR (MATRIZ [U] 1. Hacer cero todos los valores abajo del pivote sin convertir este en 1. 4. 3. Este factor multiplicado por -1 se multiplica luego por el pivote y a ese resultado se le suma el valor que se encuentra en la posición a cambiar (el valor en la posición que se convertirá en cero). Dicho factor es igual al número que se desea convertir en cero entre el número pivote. al encontrar [L] y [U] a partir de [A] no se altera en nada la ecuación y se tiene lo siguiente Página 6 . 2. Esquemáticamente se busca lo siguiente: Originalmente se tenía: Debido a que [A] = [L][U]. Para lograr lo anterior se requiere obtener un factor el cual es necesario para convertir a cero los valores abajo del pivote. así como también convertir en 1 cada pivote.factor * pivote + posición a cambiar PASOS PARA ENCONTRAR LA MATRIZ TRIANGULAR NFERIOR (MATRIZ [L]) Para encontrar la matriz triangular inferior se busca hacer ceros los valores de arriba de cada pivote.

Obtener la matriz triangular inferior L y la matriz triangular superior U. Realizar Ux = y (para encontrar x). si es 4x4. PROBLEMAS RESUELTOS 1. la cual brinda los valores correspondientes a las incógnitas de la ecuación. de manera que Ax = LUx = b. si es 3x3. Resolver Ly = b (para encontrar y). 2. entonces LUx = b.Por lo tanto. y así sucesivamente. 4. 2 iteraciones.. x2 y x3 para el siguiente sistema de ecuaciones: NOTA: Recuérdese que si la matriz es 2x2 se hará 1 iteración. El resultado del paso anterior se almacena en una matriz nueva llamada ―x‖. 5. PASOS PARA RESOLVER UN SISTEMA DE ECUACIONES POR EL MÉTODO DE DESCOMPOSICIÓN L 1. SOLUCIÓN: 4 -2 -1 9 Página 7 . El resultado del paso anterior se guarda en una matriz nueva de nombre ―y‖. 3 iteraciones.Encontrar los valores de x1. si Ax = b. 3.

1) + (.2) + (2) = 2.25 .1) = .25 a31 = .(factor 2) * (fila 1) + (fila 3) a11 = a11 a12 = a12 a13 = a13 a21 = .(0.5 a23 = .25) * (4) + (1) = 0 a32 = .(1.0.75 Página 8 .1) + (.1) = 0.(1.5 2.2) + (1) = 3.25) * (.25 factor 2 = (a31 / a11) = 1 / 4 = 0.25) + (.[A] = 5 1 1 2 -1 -4 [B] = 7 12 ITERACIÓN 1 factor 1 = (a21 / a11) = 5 / 4 = 1.75 4 [U] = 0 0 -2 3.(0.25) * (4) + (5) = 0 a22 = .(1.5 a33 = .(factor 1) * (fila 1) + (fila 2) fila 3 = .25) * (.25 Encontrando [U] fila 2 = .0.5 -1 0.25) * (.(0.

25 .5) = 0 a33 = .(2.7142857143 Encontrando [U] fila 3 = .(2.25 0 ITERACIÓN 2 factor 3 = (u32 / u22) = 2.25 0 0.25) + (.0.Encontrando [L] 1 [L] = 0 0 0 0 1.(2.5 = 0.25 0.5 / 3.0.(factor 3) * (fila 2) + (fila 3) a31 = .5) * (0.5) * (0) + (0) = 0 a32 = .5) * (3.75) = .5 0 -1 0.9285714286 4 [U] = 0 0 Encontrando [L] -2 3.7142857143 1 Página 9 .0.5) + (2.9285714286 1 [L] = 0 0 0 1.5 / 3.5 / 3.25 1 0.5 / 3.

Página 10 . y2 y y3: Al resolver el sistema anterior. y2 y y3: El último paso es resolver Ux = y para encontrar la matriz x. En pocas palabras es como que se pidiera resolver el siguiente sistema de ecuaciones. x2 y x3. En otras palabras es como que se pidiera resolver el siguiente sistema de ecuaciones. es decir. El siguiente paso es resolver Ly = b para encontrar la matriz y. encontrando los valores de x1. se obtienen los siguientes valores para y1. encontrando los valores de y1. la respuesta del ejercicio utilizando la descomposición LU. x2 y x3: La solución del sistema es: Este es finalmente el valor de x1.Ahora ya se tiene la matriz [U] y la matriz [L].

x2 y x3 para el siguiente sistema de ecuaciones: SOLUCIÓN: 11 [A] = 5 4 -3 -2 -7 -2 -8 2 [B] = 18 13 2 ITERACIÓN 1 factor 1 = (a21 / a11) = 5/11 = 0.3636363636) * (11) + (4) = 0 Página 11 ..(0.(factor 2) * (fila 1) + (fila 3) a11 = a11 a12 = a12 a13 = a13 a21 = .(0.0909090919 a31 = .4545454545) * (11) + (5) = 0 a22 = .4545454545 factor 2 = (a31 / a11) = 4/11 = 0.8) = .(0.0.2) = .(factor 1) * (fila 1) + (fila 2) fila 3 = .6363636365 a23 = .3636363636 Encontrando [U] fila 2 = .4545454545) + (.4545454545) * (.(0.2) + (.7.3) + (.2.Encontrar los valores de x1.

0.0.5.57142857 Página 12 .(9.909090909 / .(0.36363636 0 ITERACIÓN 2 factor 3 = (u32/u22) = .3636363636) * (.7.2) + (2) = 2.(0.909090909 -2 .a32 = .285714284) * (.0909090919 2.909090909 a33 = .5.(9.0909090919) + (2.7272727272 11 [U] = 0 0 -3 .5.7272727272 Encontrando [L] 1 [L] = 0 0 0 0 0.45454545 0 0.7.909090909) = 0 a33 = .7) = .0.6363636365 = 9.6363636365 .(9.5.6363636365) + (.7272727272) = 68.285714284) * (0) + (0) = 0 a32 = .3) + (.3636363636) * (.(factor 3) * (fila 2) + (fila 3) a31 = .285714284 Encontrando [U] fila 3 = .285714284) * (.

57142857 Encontrando [L] 1 [L] = 0 0 0 0. En otras palabras es como que se pidiera resolver el siguiente sistema de ecuaciones. En pocas palabras es como que se pidiera resolver el siguiente sistema de ecuaciones.11 [U] = 0 0 -3 .7.285714284 1 Ahora ya se tiene la matriz [U] y la matriz [L].0. y2 y y3: Al resolver el sistema anterior. El siguiente paso es resolver Ly = b para encontrar la matriz y. encontrando los valores de x1. se obtienen los siguientes valores para y1. x2 y x3: Página 13 .4545454545 1 0. y2 y y3: El último paso es resolver Ux = y para encontrar la matriz x.3636363636 9. encontrando los valores de y1.0909090919 68.6363636365 0 -2 .

Página 14 . x2 y x3.La solución del sistema es: Este es finalmente el valor de x1. es decir. la respuesta del ejercicio utilizando la descomposición LU.

PROGRAMA DE LU CODIGO FUENTE #include <iostream> #include <iomanip> #include <gsl/gsl_linalg. j++) cout<<gsl_matrix_get(invA. // Calculo la inversa de A y la guardo en invA cout<<"\ndet(A) = "<<gsl_linalg_LU_det(A. cout<<"\nIntroduce el orden de la matriz: ".j. p.j)<<setw(10). gsl_permutation_free(p).m). for(i=0.m.p. //Instrucción para no tener que escribir std::cin int main (int argc. //Calculo la descomposición LU gsl_linalg_LU_invert(A. } Página 15 . i++) { for(j=0. i<m. gsl_permutation * p = gsl_permutation_alloc(m). gsl_matrix_free(A). cin>>m. &s).h> //Librería gsl para calcular lo que queremos using namespace std. gsl_matrix * A = gsl_matrix_alloc(m. cin>>A->data[i]. return(0). gsl_matrix *invA = gsl_matrix_alloc(m.m). cout<<"\nIntroduce los elementos de la matriz:"<<endl. } gsl_linalg_LU_decomp (A. char **argv) { size_t i. for(i=0. gsl_matrix_free(invA). int s. } cout<<endl.i.j<m.invA). i++) { cout<<"A("<<i+1<<")"<<"=". cout<<"\nLa inversa de A es:"<<endl. i<m*m. s)<<endl.

METODO DE CHOLESKY En álgebra lineal. entonces A se puede descomponer como: Donde L es una matriz triangular inferior con elementos de la diagonal estrictamente positiva. y. la descomposición de Cholesky es aproximadamente dos veces tan eficiente como la descomposición LU para resolver sistemas de ecuaciones lineales. Si A es simétrica y definida positiva. y L * denota la transpuesta conjugada de L . entonces podemos resolver Ax = b calculando primero la descomposición de Cholesky A = LL T. Por ejemplo. En el caso especial de que A es simétrico definida positiva de la matriz con entradas reales. metafórico. la descomposición de Cholesky o triángulo de Cholesky es una descomposición de Hermite. sólo hay una matriz triangular inferior L con entradas diagonales estrictamente positivos tales que A = LL * . Sistemas de la forma Ax = b con A simétrica y positiva definida surgen muy a menudo en las aplicaciones. esto puede considerarse como el análogo de la matriz de la raíz cuadrada de un número. definida positiva matriz A. Fue descubierto por André-Louis Cholesky para matrices reales. En un sentido amplio. Cuando sea aplicable. entonces A es hermitiana y definida positiva. entonces la solución de Ly = b para y. La declaración se lee: una matriz cuadrada Atiene una descomposición de Cholesky si y sólo si A es hermitiana y positiva semidefinida. L tiene entradas reales también. finalmente. las ecuaciones normales en al menos lineal plazas problemas son de esta forma. triangular inferior o de otra manera. Factorizaciones de Cholesky para matrices semidefinida positiva no son únicas en general. La descomposición de Cholesky es único: dado un hermitiana. Si A tiene entradas reales y es simétrica (o más generalmente. la solución de L T x = y para x. Esta es la descomposición de Cholesky. El requisito de que L tiene entradas de la diagonal estrictamente positiva se puede quitar para ampliar la factorización en el caso positivo semidefinida. También puede suceder que la Página 16 . La descomposición de Cholesky se utiliza principalmente para la solución numérica de ecuaciones lineales Ax = b. es hermitiano) y definida positiva.Lo contrario es trivial: si A se puede escribir como LL * para algunos invertible L. definida positiva de la matriz en el producto de una matriz triangular inferior y su transpuesta conjugada.

una actualización de la descomposición de Cholesky de una aproximación de la matriz hessiana en sí. La descomposición de Cholesky se usa comúnmente en el método de Monte Carlo para la simulación de sistemas con múltiples variables correlacionadas: La matriz de covarianza se descompone para dar el triangular inferior L. No lineal multivariado funciones pueden ser minimizados por sus parámetros utilizando las variantes del método de Newton se llama cuasi-Newton métodos. lo que ocurre con frecuencia en la solución numérica de ecuaciones diferenciales parciales. y se puede descomponer en LL T. es una versión modificada de la eliminación de Gauss . que se utiliza para calcular la matriz descomposición L . Filtros de Kalman suelen utilizar la descomposición de Cholesky para elegir un conjunto de los llamados puntos de sigma.matriz A proviene de un funcional de energía que debe ser positivo a partir de consideraciones físicas. El algoritmo recursivo comienza con i : = 1 y de En el paso i . El algoritmo de Cholesky. donde s es el paso. La matriz P es siempre positiva semidefinida. produce un vector de muestras Lu con las propiedades de la covarianza del sistema que se modela. La pérdida de la condición definida positiva a través de errores de redondeo se evita si en lugar de actualizar una aproximación a la inversa de la de Hesse. Estos puntos sigma totalmente la captura de la media y la covarianza del estado del sistema. u. la búsqueda da un pasos definido por la resolución de Hs = -g de s. El filtro de Kalman sigue el estado medio de un sistema como un vector x de longitud N y covarianza como una N por N de la matriz P. la matriz A ( i ) tiene la siguiente forma: Página 17 . En cada iteración. Las columnas de L pueden sumarse y restarse de la media x para formar un conjunto de 2 N vectores llamados los puntos sigma. y H es una aproximación a la matriz hessiana de segundas derivadas parciales formados por repetidas rango 1 actualiza en cada iteración. Aplicando esto a un vector de muestras correlacionadas. g es el gradiente del vector de derivadas parciales primera de la función con respecto a los parámetros. Dos conocidas fórmulas de actualización se llama Davidon-Fletcher-Powell (DFP) y Broydon-Fletcher-GoldfarbShanno (BFGS).

se obtiene un ( n +1) = I . Repetimos esto para i desde 1 hasta n. la matriz triangular inferior L que estamos buscando se calcula como: El Cholesky-Banachiewicz y algoritmos de Cholesky-Crout Si escribimos la ecuación A = LL * se obtiene la siguiente fórmula para las entradas de L : Página 18 . Si ahora definimos la matriz L i por entonces podemos escribir A ( i ) como donde Tenga en cuenta que b i b i * es un producto externo. este algoritmo se llama la versión del producto exterior en (Golub y Van Loan). Después de n pasos.1. Por lo tanto.donde I i -1 denota la matriz identidad de dimensión i . por lo tanto.

Sin embargo. esta factorización se pueden utilizar para la mayoría de las matrices simétricas invertible. si A es real y definida positiva. Cuando A es definida positiva los elementos de la matriz diagonal D son todos positivos. j entrada) si sabemos las entradas a la izquierda y arriba.La expresión en la raíz cuadrada es siempre positiva. El algoritmo de Cholesky-Crout se inicia desde la esquina superior izquierda de la matriz de L y se procede a calcular la matriz columna por columna. El cálculo es generalmente dispuesto en cualquiera de las siguientes órdenes:   El algoritmo de Cholesky-Banachiewicz se inicia desde la esquina superior izquierda de la matriz de L y se procede a calcular la matriz fila por fila. Una forma alternativa es la factorización Esta forma elimina la necesidad de tomar raíces cuadradas. Si A es real. las relaciones recursivas se aplicarán las siguientes entradas de D y L: Página 19 . Para el complejo de la matriz hermitiana. la siguiente fórmula: Por lo tanto podemos calcular la ( i . un ejemplo de una matriz invertible cuya descomposición no está definido es aquel en la primera entrada es cero.

es decir. es decir. también se denota por { L k }. Desde el caso definido positivo. por lo tanto { L k } es un conjunto acotado en el espacio de Banach de los operadores.) Además. como es el LL T factorización. por ejemplo. Página 20 . (Esto es una consecuencia inmediata de.n positiva semi-definida de la matriz. la siguiente fórmula: El LDL T y LL T factorizaciones (tenga en cuenta que L es la diferencia entre los dos) puede ser fácilmente relacionada con: La última expresión es el producto de una matriz triangular inferior y su transposición. no da algoritmos numéricos explícitos para el cálculo de factores de Cholesky. el teorema de espectro para el cálculo funcional polinomio. en norma del operador. Se puede comprobar fácilmente que L tiene las propiedades deseadas. relativamente compacto (porque el espacio vectorial subyacente es de dimensión finita). A = LL * y L es triangular inferior con no negativo elementos de la diagonal: para todos los x . Este resultado se puede extender al positivo semidefinido caso por un argumento de la limitación. Los algoritmos anteriores muestran que cada matriz definida positiva A tiene una descomposición de Cholesky. tiene una subsucesión convergente. Pr la propiedad de la norma de operador. En consecuencia. El argumento no es totalmente constructivo. con un límite L . Si A es un n -por. y y . cada una k tiene descomposición de Cholesky A k = L k L k *. entonces la sucesión { A k } = { A + (1 / k ) I n } consiste en matrices definidas positivas. por lo tanto.Para el complejo hermitiano matriz A .

La factorización de Cholesky se puede generalizar a (no necesariamente finito) matrices con entradas del operador. Debido a que el espacio vectorial subyacente es de dimensión finita. Uno también puede tomar los elementos diagonales de L a ser positivo.Por lo tanto A = LL * . dado que cada L k es triangular inferior con no negativo elementos de la diagonal. entonces existe un operador de la matriz triangular inferior L tal que A = LL * . Si A es positiva (semidefinida) en el sentido de que para todos los finitos k y para cualquier tenemos . Página 21 . Esto a su vez implica que. Por lo tanto L k tiende a L en la norma significa que L k tiende a Lentrywise. L también. Vamos a de espacios de Hilbert. todas las topologías en el espacio de los operadores son equivalentes. Considere la matriz del operador ser una secuencia que actúa sobre la suma directa donde cada es un operador acotado .

CODIGO FUENTE PROGRAMA DEL METODO DE CHOLESKY #include <math.h> #include <tina/sys.h> #include <tina/sysfuncs.h> #include <tina/math.h> #include <tina/mathfuncs.h> #define TINY 1.0e-20 static int cholesky1(double **A, int n) { int i, j, k; for (i = 0; i < n; ++i) { for (j = 0; j <= i; ++j) { double sum = A[i][j]; A[j][i] = 0; for (k = 0; k < j; ++k) sum -= A[i][k] * A[j][k]; /* computed previously */ if (i == j) { if (sum < 0) return (0); sum = sqrt(sum); if (fabs(sum) < TINY) return (0); A[i][j] = sum; } else A[i][j] = sum / A[j][j]; } } return (1); } #undef TINY static void cholbksb(double **A, int n, double *x, double *b) { int i, j; double sum; for (i = 0; i < n; i++) { sum = b[i];
Página 22

for (j = 0; j < i; ++j) sum -= x[j] * A[i][j]; x[i] = sum / A[i][i]; } for (i = n - 1; i >= 0; i--) { sum = x[i]; for (j = i + 1; j < n; j++) sum -= x[j] * A[j][i]; x[i] = sum / A[i][i]; } } Matrix *matrix_cholesky_decomp(Matrix * A) { if (A == NULL || A->n != A->m) return (NULL); A = matrix_cast_fill(A, double_v); if (!cholesky1 (A->el.double_v, A->n)) { matrix_free((Matrix *) A); return (NULL); } return (A); } Vector *matrix_cholesky_back_sub(Matrix * A, Vector * b) { int n; Vector *x = NULL; Vector *c = NULL; if (A == NULL || A->n != A->m) return (NULL); n = A->n; if (b == NULL || b->n != n) return (NULL); A = matrix_cast_fill(A, double_v); c = vector_cast(b, double_v); x = vector_alloc(n, double_v); cholbksb (A->el.double_v, n, (double *) x->data, (double *) c->data); vector_free(c); matrix_free((Matrix *) A); return (x); } Vector *matrix_cholesky_sol(Matrix * A, Vector * b)
Página 23

{ int n; int sucess; Vector *x = NULL; Vector *c = NULL; if (A == NULL || A->n != A->m) return (NULL); n = A->n; if (b == NULL || b->n != n) return (NULL); A = matrix_cast_fill(A, double_v); sucess = cholesky1(A->el.double_v, n); if (sucess) { c = vector_cast(b, double_v); x = vector_alloc(n, double_v); cholbksb(A->el.double_v, n, (double *) x->data, (double *) c->data); vector_free(c); } matrix_free((Matrix *) A); return (x); } Vector *matrix_cholesky_weighted_least_square(Matrix * A, Matrix * W, Vector * b) { Matrix *At; Matrix *M; Matrix *temp; Vector *x; if (A == NULL || A->m != b->n || W == NULL || W->n != W->m || W->m != A->m) return (NULL); A = matrix_cast_fill(A, double_v); /* to maintain precision */ At = matrix_transp(A); x = matrix_vprod(W, b); b = matrix_vprod(At, x); vector_free(x); temp = matrix_prod(W, A); M = matrix_prod(At, temp); matrix_free((Matrix *) temp); x = matrix_cholesky_sol(M, b); vector_free(b); matrix_free((Matrix *) A); matrix_free((Matrix *) At); matrix_free((Matrix *) M); return (x); } Vector *matrix_cholesky_least_square(Matrix * A, Vector * b) {
Página 24

double_v). vector_free(b). /* to keep precision */ At = matrix_transp(A). if (A == NULL || b == NULL || A->m != b->n) return (NULL). A). matrix_free((Matrix *) At). matrix_free((Matrix *) A). b). M = matrix_prod(At. Vector *x. return (x).Matrix *At. x = matrix_cholesky_sol(M. A = matrix_cast_fill(A. b = matrix_vprod(At. } Página 25 . b). Matrix *M. matrix_free((Matrix *) M).

para trabajar en un intervalo cualquiera hay que hacer un cambio de variable lineal que nos lleve el intervalo [-1. … ). Como ya hemos indicado.METODO DE CHEBYSHEV Para cada valor de n. T1(x) = x.x2) … (x. 1] a nuestro intervalo de trabajo [a. en otras palabras. … .Tn-1(x). que 2-n Tn+1(x) es la solución al problema anterior o. equivalentemente. es el polinomio con menor máximo absoluto de entre todos los polinomios con coeficiente líder igual a 1. 1]. La solución viene dada mediante los polinomios de Chebyshev {Tn+1(x)}. Error de interpolación ( ) ( ) ( ) )( ) ( ) ( Nótese que según cómo se elijan los x i el error podrá ser mayor o menor Página 26 . donde Tn+1(x) = cos((n+1) arccos(x)). Tn+1(x) = 2xTn(x) . ¿cuál será la mejor forma de elegir los nodos? Aquella para la cual el valor máximo de |ω(x)| sea lo más pequeño posible: min {max {|(x–x1)(x. 2.xn+1)j : a ≤ x ≤ b} : a ≤ x1 < x2 <… < xn+1 ≤ b} Para resolver esta cuestión podemos restringirnos. 2. 1]. (n = 1. La que a nosotros nos concierne es que el valor absoluto máximo de 2-n Tn+1(x) para x є[-1. b]: [ ] ( ) [ ] entonces los nodos de Chebyshev en [a. haciendo una traslación y un cambio de escala si es necesario. que los mejores nodos posibles son las n + 1 ra³ces simples de Tn+1: ( ( ) ( ) ) que se llaman nodos de Chebyshev del intervalo [-1. 1] es 2-n y que. Recordemos que la funciónTn+1(x) es la solución polinomica de la ecuación diferencial (1 . n +1). además. Los polinomios de Chebyshev tienen muchas propiedades interesantes. al intervalo [-1.x2)y” – xy´ + (n + 1)2y = 0 cuyo coeficiente líder es 2n. La forma más fácil de construirlos es mediante la relación de recurrencia: T0(x) = 1. b] son los puntos z(xi) (i = 1.

Pero para otras no. El problema con estas últimas es que sus derivadas van creciendo demasiado en el intervalo considerado. En las figuras que siguen mostramos este comportamiento: Aproximamos la función por el polinomio de interpolación que pasa por los puntos en asterisco. una idea para mejorar la aproximación es la de olvidarnos de tomar nodos igualmente Página 27 .PROBLEMAS RESUELTOS 1.63. Se puede observar que la aproximación es mala cerca de los extremos del intervalo Ya que la aproximación es mala en los extremos del intervalo. que parecía al principio bastante inofensiva. esto es lo que sucede con esta función de Runge. Resulta que para ciertas funciones. si hay convergencia.-Dada la función ( ) en el intervalo [-5.5] Si construimos el polinomio de interpolación pn(x) en este intervalo. entonces seguro que no hay convergencia en los puntos donde |x|>3. por ejemplo para f(x)=exp(x).

Ahora tomamos los nodos de Chebyshev y la aproximación se hace en el intervalo [-1 1] (para mayor comodidad ya que los ceros de Chebyshev se definen en este intervalo y no hay que hacer cambio de variable).espaciados y tomar nodos que se concentren más cerca de los extremos. a pesar de que Watt había conseguido una buena aproximación. Página 28 . Su interés en la teoría de la aproximación nació porque Chebyshev que era profesor de matemáticas en San Petersburgo. fue profesor allí durante 35 años. De este modo al obligar al polinomio pn(x) a pasar por estos puntos quizás se mejore la aproximación. James Watt había mejorado mucho el mecanismo de los pistones de la máquina. El mecanismo funciona principalmente porque el pistón. Esto se consigue por una serie de varillas articuladas (linkages) que convierten movimiento rectilíneo en circular. de circular al girar una rueda que se transforme mediante una serie de brazos articulados en rectilíneo. ello hacía que se resintiera la máquina. viajó en 1852 a Paris y a Inglaterra donde estuvo muy interesado en la máquina de vapor. sino que presenta oscilaciones (curva de Watt). se presentaban numerosos problemas. se tiene que transformar luego en circular. Sin embargo. el movimiento que resulta nos es completamente lineal. Esto era principalmente porque si miramos el movimiento al revés. Obsérvese que los nodos están más concentrados hacia los extremos del intervalo. que tiene un movimiento de vaivén rectilíneo. es decir. porque la máquina al final tiene que mover una rueda. Poco antes.

y se le da la fórmula explícita Tn (x) = cos (n arc cos x) Sin embargo se puede combinar con las identidades trigonométricas para producir expresiones explicitas para Tn(x): A (x) = 1 T1 (x) = X T2 (X) = 2x2 .2) T3 (x) = 4x3 .Mecanismo de Peaucellier. El polinomio de Chebyshev de grado n se denota Tn (x). donde C está fijo y los demás son pivotes movibles. Cuando el punto F' describe una línea.8x2 + 1 Página 29 .3x T4 (x) = 8x4 .6. está formado por una serie de brazos articulados. el otro punto F traza una circunferencia.1 (5.

K <= N.) D = CERO. K + +) SUMA + = F [K] * cos ((PI * (J-1 ))*(( K-MEDIA) / N)). BMA = Media * (B-A). K <= N. doble B. if ((XA) * (RE)> ZERO) printf ("\ n X.h> # Include <math. Y. for (j = M. F [NMAX]. double * C. J <= N. doble BMA. BPA = Media * (B + A). no en el rango \ n \ n". Y2. J + +) { = SUMA CERO. double * C.CODIGO FUENTE PROGRAMA DEL METODO DE CHEBYSHEV # Include <iostream. SV. Int J. Y. DD.0 # Define CUARTO 0. doble B.h> # Define NMAX 51 # Define MEDIA 0. K + +) { Y = cos (PI * (K-MEDIA) / N). J> 1. BPA. for (j = 1. J -) { Página 30 . Int J. } } CHEBEV doble (doble A.0 # Define CERO 0. K.0 # Define PI 4. DD = CERO. C [J] = SUMA * FAC. Y = (X * DOS-A-B) / (B-A) Y2 = DOS * Y. if (K = 1. } FAC = DOS / N. CHEBFT void (doble A.0 * atan (1. M int. FAC. for (K = 1.25 # Define DOS 2. F [K] = FUNC (BMA Y * + BPA).5 # Define UN 1. double x) { doble D.0) doble función (double x). int N) { suma doble.

J + +) { CINT [J] = CON * (C [J-1]-C [J +1]) / (J-1). SUMA + = FAC * CINT [N].FAC FAC. } CINT [N] = CON C * [N-1] / (N-1). int N) { CON doble. SUM. J> 0. DD = SV. int N) { CON doble. J <N. CINT [1] = SUMA DOS * / / ajustar la constante de integración } CHDER void (doble A. CDER [N] = CERO. J <= N. el doble * CINT. SUMA + = FAC * CINT [J].SV = D. FAC = UNO. for (j = 1. } Página 31 . D = Y2 * D-DD + C [J]. Int J. =. FAC. CON CUARTO * = (B-A). } CHINT void (doble A. J -) CDER [J] = CDER [J 2] + DOS * J * C [J +1]. = SUMA CERO. J + +) CDER [J] *= CON. el doble * CDER. double * C. if (N> = 3) for (j = N-2. doble B. } return (Y * D-DD + MEDIA * C [1]). double * C. for (j = 2. Int J. CON DOS = / (B-A). doble B. CDER [N-1] = DOS * (N-1) * C [N].

Hn es par si n es par. Se tiene que: es decir.METODO DE HERMITE Definimos los polinomios de Hermite por: son polinomios de grado n. Los primeros polinomios de Hermite son: H0 (t) = 1 H1 (t) = 2t H2 (t) = 4t2 .2 H3 (t) = 8t3 -12t H4 (t) = 16t4 .48t2 + 12 Consideremos la función Su relación en serie de Taylor será: Como: Se tiene: Luego Página 32 . e impar si n es impar.

vale decir. es aquella función de dos variables tal que su desarrollo de Taylor en una de las variables tiene como coeficientes precisamente los polinomios de Hermite. A partir de la ecuación anterior se pueden encontrar relaciones entre los polinomios de Hermite. La estrategia para hallarlas (para _esta o cualquier otra función generatriz de otros polinomios) es típica: derivar parcialmente respecto a alguna de las variables y luego comparar potencias de x en los desarrollos en Taylor resultantes.Se dice que e2tx-x2 es la función generatriz de los polinomios de Hermite. 1) Derivando respecto a t Reordenando la suma en el lado izquierdo Comparando los coeficientes de las potencias de x en cada serie encontramos: La cual puede ser reescrito en la forma Página 33 .

2t . En general.dt. adoptando la convención de que los polinomios con subíndices negativos tienen algún valor adecuado. el operador de bajada de los polinomios de Hermite es (2n) -1dt 2) Derivando respecto a x Comparando potencias de x: O bien 3) Podemos utiliza las dos relaciones de recurrencia anteriores para obtener una tercera Hemos pues encontrado el operador de subida para los polinomios de Hermite. aunque ello haga aparecer un factor H-1. a saber. Página 34 . si bien solo tiene sentido considerar polinomios de Hermite con índice positivo.Observemos que. Un operador que tiene tal propiedad se denomina operador de bajada. las relaciones de recurrencia que obtendremos pueden considerarse validas para cualquier índice entero. En este caso. por ejemplo. cero. La relación anterior expresa un polinomio de Hermite en términos de un operador (en este caso la derivada) aplicado sobre el polinomio de Hermite inmediatamente superior. la expresión anterior puede ser extendida a n = 0.

Derivando la tercera relación: Con: O sea. los polinomios Hn son una solución de la ecuación de Hermite Consideremos la ecuación de Hermite. obtenemos una relación de recurrencia para los coeficientes de la serie: Se desprenden las siguientes consecuencias: Página 35 . pero generalicémosla ligeramente: Busquemos soluciones con un cierto desarrollo de Taylor: Remplazando en la ecuación de Hermite es decir. Es decir el.

Esto es. las soluciones no tienen singularidades en el plano c) La ecuación tiene por solución un polinomio sólo si ᵝ є N*. Q(x) = 5/3 – 2/3(x – 2) – 5/3(x – 2)(x – 1. quiere decir que el método a utilizar es el de hermite X 1 1 2 P(x) 0 0 10 7 P[1. Si ᵝ es par. a0 y a1..1)2 P(x)= 3x2 + x – 4 que satisface las condiciones dadas 2.1. p(2) = 10 Como existe la derivada del polinomio p(x). hay dos coeficientes arbitrarios. y si la solución es par o impar. y por ende dos soluciones linealmente independientes b) Lo cual significa que el radio de convergencia de la serie es infinito. la de coeficientes con índice par.Utilizar el método de Hermite para hallar un polinomio P(x) de grado 2 que satisfaga: p(1) = 0. Obtener las tablas de diferencias divididas que dan origen a P(x) y Q(x) respectivamente Página 36 . Vale decir. hay que tomar a1 ≠ 0 y a0 = 0. que depende sólo de a1. Si ᵝ es impar. la serie tiene un crecimiento rápido cuando t→∞ PROBLEMAS RESUELTOS 1. hay que tomar a0 ≠ 0 y a1 = 0. d) Si ᵝ є N*. Por tanto. entonces desde cierto V0 en adelante. p´(1) = 7.2] = 10 P[1.2]= 3 P[1.5) – 2x(x – 1)(x – 1. y la de coeficientes con índice impar.a) Hay dos series independientes.1) + 3(x .. de modo que los av tiene todos el mismo signo para V > V0.5)x. que depende sólo de a0.2] = 10 Por lo tanto P(x)= 7(x .5)(x – 2).Sea P(x)= 3 + ½(x – 1) + 1/3(x – 1)(x – 1.

1.5.5. xn en entonces a la función g(x) + (x0 – x/ xn – x0)(g(x) – h(x)) interpola a f x0.5 b P(x) 3 P(1. xn en notar que h y g no necesitan ser polinomios). b] -2 Si vemos las tablas. basado en los datos f(-1). 0] P[0. 0.5) P(0) P(a) Q(X) 5/3 Q(0) Q(1..5. f´(-1). que pertenece i.5.2} X 1 1. a} y la de Q(x) tiene {2. completar la tabla de diferencias divididas con repetición utilizada en la construcción de H4(x) 2. será igual que si lo evaluamos en Q(x) P(xi) = Q(xi). Q(b=1)= 3 y a= 2. la de P(x). entonces si evaluamos un punto P(x).5) Q(b) 1/2 P[1. x1. …. f(1).5] Q[1.Lo que nos indica que los polinomios son iguales. Página 37 . esta tiene los puntos {1. xn-1. a] -2 -2/3 Q[0.1.i = {0. a] 1/3 P[1. xn-1.5 0 A X 2 0 1. f´(1) y f‖(1) Sin evaluar H4(x) ni sus derivadas en -1 y 1.Probar que si g interpola a la función f en x0. 1. 0.. 1. x1. 1.1.5. … .Se sabe que H4(X)= 4 + 3(x + 1) – 2(x + 1)2 + 3/2(x + 1)2(x – 1) – ½(x – 1)2 (x – 1)2 es el polinomio de interpolación de Hermite de cierta función f. P(a=2)= 5/3 PROBLEMAS PROPUESTOS 1. x1. b} b= 1. 0. b] -5/3 Q[0. xn-1 y h interpola a f x0. ….5.5.

es obvio que a0 depende sólo de x0. Introducimos la nueva notación: Restando las dos primeras ecuaciones obtenemos: Restando la segunda y la tercera ecuación obtenemos: Podemos proceder de igual modo para demostrar que: Aunque la forma más cómoda es por inducción construimos un polinomio de grado n definido por: Relacionando nuestro polinomio interpolador.. Imponiendo que el polinomio interpolador pase por los puntos de interpolación obtenemos: De estas ecuaciones.. a1. a1 de x0 y x1 y así sucesivamente..METODO DE INTERPOLACION DE NEWTON El método de Newton de diferencias divididas es otra forma de obtener el polinomio interpolador. an.. la ecuación estaría dada por: Página 38 . En este método el polinomio interpolador se escribe de la forma: Y el algoritmo proporciona una regla para obtener los coeficientes a0.

Primero. Se desea interpolar los siguientes datos mediante el polinomio de Newton para x = 5. calculamos la tabla de diferencias divididas: Ahora evaluamos el polinomio de Newton: Página 39 . Podemos por lo tanto escribir el polinomio interpolador como: Y la formula de aproximación de f(x) queda en la siguiente forma: f (x0).Relación que es el origen del nombre de diferencias divididas para los coeficientes an. como se ve de la primera ecuación.2. Restando las dos primeras ecuaciones obtenemos PROBLEMAS RESUELTOS 1.

el 10 de mayo de 2005. a continuación v(x). en Kanpur: Tiempo 8 a.PROBLEMAS PROPUESTOS 1. Temperatura 30 37 12 horas 43 38 16:00 20:00 Obtener polinomio de interpolación de Newton hacia atrás de grado para calcular la temperatura en Kanpur en ese día a las 5. Página 40 .-La velocidad de un tren. 2.m. la velocidad (en km/hr ) Del tren en la distancia x está dada por la siguiente tabla: x v (x) 0 0 50 60 100 80 150 110 200 90 250 0 Encontrar la velocidad aproximada del tren en el punto medio entre las dos estaciones. que corre entre dos estaciones se mide a diferentes distancias de la estación de partida.-Da los siguientes datos de las temperaturas (en ºC ) Entre las 8.00 am a 8.00 pm.00 pm. Si x es la distancia en km de la estación de partida.

h> # include <math.h> # include <stdlib. show_dd_table( ).h> const int max_size=13. char Postfix_expression[30][30]={NULL}. void construct_dd_table( ).CODIGO FUENTE PROGRAMA DE METODO DE NEWTON # include <iostream. void push(const char *). const char* pop( ). return 0.h> # include <string. textmode(C4350). estimate_pnx( ). void compute_newtons_dd_interpolation_polynomial( ). long double dd_table[max_size][max_size]={0}. char Non_linear_equation[100]={NULL}. char Stack[30][30]={NULL}. void get_input( ). void clear_screen( ). show_screen( ). } Página 41 . get_input( ).h> # include <conio. long double xn[max_size]={0}.h> # include <stdio. int top=-1. void show_screen( ). int main( ) { clrscr( ). compute_newtons_dd_interpolation_polynomial( ). int n=0. construct_dd_table( ). void convert_infix_expression_to_postfix_expression(const char *). const long double evaluate_postfix_expression(const long double). void show_dd_table( ). void estimate_pnx( ). long double px[max_size]={0}. int choice=0.

textbackground(8). strcpy(Stack[top]."<<endl. gotoxy(1."<<endl. .count<42.2).count++) cprintf("* *").". } } const char* pop( ) { char Operand[40]={NULL}. for(int count=0.2). cout<<"\n Press any key to exit. Página 42 ".void show_screen( ) { textbackground(1). exit(0).8+count). if(top==-1) { cout<<"Error : Stack is empty.". cout<<"\n Press any key to exit. } void push(const char* Operand) { if(top==(max_size-1)) { cout<<"Error : Stack is full.count<37. } void clear_screen( ) { for(int count=0. cprintf("********************************************************************************").Operand). cout<<" } gotoxy(1. } else { top++.46). getch( ). cprintf(" Newton's Divided Difference Interpolation Formula ").count++) { gotoxy(3. gotoxy(1.

do { Symbol_scanned[count_3]=Infix_expression[count_1]. } void convert_infix_expression_to_postfix_expression(const char* Expression) { char Infix_expression[100]={NULL}. count_1++.NULL). count_3++. } Página 43 .Stack[top]).Expression). if(flag==0) { int count_3=0. top--. int count_2=0. strcpy(Infix_expression. strcat(Infix_expression. if(Infix_expression[0]=='(') flag=1. } else { strcpy(Operand. strset(Stack[top]."+0)"). exit(0). int flag=0.NULL). } return Operand. int count_1=0. } while(count_1<=equation_length && Infix_expression[count_1]!='(' && Infix_expression[count_1]!='+' && Infix_expression[count_1]!='-' && Infix_expression[count_1]!='*' && Infix_expression[count_1]!='/' && Infix_expression[count_1]!='^' && Infix_expression[count_1]!=')'). flag=1.getch( ). push("("). int equation_length=strlen(Infix_expression). do { strset(Symbol_scanned. char Symbol_scanned[30]={NULL}.

} if(strcmp(Symbol_scanned."*")==0 || strcmp(Stack[top]. count_1++."+")==0 || strcmp(Symbol_scanned."/")==0) { if(strcmp(Symbol_scanned."/")==0) { strcpy(Postfix_expression[count_2]. else if(strcmp(Symbol_scanned. } else if(strcmp(Symbol_scanned.else if(flag==1) { Symbol_scanned[0]=Infix_expression[count_1].pop( )).")")==0) { while(strcmp(Stack[top]. } pop( )."^")==0 || strcmp(Stack[top]."(")==0) push("(")."*")==0 || strcmp(Symbol_scanned."^")==0 || strcmp(Symbol_scanned. count_2++. Página 44 ."-")==0 || strcmp(Symbol_scanned. if(Infix_expression[count_1-1]=='(' && (Infix_expression[count_1]=='-' || Infix_expression[count_1]=='+')) flag=0."/")==0) { while(strcmp(Stack[top].pop( )). if(Infix_expression[count_1]!='(' && Infix_expression[count_1]!='^' && Infix_expression[count_1]!='*' && Infix_expression[count_1]!='/' && Infix_expression[count_1]!='+' && Infix_expression[count_1]!='-' && Infix_expression[count_1]!=')') flag=0."(")!=0) { strcpy(Postfix_expression[count_2]."*")==0 || strcmp(Symbol_scanned."^")==0) { } else if(strcmp(Symbol_scanned.

} const long double evaluate_postfix_expression(const long double x) { long double function_value=0. char Symbol_scanned[30]={NULL}. count_2++.count_2++. } } while(strcmp(Stack[top].NULL)!=0). } } push(Symbol_scanned)."*")==0 || Página 45 ."-")==0) { while(strcmp(Stack[top]. } else { strcat(Postfix_expression[count_2]."(")!=0) { strcpy(Postfix_expression[count_2]. count_2++. if(strcmp(Symbol_scanned. strcat(Postfix_expression[count_2]. strcpy(Symbol_scanned. count_2++. } } else if(strcmp(Symbol_scanned.pop( ))."+")==0 || strcmp(Symbol_scanned."="). do { count_1++.Postfix_expression[count_1])."^")==0 || strcmp(Symbol_scanned.Symbol_scanned). int count_1=-1.

else if(strcmp(Operand[count_2]."sinx")==0) operand[count_2]=sinl(x).718282. if(Operand[count_2][0]=='-') { int length=strlen(Operand[count_2]). long double result=0.count_2++) { int flag=0. for(int count_3=0.count_3<(length-1). else if(strcmp(Operand[count_2].count_3++) Operand[count_2][count_3]=Operand[count_2][(count_3+1)]."x")==0) operand[count_2]=x."/")==0 || strcmp(Symbol_scanned. flag=1. for(int count_2=0."-")==0) { char Result[30]={NULL}."cosx")==0) operand[count_2]=cosl(x). else if(strcmp(Operand[count_2]."tanx")==0) operand[count_2]=tanl(x). strcpy(Operand[0]. char Operand[2][30]={NULL}. Página 46 .strcmp(Symbol_scanned.pop( )). strcpy(Operand[1]. else if(strcmp(Operand[count_2].count_2<2."e")==0) operand[count_2]=2. Operand[count_2][count_3]=NULL. char *endptr. } if(strcmp(Operand[count_2].pop( )). long double operand[2]={0}."+")==0 || strcmp(Symbol_scanned.

operand[0]). break."=")!=0). Página 47 . strcpy(Function_value. push(Result). else if(strcmp(Operand[count_2]. } else if(strcmp(Symbol_scanned. break.pop( )). case '+' : result=operand[1]+operand[0]. else operand[count_2]=strtod(Operand[count_2]. case '/' : result=operand[1]/operand[0]. case '-' : result=operand[1]-operand[0]. char *endptr. } switch(Symbol_scanned[0]) { case '^' : result=powl(operand[1]. break. char Function_value[30]={NULL}.&endptr). } gcvt(result."=")!=0) push(Symbol_scanned). break.&endptr). case '*' : result=operand[1]*operand[0]. break.25."logx")==0) operand[count_2]=log10l(x)."lnx")==0) operand[count_2]=logl(x). } while(strcmp(Symbol_scanned.Result). function_value=strtod(Function_value. if(flag) operand[count_2]*=-1.else if(strcmp(Operand[count_2].

return function_value.9). gotoxy(6. cout<<" to try again. gotoxy(27.26). cout<<"Number of Distinct Data Points :". Press <Esc> to exit or any other key". cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ". if(n<2 || n>12) { gotoxy(12.19). gotoxy(6. if(n==27) exit(0). gotoxy(6. Página 48 . cout<<"Input Mode :". gotoxy(6. cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍ".12).13).10). n = 12 ]". } void get_input( ) { do { clear_screen( ).". cout<<"Error : Wrong Input. } } while(n<2 || n>12). gotoxy(12.20). cin>>n. gotoxy(8. n = 2 | max.23). cout<<"Enter the max. cout<<"[ min.25). number of distinct data points = n = ". gotoxy(6. n=int(getche( )).

cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ".12). char Choice=NULL.cout<<"Press : ". cout<<"N". gotoxy(6. getch( ).43). } gotoxy(25. cout<<"Note : Write the function with proper Braces ( ) e. cout<<"Y". Página 49 . gotoxy(8.'Y' or <Enter> to enter function".30). gotoxy(10. gotoxy(28. if(choice) { clear_screen( ). gotoxy(10..25). Choice=getch( ). cout<<"Enter your choice : ".'N' or <Any other key> to enter values of the function".g. cout<<".. cout<<"Press any key to continue.11).".30). gotoxy(6. cout<<". gotoxy(6.27). cout<<"Non-Linear Function :".30). } else { gotoxy(28. 2x+3 as (2*x)+3".37). if(Choice=='y' || Choice=='Y' || int(Choice)==13) { choice=1.

gotoxy(25. cout<<"³ x ³ f(x) ³". cout<<"Available Operators : ^ (raised to power) .10).13). cout<<"Available Operands : x .(wherey( )+1)). gotoxy(6. sinx . gotoxy(25. cout<<"Enter the Function : f(x) = ". cout<<" n = any number".42).14). cosx . convert_infix_expression_to_postfix_expression(Non_linear_equation). -". / .count_1++) { gotoxy(25. * . } clear_screen( ).gotoxy(6. gotoxy(6. cout<<"ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´". tanx . gotoxy(25.12). gotoxy(6. gotoxy(25. cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ". gotoxy(25.(wherey( )+1)). logx . + .count_1<n. cin>>Non_linear_equation. cout<<"³ ³ ³". for(int count_1=0. e .40).44). cout<<"ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿". cout<<"³ ³ } Página 50 ³". cout<<"Data Points & Values of Function :". lnx . gotoxy(6.15). cout<<"³ ³ ³". gotoxy(6.". .9).14).

gotoxy(25.count_2++) { long double fx1=dd_table[(count_1-1)][(count_2-1)]..count_1<n. cin>>xn[count_2]. cout<<"ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ".(wherey( )-1)). } void construct_dd_table( ) { for(int count_1=1.(wherey( )+1)). } gotoxy(25. } if(choice) gotoxy(25. else gotoxy(25. Página 51 . cout<<dd_table[0][count_2]. } else { gotoxy(43.43)..count_2++) { gotoxy(27.count_2<n.".wherey( )). long double x1=xn[(count_2-count_1)]. getch( ). gotoxy(43. if(choice) { dd_table[0][count_2]=evaluate_postfix_expression(xn[count_2]).count_1++) { for(int count_2=count_1.(wherey( )+2)). cout<<"Press any key to continue. cin>>dd_table[0][count_2].(wherey( )-1)). long double fx2=dd_table[(count_1-1)][count_2]. for(int count_2=0.count_2<n.(wherey( )+1)). gotoxy(25.16).

cout<<dd_table[0][count_1]. cout<<"³ ³ ".15). int y_cord=17. cout<<"Divided Difference Table :". cout<<"ÃÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄ".y_cord). cout<<xn[count_1]. for(int count_1=0.count_1<n. gotoxy(4.y_cord).11). gotoxy(4. cout<<"³ ³ int x_cord=4. } } } void show_dd_table( ) { clear_screen( ). gotoxy((x_cord+2).13). gotoxy((x_cord+11).16). dd_table[count_1][count_2]=((fx2-fx1)/(x2-x1)). cout<<"³ x ³ f(x) ".14). gotoxy(x_cord. gotoxy(4.10). cout<<"ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ". gotoxy(4.(y_cord+1)).long double x2=xn[count_2]. gotoxy(4.count_1++) { gotoxy(x_cord. cout<<"³ ³ ". cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ". Página 52 ".y_cord). gotoxy(4. .

13). gotoxy(x_cord.y_cord).14).count_3++) { gotoxy(x_cord. else if(count_3==2) cout<<"nd".count_3<n. for(int count_4=0. gotoxy(x_cord. y_cord=17.y_cord+=2.15).count_4<n. gotoxy(x_cord. cout<<"ÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ". if(count_3==1) cout<<"st". } gotoxy(x_cord.14). cout<<"ÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ". for(int count_3=1. cout<<count_3. cout<<"³". x_cord=28. Página 53 . else cout<<"th". gotoxy((x_cord+6).y_cord). gotoxy(x_cord. cout<<"ÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ".count_4++) { gotoxy(x_cord. cout<<"³". cout<<"ÀÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄ". else if(count_3==3) cout<<"rd".y_cord). int count_2=0.16).

gotoxy(x_cord.y_cord). if(count_4>=count_3) { gotoxy((x_cord+2). cout<<dd_table[count_3][count_4].(y_cord+1)).cout<<"³".count_5++) { gotoxy(x_cord. } x_cord+=16.16). cout<<"ÅÄÄ". cout<<"³". cout<<"³". cout<<"³". gotoxy(x_cord. gotoxy(x_cord.count_5<n. } y_cord+=2.(y_cord-count_3)). if((count_2%3)==0 && count_3<(n-1)) { gotoxy(x_cord. cout<<"ÂÄÄ". } Página 54 . for(int count_5=0. cout<<"ÁÄÄ".(y_cord+1)). gotoxy(x_cord. count_2++. gotoxy(x_cord. gotoxy(x_cord. cout<<"³". y_cord=17.15). cout<<"³". y_cord+=2.13).14).y_cord).

count_2=0.(y_cord+1))..44). cout<<"³". cout<<"³". count_3--.. cout<<"¿".count_6<n.gotoxy(30.y_cord). y_cord=17.count_6<=(n+2).16). } } gotoxy(x_cord. gotoxy(x_cord. gotoxy(x_cord. cout<<"³". cout<<" ". . for(int count_6=0. } Página 55 ".(y_cord+1)). y_cord+=2. cout<<"³".14). for(int count_6=0. } y_cord-=2.".count_6++) { gotoxy(x_cord. gotoxy(x_cord.y_cord). y_cord=13. cout<<" y_cord+=2.count_6++) { gotoxy(x_cord. x_cord=28. cout<<"Press any key to continue. gotoxy(x_cord.13). getch( ).

count_3++) { fx[(count_3+2)]=1. for(int count_6=0. gotoxy(30. } fx[0]*=xn[(count_3+1)].. px[0]=dd_table[0][0].".count_1++) xn[count_1]=(xn[count_1]*(-1)). getch( ).count_5++) fx[count_5]*=dd_table[count_2][count_2]. fx[0]=xn[0].count_6<(count_2+1).44).count_4>0.count_2++) { long double fx[max_size]={0}. cout<<"Press any key to continue.count_3<(count_2-1). } } Página 56 .15). fx[1]=1.count_1<n.count_6++) px[count_6]+=fx[count_6].gotoxy(x_cord.count_5<(count_2+1). } for(int count_5=0. gotoxy(x_cord.count_2<n. fx[count_4]+=fx[(count_4-1)].. cout<<"´".count_4--) { fx[count_4]*=xn[(count_3+1)]. } void compute_newtons_dd_interpolation_polynomial( ) { for(int count_1=0. cout<<"Ù". for(int count_2=1.y_cord). for(int count_3=0. for(int count_4=(1+count_3).

cout<<"P"<<(n-1)<<"(x) = ". cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ".13). gotoxy(6.".count_1--) { if(count_1==(n-1) && n>2) cout<<px[count_1]<<" x"<<count_1.(wherey( )+2)). else if(count_1==1) cout<<fabs(px[count_1])<<" x". cout<<"Estimation of Pn(x) :". if(wherex( )>=70) gotoxy(30. if(count_1>0) { if(px[(count_1-1)]>0) cout<<" + ". else if(count_1==0) cout<<fabs(px[count_1]). else cout<<" .void estimate_pnx( ) { clear_screen( ).count_1>=0.(wherey( )+2)).11). cout<<"Newton's Divided Difference Interpolation Formula :". gotoxy(6.19). } if(wherex( )>=70) gotoxy(30. else if(count_1>1) cout<<fabs(px[count_1])<<" x"<<count_1. Página 57 .10). gotoxy(10. } gotoxy(6. for(int count_1=(n-1).

count_3<count_2. cout<<"Enter the value of x = ". gotoxy(10. if(choice) { long double fx=0.count_3++) temp*=x. cout<<"The Actual value of f"<<"("<<x<<") = "<<fx.gotoxy(6. for(int count_2=2. cout<<"Absolute Error = E(abs) = "<<fabs((fx-pnx)). for(int count_3=1. pnx+=(px[1]*x). long double pnx=0. cout<<"The estimated value of P"<<(n-1)<<"("<<x<<") = "<<pnx. Página 58 .28). gotoxy(10. fx=evaluate_postfix_expression(x).26). char Choice=NULL. long double x=0. } gotoxy(10. pnx=px[0]. pnx+=(px[count_2]*temp). gotoxy(10.20). pnx=0.30).22).count_2++) { long double temp=x. cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ".count_2<n. x=0. do { Choice=NULL. cin>>x.

". gotoxy(10. cout<<"or any other key to continue..42). cout<<" gotoxy(15.40). if(int(Choice)!=27 && Choice!='v' && Choice!='V') { gotoxy(10.42). cout<<"Press <Esc> to exit. } else if(int(Choice)==27) exit(0). } ". 'V' to view D.40). ". cout<<" } else if(Choice=='v' || Choice=='V') { show_dd_table( ). cout<<" gotoxy(25.30). cout<<" gotoxy(10.22). } while(1). ". cout<<" ". Choice=getch( ).D..". cout<<" gotoxy(10.28). Table again".} gotoxy(15. gotoxy(25. ".26). estimate_pnx( ). Página 59 .

pues cada método tiene sus ventajas y sus desventajas. en muchos casos se pueden restablecer datos perdidos u extraviados de diversas bases de datos.CONCLUSIONES Luego de haber estudiado a profundidad este tema o herramienta para resolver sistemas de ecuaciones. o los ingresos y egresos que una sucursal de una panadería puede tener. Las matrices se utilizan para describir sistemas de ecuaciones lineales. Trabajar esto en papel podría resultar extremadamente largo y tedioso. pero dependerá del gusto de cada persona elegir uno en específico. pues son iterativos y muy largos. Interpolación: En el subcampo matemático del análisis numérico. otros más cortos. otros más fáciles de programar. Sin embargo. tales como el control de pedidos en un almacén. En ingeniería y algunas ciencias es frecuente disponer de un cierto número de puntos obtenidos por muestreo o a partir de un experimento y pretender construir una función que los ajuste. GLOSARIO DE TERMINOS Interpolación: En el subcampo matemático del análisis numérico. lo primero que se necesita es comprender cómo se desarrolla cada uno de estos procesos. se denomina interpolación a la obtención de nuevos puntos partiendo del conocimiento de un conjunto discreto de puntos. Algunos métodos son más exactos. etc. el método estudiado en este trabajo es ideal para programarlos por computadora. El método de interpolación . ya se tiene una buena base y el conocimiento del tema para poder comenzar a programar en la computadora estos procesos. Para ser capaces de elegir un método apropiado. una matriz es una tabla bidimensional de números consistente en cantidades abstractas que pueden sumarse y multiplicarse. se concluye que para resolver estos sistemas de ecuaciones lineales existen diferentes métodos. es una herramienta muy utilizada en el ámbito laboral. Como se mencionó en la introducción. debido a que gracias a sus procesos de aproximación. Matriz: En matemáticas. Luego de la elaboración de este reporte. Por ello son métodos ideales para trabajarlos en computadora. realizar un seguimiento de los coeficientes de una aplicación lineal y registrar los datos que Página 60 . se denomina interpolación a la obtención de nuevos puntos partiendo del conocimiento de un conjunto discreto de puntos. muchas veces la elección no será arbitraria.

dependen de varios parámetros. Polinomio: En matemáticas . Cifra Significativa: Todas las cifras excepto el cero Ecuación cuadrática: Ecuación de segundo grado o cuadrática se expresa mediante la relación ax2 + bx + c = 0. Ecuación: Una ecuación es una igualdad matemática entre dos expresiones algebraicas. y también variables cuya magnitud se haya establecido como resultado de otras operaciones. denominadas miembros. Ecuación cúbica: Las ecuaciones de tercer grado o cúbicas son del tipo ax3 + bx2 + cx +d = 0. Pueden sumarse. multiplicarse y descomponerse de varias formas. Ortogonal: En matemáticas. Las matrices se describen en el campo de la teoría de matrices. Ecuación cuártica: Las ecuaciones de cuarto grado o cuárticas. para a distinto de 0. Evaluar: Valorar una cosa Página 61 . Las incógnitas. Un monomio es un producto de un coeficiente y una variable elevado a un número natural. Ecuación Diferencial: Ecuación que contiene derivadas. ax4 + bx3 + cx2 + dx + e = 0. y desconocidos o incógnitas. constituyen los valores que se pretende hallar. Los valores conocidos pueden ser números. lo que también las hace un concepto clave en el campo del álgebra lineal. coeficientes o constantes. se le llama polinomio a la suma de varios monomios. donde a es distinto de 0. el término ortogonalidad (del griego orthos —recto— y gonía —ángulo—) es una generalización de la noción geométrica de perpendicularidad. representadas generalmente por letras. en las que aparecen valores conocidos o datos. relacionados mediante operaciones matemáticas. que se llama el exponente del monomio. donde a es distinto de 0.

(3ª ed.moreau.pdf * http://www.com/interppolin#toc9 *http://translate. R.pdf *http://mna.html * C.mx&u=http://wiki.answers. Chapra.mty.pdf * http://rinconmatematico.es/diazj/cn_tema5.garcia/descargas/AnalisisNumericoITema3.com.com/c%2B%2B/source%2520code/math. Canale.).com/translate_c?hl=es&langpair=en%7Ces&rurl =translate.com.google.itesm.0 Página 62 .tonahtiu.com/foros/index.google.pagesperso-orange.org/wiki/Factorizaci%C3%B3n_LU *http://www.mx/dtie/deptos/cb/cb00854-1/Apuntes/interpol.es/personal_pdi/ciencias/barcelo/cnumerico/recursos/interpolacio n. S.fr/c_function.uam.uhu.wikidot.wikipedia.es/cristobal.html *http://www.uam. McGrawHill.pdf *http://www.mcgrawhill.htm *http://es.uv.BIBLIOGRAFIA *http://translate.com/Q/Write_a_c_programme_to _perform_newton's_divided_difference_formula&usg=ALkJrhgLdAlkYeStlxc3JFwW cKuBqsRJcg *www. *http://construccionuv.educacion.es/descartes/web/materiales_didacticos/Interpolacion/ interpolacion_1.cpp4u..bligoo. P.htm * http://www.com/sites/dl/free/9701061144/507265/chapra_metodos _5e_capitulo_muestra_c18.html *http://recursostic.googleusercontent.es/personal_pdi/ciencias/barcelo/cnumerico/recursos/interpolacio n.html *http://highered.cl/media/users/9/471845/files/38587/INTERPOLACIO N_NUMERICA.php?topic=5149.com/notas/metodos/gs_ejercicio_06. Métodos Numéricos para Ingenieros.pdf * http://www.mx/translate?hl=es&langpair=en%7Ces&u=http://jeanpierre.

if(count_1>0) { if(px[(count_1-1)]>0) cout<<" + ". Págin a2 . gotoxy(10. do { Choice=NULL.(wherey( )+2)). cout<<"ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ". cout<<"Enter the value of x = ".". if(wherex( )>=70) gotoxy(30. cout<<"Estimation of Pn(x) :".(wherey( )+2)).20). long double pnx=0. pnx=0. pnx=px[0]. char Choice=NULL. cin>>x. x=0. } if(wherex( )>=70) gotoxy(30.else if(count_1==0) cout<<fabs(px[count_1]).19). long double x=0. else cout<<" .22). gotoxy(6. } gotoxy(6.

'V' to view D. for(int count_2=2.count_3++) temp*=x. for(int count_3=1.count_2<n.30).42). cout<<" ".26). } gotoxy(15. gotoxy(10. if(int(Choice)!=27 && Choice!='v' && Choice!='V') { gotoxy(10. fx=evaluate_postfix_expression(x). } gotoxy(10.40).pnx+=(px[1]*x).26).28). if(choice) { long double fx=0. cout<<"Absolute Error = E(abs) = "<<fabs((fx-pnx))..22). cout<<" Págin a2 ". . gotoxy(10. gotoxy(25. pnx+=(px[count_2]*temp). cout<<"The Actual value of f"<<"("<<x<<") = "<<fx.D. Choice=getch( ).count_2++) { long double temp=x. Table again".count_3<count_2. gotoxy(10. cout<<"Press <Esc> to exit. cout<<"The estimated value of P"<<(n-1)<<"("<<x<<") = "<<pnx..". cout<<"or any other key to continue.

". ". otros más cortos. Sin embargo. cout<<" gotoxy(25. muchas veces la elección no será arbitraria. pues cada método tiene sus ventajas y sus desventajas. } else if(int(Choice)==27) exit(0). Algunos métodos son más exactos. cout<<" } else if(Choice=='v' || Choice=='V') { show_dd_table( ). ".40). en muchos casos se pueden restablecer datos perdidos u extraviados de diversas bases de datos.42). debido a que gracias a sus procesos de aproximación. } ".28). El método de interpolación . etc. es una herramienta muy utilizada en el ámbito laboral. tales Págin a3 .30). CONCLUSIONES Luego de haber estudiado a profundidad este tema o herramienta para resolver sistemas de ecuaciones. Para ser capaces de elegir un método apropiado. estimate_pnx( ). cout<<" gotoxy(15. } while(1). se concluye que para resolver estos sistemas de ecuaciones lineales existen diferentes métodos. lo primero que se necesita es comprender cómo se desarrolla cada uno de estos procesos. pero dependerá del gusto de cada persona elegir uno en específico.gotoxy(10. otros más fáciles de programar. cout<<" gotoxy(10.

una matriz es una tabla bidimensional de números consistente en cantidades abstractas que pueden sumarse y multiplicarse. o los ingresos y egresos que una sucursal de una panadería puede tener. denominadas miembros. Como se mencionó en la introducción. ya se tiene una buena base y el conocimiento del tema para poder comenzar a programar en la computadora estos procesos. Los valores conocidos pueden ser números. Ecuación: Una ecuación es una igualdad matemática entre dos expresiones algebraicas. y desconocidos o incógnitas. Interpolación: En el subcampo matemático del análisis numérico.como el control de pedidos en un almacén. Matriz: En matemáticas. Luego de la elaboración de este reporte. y también variables cuya magnitud se haya establecido como resultado de otras operaciones. se denomina interpolación a la obtención de nuevos puntos partiendo del conocimiento de un conjunto discreto de puntos. Por ello son métodos ideales para trabajarlos en computadora. se denomina interpolación a la obtención de nuevos puntos partiendo del conocimiento de un conjunto discreto de puntos. relacionados mediante operaciones matemáticas. en las que aparecen valores conocidos o datos. GLOSARIO DE TERMINOS Interpolación: En el subcampo matemático del análisis numérico. Pueden sumarse. multiplicarse y descomponerse de varias formas. coeficientes o constantes. En ingeniería y algunas ciencias es frecuente disponer de un cierto número de puntos obtenidos por muestreo o a partir de un experimento y pretender construir una función que los ajuste. Págin a2 . Trabajar esto en papel podría resultar extremadamente largo y tedioso. el método estudiado en este trabajo es ideal para programarlos por computadora. pues son iterativos y muy largos. representadas generalmente por letras. constituyen los valores que se pretende hallar. realizar un seguimiento de los coeficientes de una aplicación lineal y registrar los datos que dependen de varios parámetros. Las incógnitas. lo que también las hace un concepto clave en el campo del álgebra lineal. Las matrices se utilizan para describir sistemas de ecuaciones lineales. Las matrices se describen en el campo de la teoría de matrices.

com/Q/Write_a_c_pr ogramme_to_perform_newton's_divided_difference_formula&usg=ALkJrhgLdAlkY eStlxc3JFwWcKuBqsRJcg *www.es/descartes/web/materiales_didacticos/Interpolacion /interpolacion_1. el término ortogonalidad (del griego orthos —recto— y gonía —ángulo—) es una generalización de la noción geométrica de perpendicularidad. Ortogonal: En matemáticas. Cifra Significativa: Todas las cifras excepto el cero Ecuación cuadrática: Ecuación de segundo grado o cuadrática se expresa mediante la relación ax2 + bx + c = 0.com. Un monomio es un producto de un coeficiente y una variable elevado a un número natural. donde a es distinto de 0. ax4 + bx3 + cx2 + dx + e = 0. que se llama el exponente del monomio. Ecuación cuártica: Las ecuaciones de cuarto grado o cuárticas.cpp4u. Ecuación Diferencial: Ecuación que contiene derivadas.com/translate_c?hl=es&langpair=en %7Ces&rurl=translate. se le llama polinomio a la suma de varios monomios.uv.pdf Págin a2 .htm * http://www.answers.educacion.es/diazj/cn_tema5.Polinomio: En matemáticas . Ecuación cúbica: Las ecuaciones de tercer grado o cúbicas son del tipo ax3 + bx2 + cx +d = 0.html *http://recursostic.googleusercontent. para a distinto de 0.google. Evaluar: Valorar una cosa BIBLIOGRAFIA *http://translate.com/c%2B%2B/source%2520code/math. donde a es distinto de 0.mx&u=http://wiki.

pdf * http://rinconmatematico.mx/dtie/deptos/cb/cb00854-1/Apuntes/interpol.pagesperso-orange. S. R.es/personal_pdi/ciencias/barcelo/cnumerico/recursos/interpolacio n.).com/sites/dl/free/9701061144/507265/chapra_metodos _5e_capitulo_muestra_c18. Métodos Numéricos para Ingenieros.uam.bligoo.pdf *http://mna.pdf * http://www.itesm.mcgrawhill.fr/c_function.. Chapra.garcia/descargas/AnalisisNumericoITema3.wikidot.com.mty.uam.html *http://highered.google.com/foros/index. (3ª ed.php?topic=5149.htm *http://es.uhu.es/cristobal.html * C.0 Págin a1 .moreau.com/notas/metodos/gs_ejercicio_06. P.html *http://www.pdf *http://www.tonahtiu.* http://www.es/personal_pdi/ciencias/barcelo/cnumerico/recursos/interpolacio n. Canale.cl/media/users/9/471845/files/38587/INTERPOLACIO N_NUMERICA.mx/translate?hl=es&langpair=en%7Ces&u=http://jeanpierre.com/interppolin#toc9 *http://translate. McGrawHill.wikipedia. *http://construccionuv.org/wiki/Factorizaci%C3%B3n_LU *http://www.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->