Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador:...

23
Pr´ acticas con ordenador: OCTAVE Sesi´ on 1. Primeros pasos en c´ alculo num´ erico Ingenier´ ıa Civil - Administraci´on y Direcci´ on de Empresas Matemática Departamento de Aplicada Curso 2018-2019 7 de marzo de 2019 1 / 23

Transcript of Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador:...

Page 1: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

Practicas con ordenador: OCTAVESesion 1. Primeros pasos en calculo numerico

Ingenierıa Civil - Administracion y Direccion de Empresas

MatemáticaDepartamento de

Aplicada

Curso 2018-2019

7 de marzo de 2019

1 / 23

Page 2: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

Indice Departamento de Matemática Aplicada

1. Algunas direcciones utiles (con informacion sobre Octave)

2. Errores de redondeo: resultados inesperados

3. Propagacion de errores: procesos iterativos inestables

4. Error por cancelacion: calculo de lımites

5. Primeros pasos de programacion5.1 Los bucles “for”, “while” y “do ...until”5.2 La sentencia condicional “if” (“else” y “elseif”)

6. Primeras graficas6.1 Ejemplos (ejercicios)

7. El metodo de biseccion para la resolucion de ecuaciones no lineales

2 / 23

Page 3: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

1. Algunas direcciones utiles (con informacion sobre Octave) Departamento de Matemática Aplicada

I A.M. Delgado, J.J. Nieto, A.M. Robles y O. Sanchez. Metodos numericosbasicos con Octave. Editorial Tecnica Avicam, Granada, 2016.

https://github.com/oscarsanchezromero/Calculo-Cientifico-Octave

I A. Quarteroni, F. Saleri. “Calculo cientıfico con MATLAB y Octave”. Springer,2006. (¿Nivel avanzado?)

I S.H. Carbonetto. “Tutorial de Octave”. (Graficos: Cuadro 1, pagina 13)http://materias.fi.uba.ar/6625/TPs/Tutoriales/Tutorial%20Rapido%20de%20Octave.pdf

I F.J. Pena. “Introduccion al Octave”. (General)http://www.slideshare.net/franpenabra/introccpresentacion-octave

I Comandos basicos de Octave (3.0). (Para consulta rapida)http://www.educa2.madrid.org/web/educamadrid/principal/files/

34b0304e-7fce-4b92-875e-b0c7711e9926/RECURSOS/CURSOS/CIENCIAS/MATEMATICA/

GEOMETRIA/5.1.pdf?t=1352405767458

I Instrucciones para realizar graficos. (Ejemplos utiles)http://octave.sourceforge.net/octave/function/text.html

3 / 23

Page 4: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

2. Errores de redondeo: resultados inesperados (1) Departamento de Matemática Aplicada

ObservacionI Cuando hacemos cuentas con un ordenador algunas propiedades de

las operaciones con numeros pueden dejar de ser validas.

EjemploConsideremos a = 10−9.

I Calcula (1 + a) − 1 , 1 + (a− 1) y 1 + a− 1.

I Calcula 1+aa − 1

a y (1+a)−1a .

Comenta los resultados obtenidos tras realizar los calculos con la opcion“format short” y con la opcion “format long”.

4 / 23

Page 5: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

2. Errores de redondeo: resultados inesperados (2) Departamento de Matemática Aplicada

ObservacionI Debemos tener en cuenta que distintos ordenadores (con igual

programa y version) pueden dar distintos resultados en lasoperaciones anteriores.

I Esto se debe a diversos factores (base de trabajo, numero de cifrasempleadas al operar, redondeo y/o truncamiento usados, etc.) queprovocan pequenas diferencias pero que pueden dar lugar a grandeserrores.

Ejemplo

I Calcula 1 − 0.2 − 0.2 − 0.2 − 0.2 − 0.2,1− (0.2 + 0.2)−0.2−0.2−0.2 y 1− (0.2 + 0.2)− (0.2 + 0.2 + 0.2).

I Calcula sen(π), cos(π), sen(π2 ) y cos(π

2 ).

5 / 23

Page 6: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

3. Propagacion de errores: procesos iterativos inestables Departamento de Matemática Aplicada

I Consideremos el siguiente script.

x=1;

y=1./3;

for i=1:20

z=10.*y./3-x;

t1=1./3.∧(i+1);

t2=(1./3).∧(i+1);

disp([z,t1,t2,z-t1,t1-t2]);

x=y;

y=z;

end

I Teoricamente, en cada paso, los valores obtenidos para t1,t2,z hande ser iguales entre sı.

6 / 23

Page 7: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

4. Error por cancelacion: calculo de lımites (1) Departamento de Matemática Aplicada

ObservacionI Cuando solo conocemos una funcion por los valores que toma en su

dominio, una manera de determinar su derivada es utilizando laderivacion numerica.

I La derivacion numerica consiste es tomar como derivada los valoresdados por el cociente incremental cuando el denominador es“pequeno”. Es decir,

f ′(x) ≈ f (x + h) − f (x)

h.

I Sin embargo, la division por valores pequenos y la diferencia devalores proximos produce resultados no deseables.

7 / 23

Page 8: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

4. Error por cancelacion: calculo de lımites (2) Departamento de Matemática Aplicada

Ejemplo

I Examinemos la situacion descrita con el siguiente script.

x=pi;

for i=1:30

h=10.∧(-i);

der=(sin(x+h)-sin(x))./h;

disp([i,der]);

end

I Repite el script con x=0 y con x=pi/2.

I Repite el script con la funcion coseno y los valores x=0, x=pi/2,x=pi.

8 / 23

Page 9: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

5.1. Los bucles “for”, “while” y “do ...until” (1) Departamento de Matemática Aplicada

Por medio de un ejemplo veremos como funcionan una serie desentencias muy utiles a la hora de realizar algoritmos.

EjemploSumemos los cuadrados de los cien primeros numeros enteros positivos.

I Un script que usa el bucle “for”.

suma=0;

for k=1:100

suma=suma+k.∧2;

end

disp(suma)

9 / 23

Page 10: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

5.1. Los bucles “for”, “while” y “do ...until” (2) Departamento de Matemática Aplicada

Ejemplo (continuacion)

I Un script que usa el bucle “while”.

suma=0;

k=1;

while k<=100

suma=suma+k.∧2;

k=k+1;

end

disp(suma)

10 / 23

Page 11: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

5.1. Los bucles “for”, “while” y “do ...until” (3) Departamento de Matemática Aplicada

Ejemplo (continuacion)

I Un script que usa el bucle “do ...until”.

suma=0;

k=1;

do

suma=suma+k.∧2;

k=k+1;

until k>100

disp(suma)

I ¿Como modificarıas los tres scripts anteriores para sumar loscuadrados de los cien primeros numeros enteros positivos pares?

11 / 23

Page 12: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

5.2. La sentencia condicional “if” (“else” y “elseif”) (1) Departamento de Matemática Aplicada

EjemploVamos a construir tres funciones. ¿Que hace cada una?

I Un script que solo emplea el comando “ if”.

1;

function y=f1(x)

if x>0

y=x.∧2-5;

end

end

12 / 23

Page 13: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

5.2. La sentencia condicional “if” (“else” y “elseif”) (2) Departamento de Matemática Aplicada

Ejemplo (continuacion)

I Un script que emplea el comando “ if”+“else”.

1;

function y=f2(x)

if x>0

y=x.∧2-5;

else

y=x-5;

end

end

13 / 23

Page 14: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

5.2. La sentencia condicional “if” (“else” y “elseif”) (3) Departamento de Matemática Aplicada

Ejemplo (continuacion)

I Un script que emplea el comando “ if”+“else”+“elseif”.

1;

function y=f3(x)

for i=1:length(x)

if x(i)>0

y(i)=x(i).∧2+x(i);

elseif x(i)<-2

y(i)=x(i)+2;

else

y(i)=0;

end

end

end

14 / 23

Page 15: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

5.2. La sentencia condicional “if” (“else” y “elseif”) (4) Departamento de Matemática Aplicada

ObservacionI En el tercer script del ejemplo, para f3 hemos usado argumentos

vectoriales. Esto nos permitira hacer la grafica correspondientedirectamente.

I Por contra, tal como se han construido f1 y f2, no es posible usardirectamente la orden plot para representarlas (salvo que hagamoslo que se muestra en 6.1).

15 / 23

Page 16: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

6. Primeras graficas (1) Departamento de Matemática Aplicada

ObservacionI Cuando se dibujan graficas con Octave en realidad se pintan pares

de puntos.

I Puede parecer que no es ası. En efecto, al ejecutar la orden

fplot(’sin(x)’,[0,pi]);

aparece la grafica del seno. En este caso, el programa decide lospuntos que pinta.

16 / 23

Page 17: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

6. Primeras graficas (2) Departamento de Matemática Aplicada

Ejemplo

I El siguiente script representa que hace Octave.

1;

function y=f(x)

y=1./(1+25*x.∧2);

end

z=linspace(-1,1,100);

plot(z,f(z))

I Con ayuda de las referencias (en particular, la seccion 6 del tutorialde S.H. Carbonetto), haz que la grafica del script anterior cambie decolor, anchura, tipo de marcador, etc.(Cuidado con las opciones validas solo para Matlab).

17 / 23

Page 18: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

6. Primeras graficas (3) Departamento de Matemática Aplicada

EjemploI Veamos como representar la grafica de una funcion a trozos sin emplear

argumentos vectoriales

1;

function y=f(x)

if x>2

y=x.∧2+2;else

y=x.∧3-2;end

end

function y=g(x)

y=0;

end

z=linspace(-8,8,100);

for i=1:length(z)

fz(i)=f(z(i));

gz(i)=g(z(i));

end

plot(z,fz)

hold on

plot(z,gz)

hold off

18 / 23

Page 19: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

6. Primeras graficas (4) Departamento de Matemática Aplicada

Ejemplo (continuacion)I La funcion g(x) se ha introducido para representar el eje de abscisas.

I Usando plot(gz,z) podrıamos representar el eje de ordenadas.

19 / 23

Page 20: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

6.1. Ejemplos (ejercicios) Departamento de Matemática Aplicada

I Cuando hicimos uso de las sentencias if, else y elseif, secomento que hay problemas para dibujar las graficas de funcionesdefinidas por partes.

I Con los siguientes ejercicios se pretende eliminar tales problemasmediante varias alternativas.

1) Intenta dibujar las graficas de f1 y f2. Como posibles vıas, intentaI pintar cada trozo por separado y luego agruparlos;

I crear listas para cada trozo y pintarlos en una unica grafica.

(Pueden ser utiles los comandos hold on y hold off, tal como se han usado en el

ejemplo de la pagina 18/23).

2) Dibuja la grafica de f3.

3) Modifica los scripts de f1 y f2 para poder hacer su graficadirectamente (es decir, tal como se ha hecho con f3).

20 / 23

Page 21: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

7. El metodo de biseccion para la resolucion de ecuaciones no lineales (1) Departamento de Matemática Aplicada

ObservacionI Para aproximar los ceros de una funcion (continua) podemos emplear el metodo

de biseccion (consecuencia del Teorema de los ceros de Bolzano).

EjemploI Un primer esbozo de la implementacion de este metodo es el siguiente script.

1;

function y=f(x) y=x.∧2-3; end

a=0; b=2;

for i=1:20

c=(a+b)./2;

if f(a).*f(c)<0

b=c;

else a=c;

end;

printf("la iteracion %i es igual a %.8f \n",i,c);end

I Para entender el funcionamiento de %i, %.8f, \n y comando similares, puedesconsultar el archivo “comandostablas.m”.

I Se puede emplear “fprintf ” en lugar de “printf ” (la diferencia entre estasdos ordenes queda fuera del alcance de esta asignatura).

21 / 23

Page 22: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

7. El metodo de biseccion para la resolucion de ecuaciones no lineales (2) Departamento de Matemática Aplicada

ObservacionI Hay que tener cuidado al definir las condiciones en los bucles.

EjemploI En el siguiente script hay un error. ¿Donde?

1;

function y=f(x) y=7.*x-1.4; end

a=0; b=0.8;

for i=1:20

c=(a+b)./2;

if f(c)==0

printf("hemos encontrado la solucion exacta");

elseif f(a).*f(c)<0

b=c;

else a=c;

end;

printf("la iteracion %i es igual a %.8f \n",i,c);end

I ¿Como arreglarıas el script?

I Realiza las mejoras que consideres oportunas en el anterior script.

22 / 23

Page 23: Prácticas con ordenador: OCTAVE Sesión 1. …CivilADE)/Sesion1_beamer.pdfPr acticas con ordenador: OCTAVE Sesi on 1. Primeros pasos en c alculo num erico Ingenier a Civil - Administracion

Departamento de Matemática Aplicada

Departamento de Matematica Aplicada. Universidad de Granada

Licencia Creative Commons 3.0 Espana.

http://creativecommons.org/licenses/by-nc-sa/3.0/es/

23 / 23