Sei sulla pagina 1di 58

Copyright

c 2014 Marlo Carranza

Publicado por Marlo Carranza

book-website.com

Material de consulta, para los estudiantes del curso de Métodos Numéricos de acuer-
do al sílabus diseñado por la Facultad de Ciencias e Ingeniería de la Universidad de
ciencias y Humanidades.

impresión, Marzo 2014


Universidad Nacional Mayor de San
Marcos
Facultad de Ciencias Matemáticas

Manual de Métodos Numéricos


con implementación en Matlab, Addi y Addi plot

Profesor
Marlo Carranza Purca

Lima - Perú
Marzo -2014

i
Índice general

1. Introducción al Matlab 2

1.1. Operaciones con variables . . . . . . . . . . . . . . . . . . . . . . . . 2

1.1.1. Formato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.1.2. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.1.3. Algunas funciones matemáticas elementales . . . . . . . . . . 6

1.2. Números Complejos . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3. Introducción al Álgebra lineal numérica . . . . . . . . . . . . . . . . . 7

1.3.1. Diversos tipos de matrices y propiedades . . . . . . . . . . . . 8

1.3.2. Vectores y matrices con Matlab . . . . . . . . . . . . . . . . . 10

1.3.3. Vectores y matrices por bloques . . . . . . . . . . . . . . . . . 16

1.3.4. Algo de sistemas de ecuaciones . . . . . . . . . . . . . . . . . 19

1.4. Gráficos con MatLat . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.4.1. Gráficos en coordenadas cartesianas . . . . . . . . . . . . . . . 20

1.4.2. Gráfico de sucesiones . . . . . . . . . . . . . . . . . . . . . . . 27

1.5. Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

1.5.1. Evaluación de un polinomio . . . . . . . . . . . . . . . . . . . 30

1.5.2. Producto de polinomios . . . . . . . . . . . . . . . . . . . . . 31

1.5.3. División de polinomios . . . . . . . . . . . . . . . . . . . . . 31

1.5.4. Raíces de polinomios . . . . . . . . . . . . . . . . . . . . . . . 32

ii
iii

1.5.5. Derivada e integral de un polinomio . . . . . . . . . . . . . . . 32

1.6. Scripts y funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

1.7. Matemática Simbólica . . . . . . . . . . . . . . . . . . . . . . . . . 35

1.7.1. Ejemplos, cargar funciones y cambiar sus caracteristicas . . . 37

1.8. Reporte con Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1.9. Algunas animaciones con Matlab . . . . . . . . . . . . . . . . . . . . 46

1.10. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Introducción

En las últimas décadas la simulación se ha convertido, por méritos propios, en uno


de los tres pilares sobre los que se avanza en la ciencia (junto con la teoría y la
experimentación). Esto es fruto del aumento espectacular de la capacidad de
cálculo y de la disminución del costo de los ordenadores, pero también del avance
en la formulación de métodos numéricos cada vez más precisos.

Un método numérico consiste en un listado finito de instrucciones precisas


mediante el cual se obtiene casi siempre de manera aproximada, la solución
(solución numérica) de ciertos problemas realizando cálculos aritméticos y lógicos.

Hoy ya existen en el mundo varias empresas comercializando códigos de simulación


e investigadores trabajando para construir modelos numéricos cada vez mas
fiables. Esto se ve reflejado en los avances de las últimas décadas que son
espectaculares, no sólo en precisión, sino también en el tipo de problemas que
ahora el ser humano puede abordar. Pero queda mucho por hacer, la realidad es
extremadamente compleja y los modelos matemáticos y los métodos numéricos que
se emplean se deben ir mejorando aun mucho mas pues el objetivo es que la
simulación sirva para comprender la realidad y para predecir su comportamiento.

Entre otras de las ventajas que nos brindan los métodos numéricos, esta el ahorro
de recursos, por ejemplo, personal dedicados al cálculo, en instalaciones de ensayo,
donde el tiempo de cálculo ha sido tremendo. En segundo lugar, los métodos
numéricos y la simulación, en general, permiten realizar ensayos virtuales y probar
prototipos, incluso en condiciones extremas sin peligro y con un costo reducido. Si
bien la simulación no puede acabar con los estudios teóricos ni con la
experimentación, no cabe duda de que los complementa y nos ayuda a comprender
mejor la naturaleza.

Entonces podemos decir que los métodos numéricos tienen la ventaja de ofrecer
una solución a problemas muy complejos que no pueden resolverse analíticamente,
y en un entorno controlado de difícil manipulación experimental, pero tal vez su
debilidad esta, que es necesaria la capacidad critica para valorar los resultados
numéricos a pesar de que puedan ser muy vistosos y espectaculares hay que elegir
el apropiado pues podríamos llegar a resultados totalmente erróneos.

1
Marlo Carranza Purca
1 Introducción al
Matlab

Durante las últimas décadas, la computadora se ha convertido en una de las


herramientas más útiles de que dispone el científico, investigador, ingeniero y el
estudiante, su aplicación abarca desde la fase de diseño y validación experimental
en un laboratorio, hasta la fase de construcción o producción industrial, debido a
lo cual se hace necesario la aplicación de métodos numéricos mas sofisticados en las
diferentes actividades que mencionadas. En el mercado existen diferentes
herramientas para implementar los diferentes métodos numéricos que se van a ir
presentando, vamos a utilizar Matlab que es una abreviatura de las palabras
Matrix Laboratory, vamos a interactuar con matlab con ayuda de un "manual de
instrucciones"pero es necesario aprender su gramática. En esta introducción vamos
a revisar las principales herramientas que posee MatLab: manejo de variables, el
uso de funciones matemáticas, las operaciones entre arrays y el diseño de gráficas,
esto nos permitirá familiarizarnos de manera mas rápida de su entorno, además
que posibilitara hacer un reconocimiento acerca de las reglas ortográficas y de las
respectivas sintaxis de sus comandos y funciones más importantes.

1.1. Operaciones con variables

MatLab tiene ciertas características que mencionamos a continuación

1. Hace diferencia entre las mayúsculas y las minúsculas en cuanto a los


nombres de las variables, estas pueden empezar siempre con una letra y
pueden constar de hasta 31 letras y números, considerándose al carácter -
como una letra.
2. Si una expresión termina en punto y coma ; se calcula su resultado, pero
no se muestra en pantalla, y si esta se omite, entonces Matlab ejecutara la
expresión y la mostrara en pantalla.
3. El carácter % se utiliza para insertar comentarios, todo lo que sigue (en la
misma línea) es ignorado.
4. Se pueden recuperar comandos anteriores navegando con las flechas ↑ y ↓.

2
Marlo Carranza Purca
1.1. Operaciones con variables 3

5. clc , borra el contenido de la ventana de trabajo.

6. clear , borra todas las variables del espacio de trabajo, pero no la ventana de
trabajo.

7. clear x,y, borra solo las variables x, y del espacio de trabajo, pero no la
ventana de trabajo.

8. Exit , Se usa para salir de Matlab.

Además hay algunas variables y constantes especiales que se utilizan por defecto:

1. ans: Es la variable que se utiliza en los resultados. En la operación siguiente


se puede recuperar este resultado volviendo a escribir ans. Esta variable se
modifica en cuanto haya un nuevo resultado.

2. pi: El número π. ( No hay una variable para el número e , pero se podría


definir e = exp(1) ) .

3. i ó j representan la unidad imaginaria −1 .

4. eps: Es el número más pequeño que utiliza el ordenador.

5. Inf: Infinito, aparece si hacemos 1/0 .

6. NaN: Mensaje de error (Not a Number), por ejemplo, 0/0 .

Las operaciones aritméticas entre escalares son efectuadas de manera natural


usando los siguientes símbolos para las respectivas operaciones:

Adición + Potenciación ^
Multiplicación * División /

Marlo Carranza Purca


1.1. Operaciones con variables 4

Ejemplo 1.

1. >> 3+4 ans =


ans = 17
7
8. >> pi
2. >> 4*8 ans =
ans = 3.1416
32
9. Comprueba la diferencia entre
3. >> 5^2 las operaciones
ans = 4/4 + 6, 4/(4 + 6)
25 3^5*2 , 3^(5*2)
veamos
4. >> 1/0
Warning: Divide by zero. a) >> 4/4+6
ans = ans =
Inf 7
b) >> 4/(4+6)
5. 0/0 ans =
Warning: Divide by zero. 0.4000
ans =
c) >> 3^5*2
NaN
ans =
6. >> x=3+4 486
x = d ) >> 3^(5*2)
7 ans =
59049
7. >> x+10

1.1.1. Formato

En general los resultados numéricos se muestran con cuatro cifras decimales,


aunque todas las operaciones se ejecutan en doble precisión. Si se desean las salidas
con toda la precisión disponible se debe insertar la instrucción format long ; a
partir de este punto todos los resultados se mostraran con 16 cifras significativas.
La instrucción, format rat , devuelve a partir de este lugar los resultados como la
division de dos enteros.
Además, format short , devuelve la forma estándar de los cuatro decimales.

Marlo Carranza Purca


1.1. Operaciones con variables 5

Ejemplo 2.

Veamos como representa Matlab el número π

>> format long ; pi >> format rat; pi


ans = ans =
3.14159265358979 355/113

>> format short; pi >> format;pi


ans = ans =
3.1416 3.1416

1.1.2. Variables

Matlab no necesita la declaración de variables como en un lenguaje tradicional. En


principio todas las variables son reales, basta hacer uso de ellas para que queden
declaradas.

Ejemplo 3.

1. >> a=1; b=2; c=3; 2. Dadas las variables y sus res-


>> a+b pectivos contenidos, a = 2, b =
ans = 5 y c = 10, calcule la expresión:
3
10c
E = 4ab2 −
>> a*c b
ans =
veamos:
3

>> a+b+c >> a=2;


ans = >> b=5;
6 >> c=10;
>> E=4*a*b^2-10*c/b
>> a*b*c E =
ans = 180
6

Matlab no hace diferencia si las variables son enteras reales o de doble precisión,
como suele ocurrir en otros lenguajes de programación como Pascal, C, C ++ o
Java entre los más destacados.

Marlo Carranza Purca


1.2. Números Complejos 6

1.1.3. Algunas funciones matemáticas elementales

Matlab tiene definidos diversos tipos de funciones, todas ellas clasificadas según el
objeto o tipo de problema a resolver, los detalles de estas se irán desarrollando en
el transcurso de las siguientes páginas. Veamos una lista de las funciones
elementales mas usadas.

Función Matlab Función Matlab Función Matlab



|x| abs(x) ex exp(x) x sqrt(x)
sen(x) sin(x) cos(x) cos(x) tan(x) tan(x)
2z pow2(x) loge (x) log(x) log10 (x) log10(x)
signo(x) sign(x) arcos(x) acos(x) arctan(x) atan(x)
senh(x) sinh(x) cosh(x) cosh(x) tanh(x) tanh(x)
arcsinh(x) asinh(x) arc cos(x) acosh(x) arctanh(x) atanh(x)

Ejemplo 4.

Verificar la identidad trigonométrica:

sen2 x + cos2 x = 1

Nuestro código, sería:

>> x=0; r = 1
>> r=sin(x)^2+cos(x)^2
r =1 >> x=25;
>> r=sin(x)^2+cos(x)^2
>> x=1; r =1
>> r=sin(x)^2+cos(x)^2

1.2. Números Complejos

Cuando se trata de números complejos de la forma z = a + bi, donde a y b son


reales, Matlab pone a disposición las siguientes operaciones que reducen las
operaciones:

Función Matlab Función Matlab


|z| abs(z) Imag(z) imag(z)
Ángulo de z angle(z) Re(z) real(z)
z conj(x)

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 7

Ejemplo 5.

Dado el número complejo z = 3 + 4i , calcule:

z, Imag(z), Ángulo(z), y |z|

Veamos, se tiene :

>> z=3+4*i 3
z =
3.0000 + 4.0000i >> Anglo=angle(z)
Anglo =
>> conjugada=conj(z) 0.9273
conjugada =
3.0000 - 4.0000i >> modulo=abs(z)
modulo =
>> Real=real(z) 5
Real =

Ejemplo 6.

Calcule el valor de la siguiente expresión: w = |z|eθi , si z = 1 + i


además, verifique si w = z.
veamos :

>> z=1+i
z =
1.0000 + 1.0000i

>> theta=angle(z);
>> modulo=abs(z);
>> w=modulo*exp(theta*i)
w =
1.0000 + 1.0000i

1.3. Introducción al Álgebra lineal numérica

En la presente sección se recoge una serie de definiciones y resultados relativos a


matrices, aunque una buena parte de ellos pueden ser conocidos, el hecho que esta
recopilación busca fijar la notación utilizada, refrescar la memoria y tener a la
mano resultados que vamos a requerir más adelante.

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 8

1.3.1. Diversos tipos de matrices y propiedades

En todo lo que sigue, K denota el cuerpo R de los números reales o C el cuerpo de


los complejos, V = Kn , n ∈ N.

Definición 1.

Una matriz es una colección de elementos aij ∈ K, dispuestos de la siguiente


forma  
a11 a12 · · · a1n
 a21 a22 · · · a2n 
A =  ..
 
.. .. .. 
 . . . . 
am1 am2 · · · amn
es una, matriz real si K = R y compleja cuando K = C .
La matriz A tiene m filas y n columnas, es decir tiene dimension m × n en
particular:

1. Un vector columna es una matriz de dimension m × 1

2. Un vector fila es una matriz de dimension 1 × n

Notación 1.1.

1. Una matriz A de dimensión m × n de elementos aij ∈ K se denota


A = (aij )m,n
i,j=1 (i fila, j columna ). También denotaremos por (A)ij o A(i, j)
el elemento de de A que ocupa la fila i y la columna j

2. Escribiremos la matriz A = (a1 , a2 , . . . , an ) donde ai ∈ Km representa la


columna i-ésima de A para i = 1, 2, . . . , n

3. El conjunto de todas las matrices de orden o dimension m × n con elementos


en K con las operaciones de adición y multiplicación por un escalar lo
denotaremos como Mm×n

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 9

Definición 2.

Si A = (aij )m,n m,n


i,j=1 y B = (bij )i,j=1 son matrices de dimensión m × n

1. Se define la suma de matrices como la matriz

A + B = (cij )m,n
i,j=1 con cij = aij + bij

y el producto de una matriz A = (aij )m,n


i,j=1 por un escalar λ ∈ K como
la matriz
λA = (λaij )m,n
i,j=1

2. La matriz AT = (aji )n,m


j,i=1 se denomina matriz transpuesta de A.

3. Una matriz A se denomina matriz cuadrada o matriz de orden n.


Diremos que una matriz es rectangular si no es cuadrada.

4. A es simétrica si A = AT .

5. La matriz A ∈ Mn es no singular si existe una matriz B ∈ Mn , tal


que AB = BA = I, la matriz B es llamada la inversa de A y se denota
B = A−1 .Las matrices no inversibles son singulares.

6. Una matriz A ∈ Mn es no singular si det(a) 6= 0


 
a y
7. Si det(A) 6= 0 , la matriz inversa de A = es A−1 =
 
x b

b −y 
−x a
det(A)

8. La Adjunta de una matriz A ∈ Mn es la traspuesta de la matriz que


resulta de sustituir cada uno de sus elementos por su cofactor, y se
denota adj(A)
adj(A)
9. Si det(A) 6= 0 se cumple que A−1 = |A|

10. A es ortogonal si AT = A−1 es decir AAT = AT A = I


 
a11 0 · · · 0
 0 a22 · · · 0 
A = diag(aij ) = diag(a11 , a22 , . . . , ann ) =  ..
 
.. . . .
. ..

 . . 
0 0 · · · ann

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 10

Definición 3.

Si A = (aij )m,n m,n


i,j=1 y B = (bij )i,j=1 son matrices de dimensión m × n

1. La matriz A es triangular superior (respectivamente inferior si ) aij = 0


para i > j (respectivamente i < j )

2. La matriz A es diagonal si aij = 0 cuando i 6= j, en este caso se denota

3. La matriz A es de diagonal estrictamente dominante si |aii | >


Σnj=1,j6=i |aij | para i = 1, 2, . . . n

4. Se denomina traza de la matriz A al número tra(A) = Σni=1 aii

Teorema 7.

Sean A, B matrices cuadradas de la misma dimension, se cumple

1. tra(AB) = tra(BA)

2. tra(A + B) = tra(A) + tra(B)

3. det(AB) = det(BA) = det(A) det(B)

4. det(λA) = λn det(A)

1.3.2. Vectores y matrices con Matlab

Una de las cualidades de MatLab es el manejo de los vectores y las matrices,


veremos algunos ejemplos

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 11

Ejemplo 8.

1. Definiremos el vector fila 2. A continuación tenemos otros


formatos para definir vectores.

>> a=[1 2 3 4 5 ]
>> u=1:5
a =
u =
1 2 3 4 5
1 2 3 4 5
para indicar la n-ésima compo-
nente de vector escribimos 3. Usaremos linspace para gene-
rar un vector
>> a(3)
ans = >> a=linspace(1,5,5)
3 a =
1 2 3 4 5
Observe que se muestra el arre-
glo a como un vector fila con
5 columnas, además cada ele- 4. Pero también se pueden definir
mento puede ser separado por vectores columna
comas o espacios como el ejem-
plo mostrado. >> v=[1; 2; 3; 4; 5 ]
Si usted desea ver los primeros v =
m elementos del vector a escri- 1
bimos 2
3
>> a(1:3) 4
ans = 5
1 2 3

Matrices

Para generar matrices tenemos que introducir vectores fila de la misma dimensión,
fila por fila, se usa el punto y coma ; para separar las filas.

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 12

Ejemplo 9.
 
1 2 3 4
Generemos las matrices usando MatLab. A =  5 6 7 8 
  9 10 11 12
0 2 1 4
B =  5 0 1 0  tenemos
2 0 3 7
>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12]
A =
1 2 3 4
5 6 7 8
9 10 11 12

>> B=[0 2 1 4; 5 0 1 0 ; 2 0 3 7]
B =
0 2 1 4
5 0 1 0
2 0 3 7

Operaciones

Existen en Matlat dos tipos de operaciones aritméticas, las operaciones aritméticas


matriciales, que se rigen por las reglas del Álgebra lineal y las operaciones
aritméticas a elemento, que se realizan elemento a elemento, veamos la tabla de
que describe las operaciones.

Operación Símbolo Operación Símbolo


Suma de vectores y matrices + Resta de vectores y matrices -
Producto de matrices * Multiplicación a elemento .*
Potenciación de matrices ^ Potenciación a elemento .^
Cociente matricial / División a elemento ./
Cociente matricial \ División a elemento .\

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 13

Ejemplo 10.

1. Para generar matrices tenemos >> P=A*B


que que introducir vectores fila P =
de la misma cantidad de com- 2 11 20
ponentes, fila por fila. se usa 5 29 53
punto y coma para separa las 8 47 86
filas.

1 2 3
 >> T=A’ % transpuesta
A= 4 5 6  T =
7 8 9 1 4 7
2 5 8

0 2 4 6
 3 6 9
B= 1 3 5 7 
0 1 2 3 >> PM=A^3 % potencia
PM =
A=[1 2 3; 4 5 6; 7 8 9] 468 576 684
A = 1062 1305 1548
1 2 3 1656 2034 2412
4 5 6
7 8 9 >> trace(A) % Traza
ans =
B=[0 2 4; 1 3 5; 0 1 2] 15
B =
0 2 4
3. Determinante de una matriz
1 3 5
0 1 2
D=[1 0 0;0 2 0;0 0 3]
D =
2. Veremos operaciones con ma-
1 0 0
trices
0 2 0
0 0 3
>> S=A+B
>> det(D)
S =
ans = 6
1 4 7
5 8 11
4. Matriz inversa
7 9 11
>> inv(D)
>> EA=2*A ans =
EA = 1.0000 0 0
2 4 6 0 0.5000 0
8 10 12 0 0 0.3333
14 16 18

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 14

Ejemplo 11.

Veamos algunos ejemplos

>> % operaciones de suma y producto


>> suma = A+B >> % transpuesta
suma = >> transpuesta=A’
1 4 4 8 transpuesta =
10 6 8 8 1 5 9
11 10 14 19 2 6 10
3 7 11
>> % suma caso especial 4 8 12
>> casoEspecial=10+suma
casoEspecial = >> % producto de A por B
11 14 14 18 >> Producto= A*transpuesta
20 16 18 18 Producto =
21 20 24 29 30 70 110
70 174 278
110 278 446
>> % prod escalar por matriz
>> escalarmatriz=2*A >> % potencia E*E*E
escalarmatriz = >> potencia=E^3
2 4 6 8 potencia =
10 12 14 16 1 14
18 20 22 24 0 8

Operaciones a elementos

Ahora vamos a revisar las operaciones a elemento y vamos a ver las diferencias con
las operaciones ya vistas, pero antes veamos la tabla con la descripción de las
operaciones que vamos a utilizar.

Operación Símbolo
Multiplicación a elemento .*
Potenciación a elemento .^
División a elemento ./

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 15

Ejemplo 12.

>> E=[1 2 ; 3 4], F=[2 4 ; 8 16]


E = >> % Division a elemento
1 2 >> E./F
3 4 ans =
F = 0.5000 0.5000
2 4 0.3750 0.2500
8 16

>> % Producto a elemento >> %potenciacion a elemento


>> E.*F >> P=E.^3
ans = P =
2 8 1 8
24 64 27 64

Ejemplo 13.

Veamos algunos ejemplos de operaciones a elemento, Dadas las matrices A


yB

>> A=[2 4; 8 10]


A = >> %division a elemento
2 4 >> A./B
8 10 ans =
1.0000 1.3333
>> B=[2 3; 1 1] 8.0000 10.0000
B =
2 3 >> %potencia variable
1 1 >> %a elemento
>> x=[1 2 3]; x.^x
>> %potencia a elemento ans =
>> P=A.^2 1 4 27
P =
4 16 >> %potencia variable
64 100 %a elemento
>> y=[1 2; 3 4]; y.^y
>> %producto a elemento ans =
>> A*B 1 4
ans = 27 256
8 10
26 34

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 16

1.3.3. Vectores y matrices por bloques

Selección de elementos de un vector

V(n) Devuelve en n-ésimo elemento del vector


V([n,m,p]) Devuelve los elementos del vector situados en las posiciones n, m , p
V(n:m) Devuelve los elementos del vector situados entre las posiciones n y m

Ejemplo 14.

>> V=[ 2 4 6 8 10 ]; ans =


2 6 10
% obtenemos 3era componente
>> V(3)
ans = % elementos de 3 a 5 posición
6 >> V(3:5)
ans =
%obtenemos la 1, 3 5 comp. 6 8 10
>> V([1 3 5])

Selección de los elementos de una matriz

A(m,n) Devuelve el elemento (m, n) de la matriz.


A([n,m],[p,q]) Devuelve la submatriz formada por la intersección de las filas
n, m y las columnas p, q.
A(n,:) Devuelve la fila n.
A(:,m) Devuelve la columna m.

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 17

Ejemplo 15.

Sea la matriz

>> A=[1:4; 5:8 ; 9:12 ] 11


A =
1 2 3 4 % obtenemos la submatriz
5 6 7 8 >> A([2,3],[2,3])
9 10 11 12 ans =
6 7
>> % elemento fila 2, col 3 10 11
>> A(2,3)
ans = % obtenemos la submatriz
7 >> A(2:3,2:3)
ans =
>> % extraemos la fila 1 6 7
>> A(1,:) 10 11
ans =
1 2 3 4 % obtenemos la submatriz
>> A(:,2:3)
>> % obtenemos la col 3 ans =
>> A(:,3) 2 3
ans = 6 7
3 10 11
7

Ejemplo 16.

Otras maneras de definir matrices . Matlat tiene otra formas de definir


matices, dado que introducirlas por el teclado no es muy práctico sobre todo
cuando la matriz es muy grande.

A = 7 8 9 3 3 3
1 2 3
4 5 6 >> fil=[A ; B]
7 8 9 fil =
>> B=[1 1 1; 2 2 2; 3 3 3] 1 2 3
4 5 6
7 8 9
>> col=[A B] 1 1 1
col = 2 2 2
1 2 3 1 1 1 3 3 3
4 5 6 2 2 2

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 18

Más matrices y funciones matriciales

zeros(m,n) Matriz nula de orden n × m


ones(m,n) Matriz formada por unos de orden n × m
eye(n) matriz identidad de orden n.
tril(A) Parte triangular inferior de la matriz A
triu(A) Parte triangular superior de la matriz A
strvcat(a,b) Concatenación de las cadenas a y b
magic(n) Matriz mágica
vander(n) Matriz de Vandermonde
inv(A) Matriz inversa de la matriz A.
trace(A) Traza de la matriz A.
[fil,col]=size(A) Nos informa el número de filas y columnas.
length(A) Nos da el mayor valor de la fila o de la columna.
max(A) Proporciona el máximo de los elementos de A.
min(A) proporciona el mínimo de los elementos de A.

Ejemplo 17.

Podemos hacer una tabla usando matrices, para lo cual debemos escribir

s=[1 1]
s=[s;2 4]
s=[s;3 9]
s=[s;4 16]

se obtendrá

s =
1 1
2 4
3 9
4 16

Esta tabla se puede generar de forma automática, digitando

s=[1 1];
for i=2:4
s=[s; i i*i];
end
s

Marlo Carranza Purca


1.3. Introducción al Álgebra lineal numérica 19

Ejemplo 18.

Podemos hacer una tabla usando la instrucción strvcat , para lo cual debe-
mos escribir

s=’Resultados’
s=strvcat(s, num2str(1))
s=strvcat(s, num2str(2))
s=strvcat(s, num2str(3))
s=strvcat(s, num2str(4))

se obtiene la tabla

Resultados
1
2
3
4

Esta tabla la generamos de forma automática, digitando

s=’Resultados’;
for i=1:4
s=strvcat(s, num2str(i));
end
s

1.3.4. Algo de sistemas de ecuaciones

Para resolver sistemas lineales, en estos momentos se tienen muchas herramientas,


pero en esta sección vamos a mostrar una forma de solución usando algunas
funciones sencillas que nos ofrece MatLab.

 2x1 + 3x2 − 4x3 = 3
x1 − x2 + x3 = −0,5
4x1 − 7x2 + 14x3 = 2

vamos a expresar el sistema en la forma


    
2 3 −4 x1 3
 1 −1 1   x2  =  −0,5 
4 −7 14 x3 2
| {z }| {z } | {z }
A X b

Marlo Carranza Purca


1.4. Gráficos con MatLat 20

Ejemplo 19.

Para resolver este sistema de ecuaciones realizamos las siguientes acciones


con Matlab

>> A=[2 3 -4;1 -1 1; 4 -7 14] % solución


>> x=A\b o x=inv(A)*b
A = x =
0.5000
2 3 -4 2.0000
1 -1 1 1.0000
4 -7 14
% Solución con linsolve
>> b=[3 ; -0.5 ; 2 ] >> x= linsolve(A,b)
x =
b = 0.5000
3.0000 2.0000
-0.5000 1.0000
2.0000

1.4. Gráficos con MatLat

MatLat produce gráficos de dos y tres dimensiones, así como contornos y gráficos
de densidad. Se pueden representar los gráficos y listar los datos, permite el control
de colores, sombreado y otras características de los gráficos, también soporta
gráficos animados. Como podemos ver los gráficos producidos por MatLat tienen
muchas muy buenas características, inclusive son portables a otros programas

1.4.1. Gráficos en coordenadas cartesianas

Estos gráficos se tratan como curvas que pasa por pares ordenados, pero
finalmente Matlab lo que hace es trazar una poligonal lineal que pasa por estos
puntos o pares ordenados.

Marlo Carranza Purca


1.4. Gráficos con MatLat 21

Ejemplo 20.

>> x=[7 9 3 1 5 20 5];


>> plot(x)
>>

1. plot(X) Representa los puntos (k, xk ). Si X es una matriz hace lo mismo


para cada columna de la matriz si X es un vector complejo, representa
real(X) frente a imag(X).

2. plot(X,Y) Representa los punto (X, Y ), si X y Y son matrices representa


por filas o columnas los datos de X frente a los datos de Y , dependiendo si el
otro otro vector es fila o columna.

3. plot(X,Y,S) Es la gráfica de plot(X,Y) con las opciones definidas en S,


usualmente S se compone de tres caracteres entre tildas, el primero fija el
color, el segundo fija la etiqueta o marca en el nodo el ultimo fija el carácter
usado en el nodo.

4. plot(X1 , Y2 , S3 , . . . , Xn , Yn , Sn ) : Gráfica de las n curvas superpuestas.

5. hold Permite montar o sobreponer varios gráficos usando una sola ventana.
hold on para activar hold
hold off para desactivar hold

6. zoom Permite ampliar o disminuir el gráfico, se activa con zoom on y se


desactiva con zoom off .

Los caracteres son respectivamente los siguientes.

Marlo Carranza Purca


1.4. Gráficos con MatLat 22

Color Etiqueta trazo


y amarillo . puntos - sólido
m magenta ◦ círculos : a puntos
c cyan x x- marcas -. guiones y puntos
r rojo + signo + -- semisólidos
g verde * estrellas
b azul s cuadrados
w blanco d diamantes
k negro p estrella de cinco puntos

Ejemplo 21.

Graficar f (x) = x + 4x3 sen(x) en el intervalo [0, 5]

>> x=0:0.2:5;
>> y=sqrt(x)+4*x.^2.*sin(x);
>> plot(x,y)

Marlo Carranza Purca


1.4. Gráficos con MatLat 23

Ejemplo 22.

1. Graficar f (x) = ex − x sen(x2 ) + 2 en el intervalo [−3, 3], con trazo de


color rojo, etiquetas cuadradas y linea punteada

>> x=-3:0.4:3;
>> y=exp(x)-x.*sin(x^2)+2;
>> plot(x,y,’rs:’)

2. Graficar las funciones y1 = −x sen(x2 ) + 2; y2 = abs(x) + 4 sen(x);


y3 = x + 0,3x3 colocando el titulo, descripción de los ejes y la leyenda.

>> x=-3:0.4:3;
>> y1=-x.*sin(x.^2)+2;
>> y2=abs(x)+4.*sin(x);
>> y3=x+0.3.*x.^3;
>> plot(x,y1,x,y2,x,y3);
>> title(’Gráfico de tres funciones’);
>> xlabel(’Eje x’);
>> ylabel(’Eje y ’);
>> legend(’-xsen(x^2)+2’,’abs(x)+4sen(x)’,’x+0.3x^3’);

Marlo Carranza Purca


1.4. Gráficos con MatLat 24

Ejemplo 23.

1. Graficaremos la función f (x) = sen(x) conjuntamente con la función


h(x) = cos(x) en el intervalo [−2π; 2π]
Los gráficos respectivos los mostraremos en la misma ventana.

>> x=linspace(-2*pi,2*pi,100);
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,’red’);
>> hold on;
>> plot(x,y2,’blue’);
>> title(’funciones: seno y coseno’);
>> legend(’ seno(x)’, ’cos(x)’);

Gráfica de una función definida a trozos

2. Graficar la función f la cual viene definida a trozos


 2
 x si x < 0,
f (x) = 1 si 0 ≤ x < 1
−x + 2 si 1 ≤ x

Generamos una tabla de valores en el dominio en el que queramos


dibujar la función

>>x=linspace(-2,3,3000);

Y ahora definimos la función, multiplicando cada trozo por el índice


lógico que describa el lugar en el que queremos dibujarlo,

>>y=(x.^2).*(x<0)+1.*((0<=x)&(x<1))+(-x+2).*(1<=x);

Marlo Carranza Purca


1.4. Gráficos con MatLat 25

Ejemplo 24.

Y ahora la dibujamos. Resulta conveniente hacerlo con puntos, asteriscos o


cruces porque, de otra forma, no aparecerán las discontinuidades

>>plot(x,y,’.’),grid on,title(’Función definida a trozos’)

escribimos en matlab el código

>>x=linspace(-2,3,3000);
>>y=(x.^2).*(x<0)+1.*((0<=x)&(x<1))+(-x+2).*(1<=x);
>>plot(x,y,’.’),grid on,title(’Función definida a trozos’)

Obtención de puntos desde el gráfico

Una vez que se ha realizado una gráfica, podemos necesitar conocer las
coordenadas de algunos puntos de la misma. Por ejemplo, el lugar aproximado en
el que están los máximos y mínimos, o si queremos añadir alguna recta o una
poligonal al dibujo. Para conseguir esto, se puede utilizar el comando ginput .
Escribiendo

[x, y] = ginput(N )

Donde N es el número de puntos cuyas coordenadas queremos obtener. Después de


ejecutado el comando habrá que pulsar con el botón izquierdo del ratón sobre el
dibujo tantas veces como puntos hayamos especificado. Las coordenadas de esos
puntos quedarán almacenadas en las variables [x; y].

Marlo Carranza Purca


1.4. Gráficos con MatLat 26

Búsqueda de ceros de una función

La localización de ceros o raíces de una función está ligada a la al cambio de signo


de dicha función, como lo muestra el Teorema Bolzano, el será visto en el Capítulo
3.

Ejemplo 25.

Efectuar una localización gráfica de los ceros de la función f (x) = ex (x2 −1)
en el intervalo [−5; 5]

x=linspace(-5,5,100);
>> y=exp(x).*(x.^2-1);
>> plot(x,y,’b’);

Ahora hacemos un pequeño cambio

x=linspace(-5,5,100);
>> y=exp(x).*(x.^2-1);
>> plot(x,y,’b’);
hold on ;
plot([-5,5],[0,0],’r’);
zoom on

Marlo Carranza Purca


1.4. Gráficos con MatLat 27

1.4.2. Gráfico de sucesiones

Es interesante e importante el manejo de las sucesiones, aquí se muestra ejemplos

Ejemplo 26.

Usando Matlab genere la sucesión delta



1 para n − n0 = 0,
δ(n − n0 ) =
0 para n − n0 6= 0.

Podemos usar el código, donde [n1 ; n2 ] es el intervalo de definición de la


función δ

function [x,n]=delta(n0,n1,n2)
% n0=0;
% n1=0;
% n2=5;
n=[n1:n2]; % intervalo de definición de la sucesión
x=[(n-n0)==0];

Ahora digite este código y obtendrá la respectiva gráfica

delta(0,0,5) % invoca a la función con los datos


stem(n,x) % gráfica
axis([-1,6,-1,2]) % cuadra apropiadamente la gráfica

Marlo Carranza Purca


1.4. Gráficos con MatLat 28

Ejemplo 27.

Genere la sucesión escalón unitario usando Matlab



1 para n ≥ 0,
u(n) =
0 para n < 0.

Podemos usar el código siguiente

function [x,n]=escalon(n0,n1,n2)
% genera u(u-u0) si n1<= n <=n2
n=[n1:n2];
x=[(n-n0)>=0];

Para ver el gráfico respectivo digite este código.

delta(0,-5,5) % invoca a la función con los datos


stem(n,x) % gráfica
axis([-6, 6 , -1 , 2]) % cuadra apropiadamente la gráfica

Marlo Carranza Purca


1.4. Gráficos con MatLat 29

Ejemplo 28.

Genere el gráfico de cada una de las siguientes sucesiones en el intervalo


indicado.

1. x(n) = 2δ(n + 2) − δ(n − 4), −5 ≤ n ≤ 5


Puede usar el siguiente código

n = [-5:5];
x = 2.*delta(-2,-5,5) - delta(4,-5,5);
stem(n,x); title(’sucesión x(n)’)
xlabel(’n’); ylabel(’x(n)’);

2. z(n) = n[u(n) − u(n − 10)] + 10e−0,3(n−10) [u(n − 10) − u(n − 20)], 0 ≤


n ≤ 20 es una secuencia aleatoria con media cero y varianza unitaria.

3. z(n) = {..., 5, 4, 3, 2, 1, 5, 4, 3, 2, 1, 5, 4, 3, 2, 1., ..}; −10 ≤ n ≤ 9

Ejemplo 29.

Dada la sucesión x(n) = 1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1 determine y grafique


las sucesiones

1. x1 (n) = 2x(n − 5) − 3x(n + 4)

2. x2 (n) = x(3 − n) + x(n)x(n − 2)

Ejemplo 30.

Presentamos la función exponencial de valores complejos

x(n) = e(σ+jw0 )n , para todo n

donde σ es llamado la atenuación, w0 es la frecuencia en radianes.


Genere la señal de valores complejos

x(n) = e(−0,1+j0,3)n , −10 ≤ n ≤ 10

y grafique su magnitud, su parte real y su parte imaginaria

Marlo Carranza Purca


1.5. Polinomios 30

1.5. Polinomios

Definición 4 (Polinomio).

Una expresión que tiene la siguiente forma

(1.1) P (x) = a0 xn + a1 xn−1 + · · · + an−1 x + an

es llamada polinomio.

Los polinomios son usados ampliamente en los tópicos de matemáticas y cursos de


naturaleza computacional, como el curso de métodos numéricos esto se justifica
por la facilidad de manipulación y de implementación en cualquier lenguaje de
programación, por ejemplo es fácil de evaluar, derivar e integrar analíticamente
como numéricamente, claro que los polinomios tienen algunos inconvenientes como
la tendencia a oscilar cuando el grado es grande, en Matlab se introduce a través
de sus coeficientes pero considerando el polinomio completo y ordenado en forma
decreciente

Ejemplo 31.

El polinomio P (x) = x3 + 4x2 − 6x + 7 en Matlab se introduce así

>> p=[ 1 4 -6 7 ]

1.5.1. Evaluación de un polinomio

polyval(p,x) evalúa el polinomio P en x P es un vector de longitud n + 1 ,


cuyos elementos son los coeficientes del polinomio

Ejemplo 32.

Vamos a evaluar el polinomio P (x) = x3 + 4x2 − 6x + 7 en diferentes valores


para x

>> sumacoeficientes=polyval(p,1)
sumacoeficientes = 6

>> terminoindep=polyval(p,0)
terminoindep =7

Marlo Carranza Purca


1.5. Polinomios 31

1.5.2. Producto de polinomios

Usamos la instrucción conv(p,q) que multiplica los polinomios p y q

Ejemplo 33.

Cargamos los polinomios p(x) = x + 1 y q(x) = x − 1

>> p =[1 1]
>> q=[1 -1]

% Calculamos p=(x+1)^2=x^2+2x+1
>> binomiocuadrado=conv(p,p)
binomiocuadrado = 1 2 1

% Calculamos la diferencia de cuadrados (x+1)(x-1)


>> difcuadrados=conv(p,q)
difcuadrados = 1 0 -1

% calculamos (x+2)(x+3)
>> a=[1 2];
>> b=[1 3];
>> multiplicamos=conv(a,b)
multiplicamos = 1 5 6

1.5.3. División de polinomios

La instrucción [Q,R]=deconv(D,d) realiza la división de los polinomios D(x)


entre d(x), obteniéndose el cociente Q y el residuo R

Ejemplo 34.

Vamos a dividir el polinomio p(x) = x3 − 1 entre d(x) = x2 + x + 1 para lo


cual hacemos

>> p=[1 0 0 -1];


>> d=[1 1 1];
>> [q,r]=deconv(p,d)
q = 1 -1 % cociente
r = 0 0 0 0 % residuo

Marlo Carranza Purca


1.5. Polinomios 32

1.5.4. Raíces de polinomios

roots(P) calcula las raíces del polinomio P (x)

Ejemplo 35.

Vamos a calcular las raíces del polinomio p(x) = x3 + 6x2 + 11x + 6 para
ello realizamos los pasos siguientes

>> p=[1 6 11 6]

>> raices=roots(p)
raices =
-3.0000
-2.0000
-1.0000

poly(vectorRaiz) Calcula el polinomio de raíces vectorRaiz

Ejemplo 36.

Vamos a calcular el polinomio p(x) cuyas raíces vienen dadas por el vector
vectorRaiz

vectorRaiz=[-3 -2 -1];
>> polinomio=poly(vectorRaiz)
polinomio = 1 6 11 6

1.5.5. Derivada e integral de un polinomio

polyder(p) calcula la derivada de un polinomio

Ejemplo 37.

Calcular la derivada de f (x) = 4x3 − x2 − 3x − 2

>> p=[4 -1 -3 -2];


>> derivada=polyder(p)
derivada =
12 -2 -3

Marlo Carranza Purca


1.5. Polinomios 33

polyint(p) calcula la integral de un polinomio.

Ejemplo 38.

Calculamos la integral de f (x) = 4x3 − x2 − 3x − 2

>> p=[4 -1 -3 -2];format rat


>> integral=polyint(p)
integral =
1 -1/3 -3/2 -2 0

Ejemplo 39.

Graficar el polinomio p(x) = x3 − x

p=[1 0 -1 0];
>> x=linspace(-3,3,200);
>> y=polyval(p,x);
>> plot(x,y)
>> legend(’polinomio x^3-x’)
>> raices=roots(p);
>> hold on
>> plot(raices,zeros(1,3),’or’)
>> legend(’polinomio x^3-x’,’raices’)
>> plot(x,0)

Marlo Carranza Purca


1.6. Scripts y funciones 34

Ejemplo 40.

Graficar el polinomio p(x) = x3 + 6x2 + 11x + 6 para ello realizamos los


pasos siguientes

>> p=[1 6 11 6];


>> x=linspace(-6,2,600);
>> y=polyval(p,x);
>> plot(x,y)
>> legend(’polinomio x^3+6x^2+11x+6’)
>> raices=roots(p);
>> hold on
>> plot(raices,zeros(1,3),’or’)
>> legend(’polinomio x^3+6x^2+11x+6’,’raices’)
>> plot(x,0)

1.6. Scripts y funciones

Creación de archivos tipo m


Hasta el momento solo hemos visto pequeños ejemplos en cuanto al código, pero
para códigos mas complejos donde se tenga que hacer correcciones esta tarea se
tornara muy difícil, MatLab soluciona este problem a creando un archivo de de
texto sin formatear (script ) en el cual se escriben todas las sentencias MatLab
ejecutara todas las ordenes, especificando el archivo respectivo como si hubiesen
sido escritos directamente en la ventana de comandos de MatLat.
Archivos como funciones
MatLat nos proporciona un formato para crear nuestras propias funciones, estas
pueden definirse en un archivo de texto (archivo con extensión M ), que a su vez lo
tenemos a disposición en cualquier instante, están funciones tienen la virtud de
tener argumentos de salida.

Implementación de un programa

Marlo Carranza Purca


1.7. Matemática Simbólica 35

Calcule el valor de la hipotenusa de un triángulo rectángulo a partir de sus dos


catetos

1. Cree un script . Para esto vamos a crear el archivo m, desde el menu de file
seleccionamos new y vamos a crear un nuevo archivo eligiendo la opción m
file luego digitamos el programa

Con [ctrl]+[s] guardamos como hipot.m , ejecución en la ventana de


comandos

>> hipot
cateto a= 3
cateto b= 4
hip =
5

2. Cree una función. Para la función vamos a crear el archivo m,

Con [ctrl]+[s] guardamos como hipotenusa.m , ejecución en la ventana de


comandos

>> h=hipotenusa(3,4)
h =
5

1.7. Matemática Simbólica

Matlab nos ofrece muchas funciones para realizar operaciones y cálculo simbólico
lo cual nos permite por ejemplo factorizar, simplificar expresiones, cálculo de raíces
de polinomios, evaluar límites, derivadas integrales, transformada de Laplace entre
otros muchas opciones muy importantes.

Variables Simbólicas

Marlo Carranza Purca


1.7. Matemática Simbólica 36

Función Descripción
syms x, y, . . . , z Convierte las variables en simbólicas
syms x, y, . . . , z real Convierte las variables en simbólicas con valores reales
syms x, y, . . . , z unreal Convierte las variables en simbólicas con valores no reales
syms Lista de variables simbólicas en el espacio de trabajo
x = syms(0 x0 ) Convierte la variable x en simbólica
pretty(x) Convierte la expresión matemática x en escritura matemática
simplif y(E) Simplifica la expresión E
vpa(E, n) Devuelve la expresión E con n dígitos decimales
poly2sym(A) Devuelve al arreglo A como un polinomio simbólico en x

Ejemplo 41.

Considere las funciones f = 2a3 − 5, g = a2 + 2, h = a3 − 5a2 + 6a, calcular


P =f +g+h

>> syms a
>> f=2*a^3-5;
>> g=a^2+2;
>> h=a^3-5a^2+6a;
>> h=a^3-5*a^2+6*a;
>> w=f+g+h
w =
3*a^3-3-4*a^2+6*a
>> pretty(w)
3 2
3 a - 3 - 4 a + 6 a

Ejemplo 42.

1−x4
Simplificar la expresión 1−x2

>> syms x
>> E=simplify((1-x^4)/(1-x));
>> E=simplify((1-x^4)/(1-x));
>> pretty(E)
3 2
x + x + x + 1

Marlo Carranza Purca


1.7. Matemática Simbólica 37

Ejemplo 43.

>> P=poly2sym([5 1 4 6 7])


p=5*x^4+x^3+4*x^2+6*x+7
pretty(P)
4 3 2
5 x + x + 4 x + 6 x + 7

Ejemplo 44.

Sea la matriz M = [x ed ; ex d]

>> syms x d
>> M=[ x exp(d); exp(x) d];
>> D=det(M)
D =
x*d-exp(d)*exp(x)
>> pretty(D)
x d - exp(d) exp(x)

Función Descripción
subs(f, a) Evalúa la función f en el valor a
subs(f, a, b) Sustituye en la función f el valor de a por el de b
compose(f, g) Función compuesta de f y g
f inverse(f ) Calcula la función inversa
limit(Sn, inf ) Calcula el limite de la sucesión Scuando n tiende a ∞
limit(f, a) Calcula el limite de la función f cuando x tiende al valor de a
limit(f, a) Calcula el limite de la función f cuando x tiende al valor de a
dif f (f, x) o dif f (f ) Calcula la derivada de la función f respecto a x
dif f (f, n) Calcula la n ésima derivada de la función f respecto a x
taylor(f, n, x) Calcula el desarrollo de la serie de Maclaurin de orden n − 1
para la función f en la variable x
taylor(f, n, x, a) Calcula el desarrollo de la serie de Taylor de orden n − 1
para la función f en la variable x alrededor del punto a

1.7.1. Ejemplos, cargar funciones y cambiar sus


caracteristicas

Tenemos varias maneras de introducir una expresión matemática y realizar varias


rutinas como, simplificarlas, derivarlas, integrarlas pero principalmente evaluarlas

Marlo Carranza Purca


1.7. Matemática Simbólica 38

en un número o inclusive en un vector, veamos algunos ejemplos

Ejemplo 45.

Leeremos una función f (x) = 2x4 + 3 como una cadena y luego la transfor-
maremos a una expresión simbólica, para derivarla y evaluarla

>> clear; clc;


>> f=’2*x^4+3’ % f como cadena
>> f=sym(f) % f simbolica
>> fx=diff(f) % fx derivada
>> f=inline(f) % paso a funcion para poder evaluar
>> fx=inline(fx) % paso a funcion para poder evaluar
>> a=f(1)
>> b=fx(1)

La ventaja es que las funciones así definidas, no solo podemos evaluar en un


escalar sin también en un un vector.

Ejemplo 46.

Sea la función f (x) = 13 − x3 , calcule f (2)

>> f=’13-x^3’;
>>p= subs(f,2)
p= 5

Ejemplo 47.

Sea la función f (x) = 13 − x3 , calcule f (2)

>> syms x
>> f=13-x^3 ;
>> p=subs(f,2)
p = 5

Marlo Carranza Purca


1.7. Matemática Simbólica 39

Ejemplo 48.

Vamos a introducir la función f (x) = x + 6 como una función anónima


que sera muy útil cuando trabajamos con function e incluso con la ventana
de trabajo

>> f=@(x)(x+6)
f =
@(x)(x+6)
>> f(2)
ans = 8

Ejemplo 49.

Considere las funciones f (x) = x + 4 y g(x) = x3 + 1 Calcule f (g(x))

>> clear
>> syms x
>> f=x+4;
>> g=x^3+1;
>> h=compose(f , g)
h =
x^3+5

>> h=compose(g , f)
h =
(x+4)^3+1

>> pretty(h)
3
(x + 4) + 1
>> simplify(h)
ans =
x^3+12*x^2+48*x+65

Marlo Carranza Purca


1.7. Matemática Simbólica 40

Ejemplo 50.

2x3 +x2 +4
Considere las funciones f (x) = x3 +6
, calcule lı́mn→∞ f (x)

syms x
f=(2*x^3+x^2+4)/( x^3+6);
limit(f ,inf)
ans =
2

Ejemplo 51.

2
Considere la función f (x) = x4 − cos(x) + e−x , calcular f 0 (x)

>> syms x
>> f=x^4-cos(x)+exp(-x^2);
>> df=diff(f)
df =
4*x^3+sin(x)-2*x*exp(-x^2)

Ejemplo 52.

2 df df 2 2
Considere la función f (x) = sen(xy) + e−x + y 3 , calcular , , df, df
dx dy dxdy dx2

>> syms x y
>> f=sin(x*y)+exp(-x^2)+y^3;
>> dxf=diff(f,x)
dxf =
cos(x*y)*y-2*x*exp(-x^2)

>> dxyf=diff(diff(f,x),y)
dxyf =
-sin(x*y)*x*y+cos(x*y)

>> dxxf=diff(diff(f,x),x)
dxxf =
-sin(x*y)*y^2-2*exp(-x^2)+4*x^2*exp(-x^2)

Marlo Carranza Purca


1.7. Matemática Simbólica 41

Ejemplo 53.

Considere la función f (x) = sen(x).Calcular la serie de Maclaurin de orden


5

>> syms x
>> t5=taylor(sin(x))
t5 =
x-1/6*x^3+1/120*x^5

Ejemplo 54.

Considere la función f (x) = cos(x), calcular la serie de Taylor de orden 3,


alrededor del punto x = 2

>> syms x
>> t3=taylor(cos(x),4,x,2)
t3 =
cos(2)-sin(2)*(x-2)-1/2*cos(2)*(x-2)^2+1/6*sin(2)*(x-2)^3

Función Descripción
int(f, x) Calcula la integral indefinida de de f respecto de
la variable x
int(int(f, x), y) Calcula la integral indefinida de de f respecto de
x luego respecto de y
int(int(f, y), x) Calcula la integral indefinida de de f respecto de
y luego respecto de x
int(· · · int(int(f, x), y) · · · , z) Calcula la integral indefinida respecto de
x, luego de y , · · · hasta la variable z
int(f, x, a, b) Calcula la integral definida respecto de x de
a hasta b
int(int(f, x), a, b), y, c, d) Calcula la integral definida doble para
a≤x≤byc≤y≤d

Marlo Carranza Purca


1.7. Matemática Simbólica 42

Ejemplo 55.

Calcular la integral indefinida de la función f (x) = cos(x),

>> clear
>> syms x
>> f=cos(x);
>> If=int(f,x)
If = sin(x)

Ejemplo 56.

Calcular la integral indefinida de la función f (x) = sen(x),

>> clear
>> syms x
>> h=sen(x);
>> Ih=int(h,x)
Ih = -cos(x)

Ejemplo 57.

Calcular la integral indefinida de la función f (x) = tan(x) − x2 ,

>> clear
>> syms x
>> h=tan(x)-x^3;
Ih=int(h,x)
Ih = -log(cos(x))-1/4*x^4

Ejemplo 58.
RR
Calcular (xy 2 − tan(x))dydx,

>> clear
>> syms x y
>> f=x*y^3-tan(x);
>> If=int(int(f,y),x)
If = 1/8*x^2*y^4+y*log(cos(x))

Marlo Carranza Purca


1.7. Matemática Simbólica 43

Función Descripción
dsolve(0 E 0 ) Resuelve la ecuación diferencial E respecto de
x, por defecto
dsolve(0 E 0 ,0 C 0 ) Resuelve la ecuación diferencial E con valores
iniciales C
dsolve(0 E 0 ,0 C1 , C2 , . . . , Cn0 ) Resuelve la ecuación diferencial E con valores
iniciales C1 , . . . Cn
laplace(f ) Calcula la transformada de Laplace de la función f
ilaplace(f ) Calcula la transformada inversa de Laplace de la función f

Ejemplo 59.

Calcular y 0 − by = 0,con valores iniciales y(2) = 1

>> clear
>> syms y b
>> y=dsolve(’Dy=b*y’,’y(2)=1’)
y = 1/exp(2*b)*exp(b*t)

Ejemplo 60.

Calcular (y 0 )2 + y 2 = 1,con valores iniciales y(0) = 0

>> clear
>>y=dsolve(’Dy^2+y^2=1’,’y(0)=0’)
y =
-sin(t)
sin(t)

Ejemplo 61.

Calcular y 00 + 5y 0 − 6 = 0

>> clear
>> y=dsolve(’D2y+5*Dy-6=0’)
y = -1/5*exp(-5*t)*C1+6/5*t+C2

Marlo Carranza Purca


1.8. Reporte con Matlab 44

Ejemplo 62.

Calcular f (x) = ex

>> clear
>> syms x
>> y=laplace(exp(x))
y = 1/(s-1)

Ejemplo 63.

3
Calcular la transformada inversa de Laplace de f (s) = s2 −s−6

>> clear
>> syms s
>> y=ilaplace(3/(s^2-s-6))
y = 6/5*exp(1/2*t)*sinh(5/2*t)
>> pretty(y)
6/5 exp(1/2 t) sinh(5/2 t)

Ejemplo 64.

1
Calcular la transformada inversa de Laplace de f (s) = s−1

>> clear
>> syms s
>> ilaplace(1/(s-1))
y = exp(t)

1.8. Reporte con Matlab

Vamos a realizar un reporte com Matlab que es de mucha utilidad, para


documentar nuestro trabajo y también para entregar nuestros proyectos, como
reportes hechos por Matlab en diferentes formatos, como pdf, htlm, ppt etc.copie y
haga click en publicar y publique o en todo caso valla a las opciones y cambie de
formato, aqui tiene un ejemplo

%% *Ecuación Cuadrática*
% Autor: Marlo.

Marlo Carranza Purca


1.8. Reporte con Matlab 45

%% Limpiamos la memoria y la pantalla


clear; clc
%% Plantemiento del problema
% Vamos a implementar un *scrip* que calcula
% las raíces de la ecuación cuadrática
%
% $$ a\, x^2 + b\, x + c=0 $$

%% Fórmula general
% Para calcular las raíces de la ecuación cuadrática hacemos uso de las
% la instrucción solve, para resolver la ecuación cuadrática
syms a b c x
raices=solve(’a*x^2+b*x+c=0’);
%%
% Escribimos en latex las raíces obtenidas con solve
x1=latex(raices(1));
x2=latex(raices(2));
%%
% y obtenemos las raíces
% $$ x_1= - \frac{b + \sqrt{b^2 - 4\, a\, c}}{2\, a} $$
% $$ x_2= - \frac{b - \sqrt{b^2 - 4\, a\, c}}{2\, a} $$
%% Ejemplo
% Vamos a resolver la ecuación cuadrática
% $$ x^2-2x-24=0 $$
%%
a=1;
b=-2;
c=-24;
%%
% Así se tiene las raíces
x1=(-b+sqrt(b^2-4*a*c))/(2*a) ;
x2=(-b-sqrt(b^2-4*a*c))/(2*a) ;

%% Resultados
% Las raíces son
disp(x1);
disp(x2);

Marlo Carranza Purca


1.9. Algunas animaciones con Matlab 46

1.9. Algunas animaciones con Matlab

Sabemos que los gráficos dan bastante información de forma mas amena, pero si
estos están animados, entonces los procesos y los resultados se hacen mas
comprensibles y de hecho más amistoso.

Ejemplo básico de animación, presentamos el movimiento de un circulo de derecha


a izquierda

Nt=100; % numero de pasos de tiempo


xmin=0.1;
xmax=0.9;
yval=0.3;
%% Creando el vector x
x=linspace(xmin,xmax,Nt);
%% Animamos la posicion
for it=1:Nt
plot(x(it), yval,’ro’);
axis([0, 1, 0, 1]);
drawnow

Marlo Carranza Purca


1.9. Algunas animaciones con Matlab 47

end

Movimiento de una partícula representado por un circulo, de derecha a izquierda


dejando un rastro a su paso

%% Inicializamos parametros
Nt=100; % numero de pasos de tiempo
xmin=0.1;
xmax=0.9;
yval=0.3;
dt=0.03; % numero de pasos en segundos
%% Crando el vector x
x=linspace(xmin,xmax,Nt);
%% animamos la posición
for it=1:Nt
plot([x(1),x(it)],[yval, yval],’r’,... %plot linea
x(it),yval,’ro’); % plot circulo
axis([0,1,0,1]);
pause(dt);
drawnow
end

Movimiento de una partícula representado por una circunferencia y formando una


circunferencia dejando su rastro

%% Parámetros
Nt=100 % numero de pasos
R=1; % radio del circulo
T=1; % periodo de de movimiento
dt=0.03; % tiempo en s

%% Iniciamos vectores
t=linspace(0,1,Nt);
x=zeros(1,Nt);
y=zeros(1,Nt);

%% Movimiento circular
for it=1:Nt
x(it)=R*cos(2*pi*t(it)/T);
y(it)=R*sin(2*pi*t(it)/T);
end

%% Animacion del movimiento circular


for it=1:Nt
plot(x(1:it),y(1:it),’r’,...%plot curva

Marlo Carranza Purca


1.9. Algunas animaciones con Matlab 48

x(it),y(it),’ro’); % plot punto


axis(1.2*[-1,1,-1,1]);
axis square
pause(dt)
drawnow
end

Movimiento de una partícula representado por una circunferencia y formando una


circunferencia dejando su rastro y además dibujando sus coordenadas punto a
punto

%% Parámetros
Nt=100
R=1;
T=1;
dt=0.06;

%% Iniciamos vectores y matrices


t=linspace(0,1,Nt);
x=zeros(1,Nt);
y=zeros(1,Nt);

%% Movimiento circular
for it=1:Nt
x(it)=R*cos(2*pi*t(it)/T);
y(it)=R*sin(2*pi*t(it)/T);
end

%% Animacion del movimiento circular


for it=1:Nt
plot(x(1:it),y(1:it),’r’,...%plot curva
x(it),y(it),’ro’,... ); % plot punto
1.2*[-R, R], [0 0]);
plot(x(1:it),y(1:it),’r’,... % plots curva
x(it), y(it),’ro’,... % plots puntos
1.2*[-R, R],[0, 0],’k’,... % x-axis
[0, 0],1.2*[-R, R],’k’,... % y-axis
[0, x(it)],[0, y(it)],’k’,... % radio
[0, x(it)],[0, 0],’b’,... % x-proyección
[0, 0], [y(it), 0],’b’,..., % y-proyección
[x(it), x(it)],[0, y(it)],’:b’,... % y-soltar
[0, x(it)], [y(it), y(it)],’:b’) % x-soltar
axis(1.2*R*[-1, 1, -1, 1]);
axis square
pause(dt)
drawnow
end

Marlo Carranza Purca


1.9. Algunas animaciones con Matlab 49

Animamos la Elipse

%% ecuacion de la Elipse
% motion x(t)=a cos(omega*t +phi), y(t)= b sin(omega*t-phi)

%% Parámetros
a=1;
b=1.25;
T=1; % período del movimiento en el tiempo (obtener omega de esta)
Np=4; % número de períodos para trazar
Nt=500;
Nstride=2; %acelera el trazado if >1
phi=pi/8; % desfase

%% Calculo de Parámetros y matricez


Tf=Np*T; % valor final de los tiempos
omega=2*pi/T; % omega calculado a partir del período
t=linspace(0, Tf, Nt);
x=zeros(1, Nt);
y=zeros(1, Nt);

%% Calculo para el movimiento


for it=1:Nt
x(it)=a*cos(omega*t(it)+phi);
y(it)=b*sin(omega*t(it)-phi);
end
% encontrar los extremos de movimiento
xmin=min(x);
xmax=max(x);
ymin=min(y);
ymax=max(y);

%% grafico de la animación
for it=1:Nstride:Nt
plot(x(1:it), y(1:it),... % línea en la posición actual
x(it), y(it), ’ro’,... % círculo rojo
[0, x(it)],[0, y(it)], ’r’); % línea roja de origen
axis(1.2*[xmin, xmax, ymin, ymax]);
axis equal
title(’Demo elliptical animation’);
drawnow
end

Ahora vamos a ver una animación interesante, para lo cual vamos a considerar la
ecuación p
s = a cos(ϕ) + b2 − (a sen(ϕ) − e)2

Marlo Carranza Purca


1.9. Algunas animaciones con Matlab 50

n = 40;
phi = linspace(0, 2*pi, n);
a = 1; b = 2.5; e = 0.25; nF = 5;
c = 0.5; d = 1; f = 0.06;
ax = a*cos(phi);
ay = a*sin(phi);
s = real(ax+sqrt(b^2-(ay-e).^2)); % toma la parte real
v = [1.1*min(ax), 1.1*(max(s)+d/2), 1.1*min(ay), 1.1*max(ay)];
xgnd = [min(ax), max(s)+d/2, max(s)+d/2, min(ax), min(ax)];
ygnd = [e, e, e-f, e-f, e];
slidery = [e, e+c, e+c, e, e];
% Componente vertical del deslizador es constante
for k = 1:n
fill(xgnd, ygnd, ’r’) % Barra horizontal fina
hold on
plot(ax, ay, ’b--’, 0, 0, ’ko’); % La circunferencia y su centro
sliderx = [s(k)-d/2, s(k)-d/2, s(k)+d/2, s(k)+d/2, s(k)-d/2];
fill(sliderx, slidery, ’m’); % grafica el bloque que se deslisa
plot([0 ax(k)], [0;ay(k)], ’ko-’, ’LineWidth’, 2);
% grafica del centro a la cascara
plot([ax(k), s(k)], [ay(k), e+c/2], ’ko-’, ’LineWidth’, 2);
% grafica de la cascara al bloque
axis(v)
axis off equal
SliderCrankFrame(k) = getframe;
hold off
end
movie(SliderCrankFrame, nF, 30)
%movie2avi(SliderCrankFrame, ’SliderCrankAvi.avi’, ’compression’, ’none’)

Se obtiene la gráfica siguiente

Marlo Carranza Purca


1.10. Ejercicios 51

1.10. Ejercicios
1. Implemente un programa que muestre la siguiente tabla

-----------
Impares
-----------
1 1
2 3
3 5
4 7

2. Calcule el determinante y la matriz inversa (si es posible ) de cada una de las


siguientes matrices
     
1 0 0 1 3 51 1 1 0
a)  0 2 0  d )  0 2 23  g)  0 1 1 
0 0 3 0 0 25 0 0 1
   
2 0 0 1 3 0
 
−1 2 2
b)  0 3 0  e)  0 2 1  h)  2 2 2 
0 0 4 2 3 3 −3 −6 −6
   
1 0 0 −3 0 −4
c)  2 2 0  f)  4 1 4 
3 0 3 2 0 3

3. Calcule los valores propios y los autovectores de las siguientes matrices


     
1 0 1 1 1 4
a) c) e)
0 0 1 1 2 3
     
2 3 −1 3 1 −1
b) d) f)
−1 1 1/2 −1/2 2 2

4. Calcule el radio espectral de las matrices de los ejercicios anteriores

5. Corregir el código que se supone gráfica el polinomio p(x) = x4 − 1 de


x = −2 hasta x = 2 usando 20 pasos

x = -2:0.1,2;
c = [1 , 0 ; 0 , -1];
y = polyval(c,x);
plot(y;x)

6. Grafique las funciones

a) f (x) = x(x2 + 4)2



b) f (x) = x − x

Marlo Carranza Purca


1.10. Ejercicios 52

log(x)
c) f (x) = x
x(x−2)
d ) f (x) = (x+1)(x−2)
1

e) f (x) = sen x
x
f ) f (x) = e|x−1|
 2
x si x < 0
g) f (x) =
−1 si x ≥ 0
 √
 1 − x si x < −1
h) f (x) = 1 − x2 si − 1 ≤ x < 1
 √
x − 1 si 1 ≤ x

7. Considere los polinomios p(x) = x4 − x2 , q(x) = x − 1 y w(x) = x2 + 1,


verifique

p(x) = (x − 2)w(x) + 2x
p(x)q(x) = x5 − x4 − x3 + x2

8. Evaluar los polinomios en x = 1 : 0.3 : 7

a) p1 (x) = 2x3 − x + 7
b) p2 (x) = 2x5 + 3ix + (6 − 2i)
c) p3 (x) = x10 + x + 1

9. Indicar las raíces del polinomio

p(x) = (x − 3i)3 + xcis(5o ) − (xcic(7o ))4

donde cis(x) = cos(x) + i sen(x)

10. Genere la animación de una pelota que cae y rebota hasta detenerse.

Marlo Carranza Purca


Bibliografía

[1] Chainskaia, Liudmila y Doig, Elizabeth. Elementos de Análisis Numéricos: algoritmos y


aplicaciones. Fondo Editorial de la PUCP. 1999.

[2] Chapra, Steven. Métodos para Ingenieros. Editorial McGraw-Hill.

[3] Douglas, J. Burden Richad. Métodos Numéricos. Tercera edición. THOMSON Editores.
2004. Madrid España.

[4] Maron, Melvin; Robert J. Lopez. Un enfoque Práctico. Editorial CECSA.

[5] Nakamura, Shoichiro. Métodos Numéricos aplicados con Software. Editorial Prentice - Hall
Hispanoamericana.

[6] Nieves Dominguez. Métodos Numéricos aplicados a la ingeniería. Editorial CECSA.

[7] Scheid, Francis, Rosa Elena Di Constanzo. Métodos Numéricos. Colección Schaum.
Editorial Mc Graw Hill.

53
Marlo Carranza Purca

Potrebbero piacerti anche