Guia 02C Aprendiendo Matlab PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 14

1

UNIVERSIDAD NACIONAL DE SAN ANTONIO ABAD DEL CUSCO


FACULTAD DE ING. ELECTRICA, ELECTRONICA, INFORMATICA Y MECANICA
DEPARTAMENTO ACADÉMICO DE INFORMÁTICA A RP
UNIDAD DE APRENDIZAJE: USO DE LA VENTANA DE EDICION
GUIA N°02.
Competencias

2. 2. Fundamento Teórico

MATLAB tiene numerosas funciones matemáticas desde los más elementales hasta los más
avanzados. Las funciones elementales en matlab se agrupan en tres categorías Funciones
trigonométricas, Otras funciones elementales, Funciones que realizan tareas y Funciones
definidas por el usuario

Las funciones matemáticas (trigonométricas, otras funciones elementales) ejecutan


directamente, los cálculos (basta asignar al argumento algún valor, ver GUIA Nro: OO ).-
Los argumentos de estas funciones puede ser escalares, vectoriales, matriciales, de tipo
real e incluso complejos).
-Angle(x)
-Real(x)
-Floor(x) etc, etc..

c. Funciones que realizan tareas

Además de las funciones que calculan directamente, existen funciones que realizan tareas,
alguna de estas son:
Ejemplos
-F. Ordenar: shor(X) sort([3 6 1 8 2 0 6 15 4 -5])
-F. Sumatoria: suma(X) sum([3 6 1 8 2 0 6 15 4 -5])
-F. máximo y mínimo: max(X), y min(X)
-F. números aleatorios: rand( X, x)

d. Funciones definidas por el usuario

La ventana de comandos solo permite teclear, instrucciones que requieren cálculos


interactivas, que ocupa una línea. Si las instrucciones es más de una línea se requiere crear
un archivo M de guion u un archivo función que se puede guardar con un nombre en el
disco, y ejecutar o corregirse tantas veces como se desee. Además el nombre almacenado
sirve para invocar el archivo y ejecutar desde la ventana de comandos:

2.3 Definición de funciones: Se utiliza el siguiente formato:

function y = func_1(x)
Argumento de cualquier tipo, escalar, vector, matriz,

METODOS NUMERICOS GUIA 02 ARP


2

Nombre o funcional (cualquier identificador) para archivar en disco e


invocar
Variable de salida
Palabra reservada

Ejemplos: digitar en la ventana de edición

1. Function y = func_1(x)

y = (2* x^.3+ 7* x^.2 + 3*x -1)./(x^.2-3*x+ 5*exp(-x))

Nota : archivar con el nombre func_1 por defecto en la carpeta de matlab. Para ejecutar
bastara digitar desde la ventana de comandos: y pulsar enter en cada caso

>> func_1( 1.5)


>> func_1 ([1 3 4 6 7])
>> func_1 ([1 2 3; 2 -1 0])
>> func_1([1+2i 2-0.5i ; 0 + 3i 2.5 – 4i])

2. Otros ejemplos

function y= p_1(x) % f(x) = e^x


y = 1+x+ x^2/2+ x^3/6+ x^4/24 +x^5/120;
%y= p_1(2)

function y= p_2(x) % f(x) = sen(x)


y = x- x^3/6 + x^5/120 - x^7/5040;

function y= p_4(x) % f(x) = e^x^2)


y = 1+ x^2+x^4/2 + x^6/6 + x^8/24;

function y= p_5(x) % f(x) = e^x cos(x)


y = x+ x^2 + x^3/3 ;

2.4. Representación gráfica de funciones (ver GUIA Nro.: 00: Funciones para gráficos)
La forma más sencilla de dibujar con MATLAB una función y=f(x) es:
1. Por ejemplo:
f(x) = x sin(x2)/ 2 para x E [-2pi, 2pi ],

Para dibujar la función en un intervalo distinto, [a, b], hay que indicarlo expresamente en la
orden:

>> ezplot('expresión de la función', [a, b])


>> ezplot('sin(x^2)*x/2',[-2*pi 2*pi])

Esta orden dibuja la gráfica de la función dada, para x en un intervalo por defecto.

METODOS NUMERICOS GUIA 02 ARP


3

2. Construya la gráfica de f(x) = sin(x)/ x para x E [-2pi, 2pi ],

3.-Practique digitando desde la ventana de comandos, y visualice, guarde y explique


los resultados

>> subplot(m,n,p)

Este comando permite dividir la ventana gráfica en una matriz mxn de sub-ventanas gráficas,
activando para dibujar la p-ésima de ellas.
plot(y) : produce un gráfico lineal de los elementos del vector y versus los índices de y.

>> y = [ 0 0.6 0.9 0.1 0.8 0.3 0.4];


>> plot(y)

plot(x,y) : Dados dos vectores de la misma dimensión, x e y, produce un gráfico lineal de los
elementos del vector x versus los elementos del vector y
>> t = 0 : 0.1 : 4*pi;
>> y = sin(t);
>> plot(t,y,'r')

4.-Dibuje la gráfica para las funciones y=e-x^2; z=2*e-x^2;

>> x=linspace(-3,3,500); y=exp(-x.^2); z=2*exp(-x.^2);


>> plot(x,y,'-',x,z,'--') % dibujamos dos funciones
>> title('Campanas de Gauss')
>> xlabel('Eje de Abscisas') % Etiqueta el eje horizontal
>> ylabel('Eje de Ordenadas') % Etiqueta el eje vertical
>> legend('exp(-x^2)', '2*exp(-x^2)') % Leyenda

Para resolver en grupo:

5.-Dibuje la gráfica para las funciones y= sin(x)/x; y1=4sin(x)/x; y2=2*e-x^2; defina un


intervalo adecuado

x2 si x <0
6.- Graficar la siguiente función f(x) = 1 si 0<= x <= 1
-x +2 si 1<= x
7.- Graficar la función y = e –x^3

2.5 Programación en Matlab


Objetivos: Aplicar las instrucciones de control en MATLAB, para la implementación de
programas,

Archivos *.m : Existen de tipos de archivo *. M y son : Script y Función (function)

METODOS NUMERICOS GUIA 02 ARP


4

Eel Script, realizan una acción o valor usando comandos. Función, son instrucciones que
realizan una tarea tomando encuentra variables de entrada y salida usa una cabecera
definición de función

Estos archivos se crean desde la ventana de edición: File/New/M_file .si en la ventana de


comandos digitar >> edit < enter>

Cabecera o defincion de funcion:

Formato: function [variable de salida] = Nombre funcional(argumento)

Ejem: function [X, Y, Z ]= func_1(X1, X2, X3,…XN)

Nota:

[Variables de salida] : si es más de un variable se separan por comas.


si es solo una se puede omitir los [ ]
(Variables de entrada) : si es más de una separadas por comas.
Las funciones (functions) se deben grabar como archivo m (M-file) y el nombre del archivo
debe ser igual al nombre de la función.

Trabajo preparatorio: Como parte el trabajo preparatorio repasar, resumir, entender saber
aplicar los conceptos sobre las estructuras algorítmica:

- Controles de Flujo y Sentencia de Decisión simples y dobles


- La sentencia SWITCH (H.CASE)
- Las sentencias FOR y WHILE
- La sentencias BREAK
- La sentencias CONTINUE
-

PRACTICA:
a Creación de un Archivo Script
Establecer la ruta donde el MATLAB buscara su programa, para ello digite en la ventana de
comandos la instrucción cd seguida de la ruta de su carpeta de trabajo:
Por ejem: >> cd D:\Metodos Num\ work < enter>

b) Crear un nuevo archivo-m:

Haga clic en el menú File, seleccione la opción New y haga clic en M-File. Aparecerá una
ventana en blanco donde deberá digitar su programa. ( si está en la ventana de comandos
haga: >> edit <enter>
c) Digite el siguiente programa (guion):

% prueba01.m
n=input('Ingrese número de e periodos=')
x=0:pi/100:2*pi*n;
y=exp(-x/10).*sin(2*x);
plot(x,y)

METODOS NUMERICOS GUIA 02 ARP


5

title('Amortiguamiento')
xlabel('Tiempo(seg)')
ylabel('Posicion (m)') grid

d) Grabar el programa:
Hacer clic en el menú File, clic en la opción Save, luego digite el nombre del programa:
prueba01 y haga clic en el botón guardar.
e) Ejecución del programa:

En la ventana de comandos escriba el nombre del programa: prueba01 y presione la tecla


Enter.
El programa solicitara un dato:
Ingrese número de períodos =
Digite 5 y presione Enter.
Anote gráfico de salida:

% Ejemplo 2
% PROGRAMA PARA CALCULAR EL FACTORIAL DE UNA SERIE DE NUMEROS
% prueba02.m

fprintf('cálculo del factorial de numero pares e impares \n');


fprintf('cont factor pares impares \n');
for i= 0:5
% factorial (2*i) // numero par
% factorial (2+i+1) // número impar
fprintf('%2d%10d%15d%19d\n' ,i, factorial(i),factorial(2*i),factorial(2*i+1))
end
Calculo del factorial de número par e impar
cont numero pares impares
0 1 1 1
1 1 2 6
2 2 24 120
3 6 720 5040
4 24 40320 362880
5 120 3628800 39916800

Ejemplo 03

METODOS NUMERICOS GUIA 02 ARP


6

Ejemplo 3: Hacer un algoritmo y programa en Matlab, para ejecutar


y calcular la velocidad del paracaidista del problema de
motivación:

Aplicando condiciones iniciales t = 0, v(t) = 0 se obtiene el valor la cte. de integración

M = - g m/c y finalmente se obtiene la solución analítica de la ecuación diferencial, expresado por


la función exponencial:

v(t) = g m/c (1 - e(-c/m)t) (13)

3.1. Ahora asignamos valores arbitrarios a los parámetros g = 9.8 km/seg2; m = 69.5 kg ; c= 12.
Coeficiente del aire, para y haciendo t ∞, y evaluamos

v = limite v(t) = 69.5x 9.8/12.5 (1 - e(- 12.5/69.5) oo) = 54.488(1- e-0.179856 t ) = 54.488 m/seg
t∞

3.2) calculamos algunas iteraciones por cada segundo desde t = 0, hasta t = ∞, se aproxima a la
solución exacta:

t/seg V m/seg t/seg V m/seg


0 0 7 39.297336765
1 8.969247731 8 41.86241690
2 16.462062245 9 44.00523483
3 25.2685º816 10 45.795345
4 28.15164509 .. ………
5 32.55138626 . ………
6 36.226888822 oo 54.488

3.3. Algoritmo para tabular los valores de la tabla:

Inicio
Leer datos de entrada (masa, valor de g, valor de c)
Para t ----0 hasta N hacer
inicio
V -- gm/c (1 - e(-c/m)t) {escriba adecuadamente según el lenguajes que uses}
Escribir el resultado que muestre como una tabla similar al cuadro anterior
Fin;
V --- ………..
Fin.

3.4. Digite el siguiente script:

. format short g %long


t0=1;
for t=1:50
v= 54.488*(1- exp(-0.179856*t) );
disp([t,v])

METODOS NUMERICOS GUIA 02 ARP


7

t0=t;
end

3.5 Al ejecutar, anote la salida según el siguiente formato.

t/seg v/m/seg t/seg v/m/seg /seg t/seg v/m/seg

3.6. Use Matlab y escriba el siguiente script, para construir la grafica

fplot('[(54.488)*(1-exp(-0.179856*t)),0]', [0, 30])


grid. Complete los detalles de manera que la gráfica sea igual o mejor

v(t) = 54.488(1- e-0.179856 t )


60

54.488
50

40
v(t)

30

20

10

0
0 5 10 15 20 25 30
tiempo t ------> oo

Para el tiempo t--∞, la velocidad se hace constante, lo que significa que la gravedad terrestre
esta en equilibrio con a la resistencia del aire. Que actúa sobre el objeto.

3.7.- Solución numérica del problema de paracaidista: solución aproximada

Aquí desarrollaremos la resolución como aproximación numérica hacia la solución exacta.


Y como vera no será necesario realizar largas operaciones para aproximarse a este
resultado.

La 2da, ley de Newton también es aplicable a las resoluciones numéricas:

a = F/m 
dv/dt = ∆v/∆t = (𝒗(𝒕𝒊+𝟏 ) − 𝒗( 𝒕𝒊 ))/(𝒕𝒊+𝟏 − 𝒕𝒊 ) (14a)
Donde: ∆v diferencia de velocidades
∆t diferencia de tiempos (valores incrementales)

METODOS NUMERICOS GUIA 02 ARP


8

Aquí se tomado un grafico afin de ilustrar las relaciones matemticas para las diferenciales
y los tiempos para determinar la pendiente

𝑣(𝑡𝑖+1 )

dv/dt ∆v

ǿ
𝑣( 𝑡𝑖 ) P
∆t

𝑡𝑖 𝑡𝑖+1

El Angulo de X con la pendiente aproximada (o la cuerda) está determinada por la


fórmula 14 a) en donde:

𝑣( 𝑡𝑖 ) , es la velocidad inicial en t iempo inicial ti


𝑣(𝑡𝑖+1 ), velocidad final en tiempo final t i+1

y dv/dt ≈ ∆v/∆t , es una aproximación hacia la pendiente final (o recta tangente cuyo
contacto con la curva es un único punto P. tal que

dv/dt = limite ∆v/∆t


∆t 0

Luego la ecuación diferencial (6) es una aproximación a la derivada en el tiempo ti que


llamaremos una ecuación en diferencia dividida es decir

dv /dt = g – c/m v

METODOS NUMERICOS GUIA 02 ARP


9

(𝒗(𝒕𝒊+𝟏 ) − 𝒗( 𝒕𝒊 ))/(𝒕𝒊+𝟏 − 𝒕𝒊 ) = g – c/m v(t i)

𝒗(𝒕𝒊+𝟏) = v(ti) + [ g – c/m v(t i) ] [𝒕𝒊+𝟏 − 𝒕𝒊 ] (15)

(15) es una ecuación algebrada obtenida a partir de la ecuación diferencial (6). Permitirá realizar
las iteraciones aproximadas hacia la solución exacta ya deducida:

Para empezar con el cálculo previamente se definen las condiciones iniciales para el tiempo inicial
y velocidad inicial tomando en cuenta la regla

V(nuevo) = v(anterior) + pendiente* tamaño de paso

De donde llamando t = t i+1 – t i  t i+1 = t + t i

Por condición del problema llamemos m = 69.5 kg, g= 9.8 m/seg2, c = 12.5 , la prueba
manual seria el siguiente:

t 0 = 0 , v(0) = 0 , t 1 = 1 seg. para i = 0


t 1 = 1 , v(1 ) = 0 + [g – c/mv(0) ] ( 1 -0) = g = 9.8
t 2 = 2 , v(2 ) = v(1) + [g – c/mv(1) ] ( 2- 1) = 17.83741007
t 3 = 3 , v(3 ) = v(2) + [g – c/mv(2) ] ( 3 -2) = 24.42924279
t 4 = 4 , v(4 ) = v(3) + [g – c/mv(3) ] ( 4-3 ) = 29.83549409

Y así sucesivamente, para t oo . El cálculo es recursivo, es decir un nuevo valor se calcula a partir
del valor anterior calculado (se come su propia cola). Generalizando el proceso de cálculo para las
n iteraciones se obtiene la solución numérica aproximada al valor exacto.

Tarea: a) Escriba el algoritmo y programa que permita calcular a la salida como tabla de datos
numéricos para

𝒗(𝒕𝒊+𝟏) = v(ti) + [ g – c/m v(t i) ] [𝒕𝒊+𝟏 − 𝒕𝒊 ]

b) Escriba un script en matlab para graficar el comportamiento numérica de la formula (15)

c) Compare los datos de salida que ha obtenido en a), con la obtenida como exacta.

d) Construya la las gráficas en un mismo sistema cartesiano tanto para la función exacta y la
forma numérica

v(t) = g m/c (1 - e(-c/m)t)

𝒗(𝒕𝒊+𝟏) = v(ti) + [ g – c/m v(t i) ] [𝒕𝒊+𝟏 − 𝒕𝒊 ]

Y discuta su respuesta.

METODOS NUMERICOS GUIA 02 ARP


10

CALCULO DE ERRORES

%04.- Calculo de errores absoluto y Relativos


function [error]= errorAb_R(nv,na)
% Datos
% nv= numero verdadero ;% na= numero aproximado
% Ea = error absoluto; % Er = error relativo
% Eca = cota del error absoluto; % Ecr = cota del error relativo
Ea= abs(nv-na);
Er= Ea/abs(nv);
fprintf ('error absoluto = %10.8f\n',Ea);
fprintf ('error Relativo = %14.8f\n',Er);
cEa = nv + 0.000001-na;
cEr= Er/abs(nv);
%if Er< tol

if cEa>Ea

fprintf ('cota error absoluto = %10.8f\n',cEa);


fprintf ('cota error Relativo = %14.8f\n',cEr);
k= (log(2)-log(Er))/log(10);
fprintf ('Numero de cifras significativas= %14d\n',k);
end
end
%Ejemplos:
% error = errorAb_R(nv,na)
% error = errorAb_R(3.1415924571, 3.1415924662)

% error= errorAb_R(pi, 3.140625)

%programa 5.- cálculo del épsilon de máquina .


x=1;
while 1+x>1
x=x/2;
disp(x);
end
x=2*x;
disp('El épsilon de la máquina es :')
disp(x)
disp('El valor de 2^(-52) es') % Comprobación

disp(2^(-52))

Ejemplo 06 Hacer un algoritmo y Programa calcular la serie de serie de Taylor

function y= Staylor_(f_name, NT, x)


f_name

Sintaxis: f(x) = e^x ; y = 1+ x+ x^2/2+ x^3/6+ x^4/24 +x^5/120; **


% ** STaylor_('nombre_fn',NT, x )

METODOS NUMERICOS GUIA 02 ARP


11

fprintf ('CALCULA LA SERIE DE TAYLOR\n\n');


fprintf (' cont num fact term stotal e\n');
cont=0;
Stotal=1;
fact=1;
%F = fact;
while cont<=NT
cont =cont +1;
num= x ^cont;
fact=fact*cont;
term=num/fact;
Stotal=Stotal+term;
e=abs(term);
fprintf('%3d%12.7f%10d%14.7f%14.10f%14.7f\n',cont,num,fact,term,Stotal,e);
end
fprintf('\n');
end

% para ejecutar, digitar en la ventana de comandos <enter>


% donde 'f_1', es una función previamente definido
Ejecucion del programa
>> Staylor_('p_1',10, 1.5 )
Ejemplos:
% Staylor_('p_1',10, 1.5 )
% Staylor_('p_2',10, 1.5 )

Trabajo en Grupo:

Para la function f(x) ) = sen(x)


Ontenga el polinomio de orden 6 en x0 = 0
Construya un programa de srchivos m
Evalue para x= 1.02
Repita 1) para f(x) = e2x en x0 = 1 x= 1.5
Sabiendo que las coordenadas cartesianas de una circunferencia son de la forma x=r*cos(θ) ,
y=r*sen(θ) crear una función que se llame circunferencia1.m que dibuje una circunferencia y
que tenga como parámetros de entrada el radio y el ángulo. La función tiene que tener como
parámetros de salida todos los pares de valores x,y . Para realizar el programa, hay que tener
en cuenta que el radio permanece constante y lo que va cambiando es el ángulo θ.|

PROBLEMAS COMPLEMETARIOS

1.- Repita el problema del paracaidista, esta vez considerando la resistencia del aire, para
determinar un modelo matemático que relacione la distancia del objeto a la tierra, con
respecto al tiempo.

Solución

De la segunda Ley de Newton

METODOS NUMERICOS GUIA 02 ARP


12

Fuerza total que actúa sobre el objeto de masa m


Fa
F = Fg - Fa
m
m(d y/dt ) = mg – c dy/dt tal que
2 2

y
d2y/dt2 + c/m dy/dt = - g Fg prob (2a)

La expresión prob(2a), es la ecuación diferencial de segundo orden no homogénea, para


resolverlo se plantea una solución de la forma y= C1 + C2 e-c/m t – g/m t
En donde C1, C2, son la constantes de integración, si la resistencia del aire c = 0, para una
masa despreciable, la ec. Prob(2a) resulta:

d2y/dt2 = -g prob(2b)

Sugerencia: leer textos de ecuaciones diferenciales que en la actualidad existen muchas como ejemplo: ecuaciones diferenciales
shaum edt. Mac Grau Hill, ecuaciones diferenciales con aplicaciones por Dinnis Zessill

2.- Determinar un modelo matemático que permita calcular la acumulación del capital C,
con relación al tiempo:
Solución:
Para resolverlo se sigue un proceso similar a los problemas anteriores por tanto:
Sea Y el capital, Sea t el tiempo entonces el capital en función del tiempo será

Y = y(t)

Debe entenderse conforme pasa el tiempo se genera intereses, que incrementa al capital
inicial, mientras el consumo disminuye en una cantidad b
Es interés ά C , I ά Y

dy/dt = ky – b k = cte de proporcionalidad

dy/dt –ky = -b prob(3a) C


t
0
prob(3a), es una ecuación diferencial de primer orden no homogénea, cuya resolución
Será tan parecido. El estudiante debe completar la solución siguiendo toda la mitología
aplicada en el problema 1)

3.- Hallar un modelo que relacione la producción con el precio de un artículo


Solución:

METODOS NUMERICOS GUIA 02 ARP


13

Sea x el precio unitario de un articulo i sea y, la cantidad producido de un articulo. Por otra
parte son funciones del tiempo t, de tal manera que por leyes económicas si la producción y
es excesiva el precio baja (a mayor oferta, menor costo)
En consecuencia la reducción unitaria del precio es proporcional al # de artículos
producidos, x ά y  x = k y

- dx/dt = k y (4 a)

Por otro lado la producción aumenta a medida que sube el precio unitario x entonces el
aumento es directamente proporcional al precio

dy/dt = b k (4b)

Luego de 4 a

-d2x/dt2 = k dy/dt 

- d2x /dt2 = kbx (4c)

(4c)Ecuación diferencial de oscilación simple, resolución tiene la forma


X = A cos ( √𝑎 𝑏𝑡 + ∝ Con A constante de integración
4.- Determina el modelo matemático, para un resorte de la figura, en la que se carga un
cuerpo de masa M, que pende verticalmente

Donde:
a, alargamiento
k= cte. del resorte
x distancia

Por la segunda ley de newton


F = M d2x/dt2 = Mg – k(a +x)
d2x/dt2 aceleración del cuerpo
Mg : peso
K( a +x) : fuerza de resistencia del aire

METODOS NUMERICOS GUIA 02 ARP


14

5.-Se considera una viga O-A , de longitud l , empotrada horizontalmente en la pared en el


punto “O” . La viga se somete a una fuerza vertical W en el extremo libre, y se flexiona.
Hallar el modelo que representa a la viga.

O l
A
w

6 considere el circuito simple conectado en serie con los elementos pasivos


Solución

V(t) I L

La caída de tensión en los bordes de cada uno de los elementos es igual voltajes E(t)

VL + VR + VC = E(t)
De donde se obtiene:

L d2 q/dt2 + R d q/dt + q/C = E(t) (6 a)

METODOS NUMERICOS GUIA 02 ARP

También podría gustarte