Metodos Numericos3

  • Uploaded by: alejandro raymundo pacheco
  • 0
  • 0
  • January 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Metodos Numericos3 as PDF for free.

More details

  • Words: 1,943
  • Pages: 81
Loading documents preview...
MÉTODOS NUMÉRICOS (Octave) Prof. María Zegarra Garay

e -mail: [email protected]

Prof. Elizabeth Puelles Bulnes

e -mail: [email protected]

CONTENIDO:

Interpolación polinómica. Interpolación. Polinomio de Lagrange y Taylor. Ajuste de Curvas. Interpolación iterada. Diferencias divididas de Newton.

APROXIMACIÓN POLINOMIAL E INTERPOLACIÓN  Interpolación y extrapolación.  Polinomios de aproximación de Lagrange.  Diferencias divididas. IDEAS: Cuando pensamos que dos magnitudes variables x e y, están relacionadas por una función pero no conocemos su fórmula, es posible partir de los datos conocidos que las relacionan (x0, y0), (x1, y1), (x2, y2) …. (xn, yn) para calcular una función polinómica:

y = f (x) que cumpla: f(x0) = y0 , f(x1) = y1 , f(x2) = y2 ,…, f(xn) = yn .

2

Esta función f(x), cuya regla de correspondencia define al Polinomio Interpolador, no es exactamente la función que buscamos pues podría ser exponencial, logarítmica o de cualquier otro tipo, pero sirve para calcular aproximadamente otros valores desconocidos de las variables, especialmente si se encuentran próximos a los valores conocidos xi. Entonces interpolar es utilizar el polinomio interpolador para calcular valores desconocidos de la función que se encuentran entre otros conocidos, y extrapolar es usar tal polinomio para calcular valores fuera del intervalo de los conocidos (es decir, usarlo con valores mayores que el más grande de las xi conocidas, o menores que el más pequeño de éstas). La interpolación es un método fiable para calcular valores aproximados de la función desconocida, pero la extrapolación puede dar resultados muy distintos de los reales. 3

Interpolación de grado 0: El caso más trivial es cuando solo conocemos un dato (x0,y0). Podemos decir que la función desconocida es parecida a la función constante f(x)=y0 (solo cerca de x0 ).

Interpolación Lineal, o de grado 1: Si se conocen dos parejas de datos (x0,y0) y (x1,y1), se puede calcular una función lineal (polinomio interpolador de grado 1).

f (x) = y = mx + n f(x0) = y0 , f(x1) = y1 . Su gráfica es una recta que pasa por los puntos de coordenadas (x0, y0) y (x1, y1). Se deben calcular que cumpla

los números m y n resolviendo el sistema 4

y0=mx0+n

,

y1=mx1+n

por cualquier método, y sustituirlos en la fórmula de f(x). También es posible usar la fórmula para calcular la pendiente de la recta dados dos puntos: m= y1−y0 /(x1−x0) y sustituir su valor en la ecuación y = m (x – x0 ) + y0. Observación: Primero calculamos f(x) (Polinomio Interpolador) para luego interpolar o extrapolar.

5

Ejemplo 1.

En un negocio recién abierto, la primera semana hubo 150 clientes que supusieron unos ingresos de 3600 soles, y la segunda semana 200 clientes que supusieron ingresos de 5600 soles. a) Hallar la función de interpolación lineal que relaciona los ingresos (y) con el número de clientes (x). b) ¿Cuántos ingresos generarían 190 clientes? c) ¿Cuántos clientes se necesitarían para generar 7000 soles de

ingresos?

6

Solución: Tenemos dos parejas de datos clientes-ingresos , (x, y): (150, 3600) y (200, 5600). a) Calculamos

f (x) = y = mx + n 3600=150m+n 5600=200m+n 2000= 50m → m= 2000/ 50 =40

sustituyendo este valor, 3600=150⋅40+n → n=−2400

Por lo tanto, f(x)=40 x−2400 b) Interpolando: f(190) = 40⋅190−2400 = 5200 . Por lo tanto, 190 clientes supondrían unos ingresos de 5.200 soles. 7

c) f (x)=7000 → 40x − 2400 = 7000 → x = 7000 + 2400 / 40 = 235 Por lo tanto, extrapolando, harían falta 235 clientes para generar unos ingresos de 7,000 soles. Interpolación Cuadrática, o de grado 2: Con tres pares de datos, (x0, y0), (x1, y1) y (x2, y2) es necesario calcular una función cuadrática (cuya fórmula es un polinomio de segundo grado, con una parábola por gráfica), esto es, f (x) = y = ax2 + bx + c para ello hay que hallar a, b y c resolviendo el sistema: y0 = ax02 + bx0 + c,

y1= ax12 + bx1 + c,

y2 = ax22 + bx2 + c 8

y sustituir las soluciones en la fórmula de f(x). Entonces, se usa la función para interpolar o extrapolar valores desconocidos.

Observación: El sistema se simplifica mucho si uno de los xi es 0, porque entonces se obtiene directamente c en la ecuación que corresponde a ese dato. Si los datos xi son años, es recomendable suponer que el dato menor es el año 0, y el resto calcularlos en la nueva escala temporal. En otro tipo de datos se debe valorar si conviene o no hacer el cambio de variable que iguala a 0 uno de los datos (y cambian consecuentemente todos los demás), porque es posible cometer errores de interpretación.

9

Ejercicio:

Solución:

10

11

12

Observación:

13

Interpolación de grado n :

14

15

Algunas consideraciones:

i)

a.-

b.c.-

16

i)

ii)

Nota:

17

Observación: Por otra parte es evidente que la función interpoladora debe ser fácil de evaluar, derivar e integrar, dependiendo del tipo de funciones que se consideren, existen varios tipos de interpolación, como se señaló anteriormente como pueden ser : polinómica, trigonométrica, por funciones spline, racionales y exponenciales. Trataremos en primer lugar la Interpolación de Lagrange que es de tipo polinomial. El siguiente resultado implica que existen polinomios que se aproximan a cualquier función continua.

18

Codificación en Matlab Sea polinomio 𝑃 𝑥 = 𝑎𝑛 𝑥 𝑛 + 𝑎𝑛−1 𝑥 𝑛−1 + ⋯ + 𝑎1 𝑥 + 𝑎0 La sintaxis para P en Matlab es: p=[𝑎𝑛 , 𝑎𝑛−1 , … , 𝑎1 , 𝑎0 ] Como ejemplo, escriba el polinomio: 5𝑥 4 − 3𝑥 2 + 6𝑥 − 7: >>p=[5 0 -3 6 -7]

Funciones útiles para manejar polinomio: polyval(pol,x): esta función permite evaluar x en el polinomio definido en el array pol. roots(pol): calcula las raíces del polinomio definido en pol. pol=conv(p1,p2): multiplica los polinomios p1 y p2 y lo asigna a pol. [polq,polr]=deconv(pol1,pol2): es el proceso contrario a conv, efectúa la división de pol1 entre pol2, además debe cumplirse la relación: pol1=pol2*pol+polr, donde polr es el polinomio residuo. 19

p=poly(r): p es un polinomio que se obtiene a partir de sus raíces definidas en el array r. pol=polyfit(datox,datoy,n): esta función construye un polinomio de grado n, dicho polinomio viene definido por pol; la construcción de dicho polinomio es llevada a cabo mediante la técnica de mínimos cuadrados empleando las coordenadas (𝑥𝑖 , 𝑦𝑖 ) AJUSTE DE CURVAS

La aproximación por ajuste es una técnica diferente a la de interpolación, prevaleciendo en ella la visualización estética en el sentido de que nuestro polinomio no oscile demasiado como podría ocurrir con aquellas de características interpolantes, a la par que en el polinomio de aproximación se emplea menos cálculo que en el ajuste. Ejercicio: Dados los siguientes puntos: (0,18), (1,20), (2,12), (3,0), (4,-10), (5,-12), (6,0), (7,32), (8,90), (9,180), (10,308). Efectúe un ajuste lineal y cuadrático mostrando las aproximaciones para x=3.1 y x=3.75 empleando los polinomios involucrados, luego muestre las respectivas gráficas. Solución:

20

datox=linspace(0,10,11); datoy=[18,20,12,0,-10,-12,0,32,90,180,308]; tabla=[datox',datoy'] #polinomio de grado 1 poln1=polyfit(datox,datoy,1); x=linspace(-4,14,100); aproxpoln1=polyval(poln1,x); #polinomio de grado 2 poln2=polyfit(datox,datoy,2); x=linspace(-4,14,100); aproxpoln2=polyval(poln2,x); #GRAFICAS plot(datox,datoy,'o') hold on plot(x,aproxpoln1,'r') plot(x,aproxpoln2,'b') #APROXIMACIONES x1=3.1; x2=3.75; disp('Aproximaciones lineales:')

y1=polyval(poln1,x1); y2=polyval(poln1,x2); [x1,y1;x2,y2] plot(x1,y1,'*g',x2,y2,'*g') disp('Aproximaciones Cuadraticas:'); y1=polyval(poln2,x1); y2=polyval(poln2,x2); [x1,y1;x2,y2] plot(x1,y1,'*r',x2,y2,'*r') legend('Coordenadas dato','Ajuste lineal',... 'Ajuste Cuadratico','Ajuste Lineal',... 'Para x1 y x2','Ajuste Cuadratico',... 'Para x2 y x2') hold off Los resultados son:

؅>> ajuste_lin_y_cuadrat

Aproximaciones lineales: ans =

tabla = 0 1 2 3 4 5 6 7 8 9 10

18 20 12 0 -10 -12 0 32 90 180 308

3.1000 16.5800 3.7500 30.7500 Aproximaciones Cuadraticas: ans = 3.1000 -28.1500 3.7500 -28.3125

>>

Polinomio de Interpolación vía la Matriz de Vandermonde:

25

26

27

28

Teorema: (Unicidad del Polinomio Interpolador)

Demostración:

29

30

31

Ejemplo: Sean los siguientes puntos: (2,5), (4,6), (5,3). Halle el polinomio interpolador que incluya estos puntos usando la fórmula de Lagrange.

32

Solución:

33

Verifique que este polinomio incluye a los 3 puntos dados. Ejemplo: Sean los siguientes puntos: (2,5), (4,6), (5,3). Usando la fórmula de Lagrange, evalúe en x=3, el polinomio de interpolación que incluye a estos 3 puntos dados.

34

35

36

Implementación Computacional

x, f : Puntos dato para la interpolación v: Valor para interpolar, parámetro opcional

37

function [p] = lagrange(x, f, v) n=length(x); %número de puntos dato syms t; %variable simbólica para el polinomio: t p=0; for i=1:n L=1; for j=1:n if i~=j L=L*(t-x(j))/(x(i)-x(j)); %algoritmo Lagrange end end p=p + L*f(i); % polinomio interpolador de Lagrange simbólico end p=expand(p); %simplificación algebraica if nargin==3 %verifica si existe un parámetro adicional t=v; p=eval(p); %evaluación del Polinomio en un valor v end 38

>> x=[2 4 5]; >> f=[5 6 3]; >> p=lagrange(x,f) p= (15*t)/2 - (7*t^2)/6 - 16/3 >> r=lagrange(x,f,4) r= 6.0000 >> r=lagrange(x,f,4.25) r= 5.4687 >> plot(x,f,'o'), grid on >> hold on, >> ezplot(p,[2,5]) >> plot(x,f,'o'), grid on >> hold on, >>ezplot(p,[2,5]) 39

40

Ejemplo: Sea la siguiente nube de datos(xdato,ydato): xdato=[0 0.2 0.5 0.6 0.9 1] ydato=[0 0.1987 0.4794 0.5646 0.7833 0.8415]. a)Use la interpolación de Lagrange para interpolar los 0.71, analíticamente.

valores x=0.3 y

b)Verifique sus resultados implementando el algoritmo respectivo. c)Las coordenadas (xdato,ydato) corresponden a la función sen(x),grafique el polinomio interpolante de Lagrange, la función exacta sen(x) en el intervalo [-π,π] y las coordenadas dato. Use títulos, textos, leyenda, ejes, color y marcas. Solución: a) Se sabe: 𝑓(𝑥) ≈ 𝑝(𝑥)=σ𝑛𝑖=0 𝐿𝑖 (𝑥)𝑦𝑖

𝐿𝑖 𝑥 = ς𝑛𝑗≠𝑖,𝑗=0

𝑥−𝑥𝑗 𝑥𝑖 −𝑥𝑗 41

Calculando analíticamente los 𝐿𝑖 𝑥 : Ejercicio

42

b)

Función base para el Polinomio de Lagrange: function y=fbaselag(x,i,nodos) %x:valor en donde se interpolará %y:valor aproximado según el polinomio interpolante n=length(nodos)-1; y=1; for j=0:n if i~=j y=y.*(x-nodos(j+1))./(nodos(i+1)-nodos(j+1)); end end

43

Función para el Polinomio de Lagrange: function y=plagrange(x,xdato,ydato) n=length(xdato)-1; y=0; for i=0:n y= y + fbaselag(x,i,xdato).*ydato(i+1); end %disp(y)%evita escribir la funcion en la consola end En la consola de comandos: >> plagrange(0.3) %salida cuando se le ha quitado el nombre: y , en la 0.2955 %primera linea del function.

>> plagrange(0.71) 0.6518

44

x=linspace(-pi,pi,50); xdato=[0 0.2 0.5 0.6 0.9 1]; ydato=[0 0.1987 0.4794 0.5646 0.7833 0.8415]; y=plagrange(x,xdato,ydato); plot(x,y,'--'); hold on yexacta=sin(x); plot(x,yexacta,'--k') plot(xdato,ydato,'or') hold off legend('Pol. Interpolante: P(x)','Sol. Exacta: Sen(x)','Coordenadas Dato:') xlabel('X') ylabel('Y') text(-3,0,'Sen(x)') text(-3.3,-1,'P(x)') % title('{\color{red}Interpolacion via:}','{\color[rgb]{.3 .6 .1} El Polinomio de Lagrange}') title({'{\color{red}Interpolacion via:}','{\color[rgb]{.3 .6 .1} El Polinomio de Lagrange}'}) 45

c)

46

Ejercicio: a) Use los nodos 2, 2.75, 4 para obtener analíticamente el segundo polinomio de interpolación de Lagrange para f(x)=1/x. b) Aproxime f(3)=1/3, usando la solución analítica del paso anterior. Implemente la siguiente tabla, para 𝑥 ∈ 0,10 .

47

c) Complemente la parte (b), generando las gráficas de P(x) y f(x). Use las funciones de implementación de gráficos (text, title, leyenda, etc). Solución: a)

𝑃 𝑥 =

1 22

𝑥2 −

35 88

𝑥+

49 44

b) y c) clc; x=0:0.2:10; P=[1/22 -35/88 49/44]; Polx=polyval(P,x); plot(x,Polx) hold on fx=1./x; plot(x,fx,'r') x1=3; Polx1=polyval(P,x1) %Calcula: 𝑃 3 ≈ f(3) = 29/88 . fprintf('==========================\n') fprintf(' x P(x) f(x)=1/x\n') fprintf('==========================\n') fprintf('%1.1f %1.4f %1.4f \n', [x;

Polx ; fx]); 48

fprintf('==========================\n') axis square text(0.1,0.8,'P(x)') text(0.5,2.6,'f(x)') xa=3; y=1/xa; plot(xa,y,'ok') xe=3; y=1/xe; plot(xe,y,'.g') text(2.7,0.6,'P(3) ~ f(3)') legend('P(x)=(1/22)x^2-(35/88)x+(49/44)', 'f(x)=1/x','P(3)=0.3295','f(3)=0.3333') title('{\color{blue}Interpolacion de 2o.grado de Lagrange:}')

49

50

Verifique.

51

Ejercicio: Grafique ambas funciones en una misma ventana. Solución: x=linspace(0,2,100); p=[1.4762 0.24204 1]; y=polyval(p,x); plot(x,y); z=exp(x); hold on plot(x,z,'r'); legend('p(x)= 1.4762x^2 + 0.2420x + 1','f(x)= exp(x)'); xlabel=('X'); ylabel=('Y'); grid on; title('Aprox. de f(x)=exp(x) por un polinomio de 2o.grado') Ejercicio: Incluya en el gráfico el polinomio Interpolador de la matriz de Vandermonde . 52

53

54

55

56

57

58

59

60

61

62

63

Diferencias Finitas

64

Definiciones:

65

66

Ejemplo: Tabule las diferencias finitas correspondientes a los siguientes datos (1.0, 5), (1.5, 7), (2.0, 10), (2.5, 8).

Solución:

67

68

69

Demostración:

70

71

72

73

74

75

76

77

78

79

80

81

Related Documents

Metodos Numericos3
January 2021 1
Metodos Numericos
January 2021 1
Metodos Cuantitativos
March 2021 0
Metodos Numericos
January 2021 1
Metodos Inmunologia
January 2021 1
Metodos Cartas
February 2021 1

More Documents from "olaolaolaola123"

Metodos Numericos3
January 2021 1
El Capacitor
January 2021 1
Ip-3 Ee-635-n.docx
January 2021 1
January 2021 2
Peon-de-rey-94.pdf
January 2021 1