Está en la página 1de 17

23051 – ANÁLISIS NUMÉRICO

LABORATORIO DE PROGRAMACIÓN
MATLAB
CONCEPTOS BÁSICOS Y SISTEMAS LINEALES
GUÍA 1
Teoría - Mg (c) Ingeniero Civil Mecánico – Marcelo Gallardo Maluenda

MATLAB

1. Variables

1.1 Escalares

1.1.1 Asignación

Asignación: Con el caracter “=” se designa un valor a una variable. Luego oprimir enter, la
ventana de comando muestra su valor. Esto se lee “a r se le asigna el valor 5”.
>> r=5
r=
5
Al contrario, si luego de asignar valor a la variable se digita “;”, entonces no se muestra
su valor.
>> r=5;
>>
Otra manera de asignar un valor a una variable, es por medio de otras. Por ejemplo
>> r=5;,h=10;
>> x=r+h
x=
15
El operador asignación es muy distinto a una igualdad. Considerando el enunciado
>> x=x-5
x=
10
Obviamente, x no es igual a x-5, pero lo anterior se entiende como “se sustituye el
valor actual de x por su valor antiguo menos 5”.
Cuando se realiza una operación y ésta no es asignada a una variable, por defecto se
crea una variable llamada “ans” que almacena el valor de la operación realizada. Si se realizan
varias operaciones sin asignación a variables, entonces ans toma el valor de la última
operación.
>> 4/3
ans =
1.3333
>> 4/3+1
ans =
2.3333

1.1.2 Operaciones básicas y orden de prioridad

Tabla 1.1.2.1: Operaciones aritméticas entre dos escalares (operaciones binarias).

Operación Sintaxis algebraica Sintaxis MATLAB


Suma 𝑎+𝑏 a+b
Resta 𝑎−𝑏 a-b
Multiplicación 𝑎×𝑏 a*b
División 𝑎/𝑏 a/b
Exponenciación 𝑎𝑏 a^b
Orden de prioridad
1) Cálculos entre paréntesis, desde el conjunto más interno hasta el más externo.
2) Exponenciación.
3) Multiplicación y división de izquierda a derecha.
4) Suma y resta de izquierda a derecha.

Ejemplo
Cálculo del manto de un cilindro
>> r=5;
>> h=10;
>> A=2*pi*r^2+2*pi*r*h
A=
471.2389
En este ejemplo, MATLAB realiza las operaciones algebraicas en el siguiente orden:
1) Exponenciación: r^2
2) Primer producto: 2*pi*r^2
3) Segundo producto: 2*pi*r*h
4) Suma: 2*pi*r^2+2*pi*r*h

El área total también se podría haber expresado como:


>> A=2*pi*r*(r+h)
A=
471.2389
Cabe destacar que MATLAB no supone operadores, por ende, si A se definiera como la
multiplicación de 2*pi*r y (r+h), esta operación debe ser indicada. En caso contrario,
arrojaría error.
>> A=2*pi*r(r+h)
??? Index exceeds matrix dimensions.
MATLAB interpreta r(r+h) como la función r evaluada en r+h. Como la función r no
existe, entonces indica que hay un error.
Tanto las asignaciones de las variables r y h como la expresión del área A pueden ser
escritas en una misma línea de comando, separándolas con o sin el uso de “,”.
>> r=5;,h=10;,A=2*pi*r^2+2*pi*r*h
A=
471.2389
>> r=5;h=10;A=2*pi*r^2+2*pi*r*h
A=
471.2389

Ejercicio
Calcule manualmente las siguientes operaciones y luego verifique sus resultados en
MATLAB. Primero realice las operaciones sin asignación por orden de prioridad para cada
término y luego por medio de asignaciones de cada término a una variable, incluyendo el
resultado.

Ejemplo
7 7
+ 5 =? ⇒ 𝑎 = ∧ 𝑏 = 5 ⇒ 𝑐 = 𝑎 + 𝑏 =?
6 6
>> 7/6
ans =
1.1667
>> 7/6+5
ans =
6.1667
>> a=7/6
a=
1.1667
>> b=5
b=
5
>> c=a+b
c=
6.1667
Programar

1) 2 × 63 ⇒ 𝑎 = 2 ∧ 𝑏 = 6 ∧ 𝑐 = 3 ⇒ 𝑑 = 𝑎 × 𝑏 𝑐
2) (3 + 5) × 2 ⇒ 𝑎 = 3 ∧ 𝑏 = 5 ∧ 𝑐 = 2 ⇒ 𝑑 = (𝑎 + 𝑏) × 𝑐
3 𝑏
3) 4 × 2 × 5 ⇒ 𝑎 = 4 ∧ 𝑏 = 3 ∧ 𝑐 = 2 ∧ 𝑑 = 5 ⇒ 𝑒 = 𝑎 × 𝑐 × 𝑑
5+7 𝑎+𝑏
4) 2×3
⇒ 𝑎=5 ∧ 𝑏=7 ∧ 𝑐=2 ∧ 𝑑=3 ⇒ 𝑒= 𝑐×𝑑
5+7 𝑎+𝑏
5) ( )× 3 ⇒ 𝑎=5 ∧ 𝑏=7 ∧ 𝑐=2 ∧ 𝑑=3 ⇒ 𝑒=( )×𝑑
2 𝑐
(5+7) ×2 (𝑎+𝑏) ×𝑐
6) 3
⇒ 𝑎=5 ∧ 𝑏=7 ∧ 𝑐=2 ∧ 𝑑=3 ⇒ 𝑒= 𝑑

1.2 Vectores y matrices

1.2.1 Vectores

La notación que usualmente se utiliza vectores fila 𝑈 para vectores 𝑉.


1
𝑈 = (1 2 3) ∧ 𝑉 = 𝑈 𝑡 = (1 2 3)𝑡 = (2) = (1,2,3)
3
>> U=[1 2 3]
U=
1 2 3
>> U=[1,2,3]
U=
1 2 3
>> V=U'
V=
1
2
3
>> V=[1;2;3]
V=
1
2
3
Vector fila con componentes en orden de diferencia constante
Se define el inicio y el término de izquierda a derecha.
a) Por defecto, el paso es 1.
>> S=-2:5
S=
-2 -1 0 1 2 3 4 5
b) El paso se puede definir entre el inicio y el final.
>> S=-2:0.5:0
S=
-2.0000 -1.5000 -1.0000 -0.5000 0
c) No necesariamente el valor inicial más una cierta cantidad de paso genera el valor
final.
>> S=-2:0.3:0
S=
-2.0000 -1.7000 -1.4000 -1.1000 -0.8000 -0.5000 -0.2000

1.2.2 Matrices

1.2.2.1 Formación de una matriz

La notación que usualmente se utiliza en matrices 𝑀.


1 2 3
𝑀=( )
4 5 6

1) La matriz 𝑀 se puede formar por medio de vectores o vectores fila.

- Considerando vectores filas dispuestos como elementos de un “vector” (en vez de


coeficientes, en su lugar utilizamos vectores filas).
>> R1=[1,2,3]
R1 =
1 2 3
>> R2=[4,5,6]
R2 =
4 5 6
>> M=[R1;R2]
M=
1 2 3
4 5 6
- Considerando vectores dispuestos como elementos de un “vector” fila.
>> C1=[1;4]
C1 =
1
4
>> C2=[2;5]
C2 =
2
5
>> C3=[3;6]
C3 =
3
6
>> M=[C1,C2,C3]
M=
1 2 3
4 5 6

2) La matriz 𝑀 se puede formar definiendo todos sus coeficientes directamente.


>> M=[1,2,3;4,5,6]
M=
1 2 3
4 5 6
Matrices especiales
a) Matriz identidad: Basta solo indicar la dimensión como parámetro de entrada. Ejemplo,
dimesión 3x3.
>> I=eye(3)
I=
1 0 0
0 1 0
0 0 1
No necesariamente, el comando “eye” se utiliza para matrices cuadradas. Por ejemplo:
>> I=eye(5,3)
I=
1 0 0
0 1 0
0 0 1
0 0 0
0 0 0
>> I=eye(3,5)
I=
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0

b) Matriz de coeficientes iguales a 1


>> O=ones(5,3)
O=
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
>> O=ones(3,5)
O=
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

c) Matriz diagonal: Puede definirse a parte de un vector fila o vector.


>> D=[1,2,3,4,5]
D=
1 2 3 4 5
>> C=diag(D)
C=
1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5
>> E=D'
E=
1
2
3
4
5
>> C=diag(E)
C=
1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5

d) Matriz mágica: Matriz tal que la suma de las filas, columnas y diagonales son iguales.
>> M=magic(3)
M=
8 1 6
3 5 7
4 9 2

1.2.2.2 Operaciones con matrices

a) Obtener vectores o vectores fila


>> 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
>> A3j=A(3,:)
A3j =
9 10 11 12
>> Ai3=A(:,3)
Ai3 =
3
7
11

b) Determinante
>> C=diag(E)
C=
1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5
>> d=det(C)
d=
120

c) Matriz inversa
>> Cinv=inv(C)
Cinv =
1.0000 0 0 0
0 0.5000 0 0
0 0 0.3333 0
0 0 0 0.2500
2. Aplicaciones de SEL en ingeniería

2.1 Estructuras: Análisis de una estructura estáticamente determinada

Problema: Determinar las fuerzas y reacciones en la siguiente estructura.

Fig. 2.1.1: Estructura de barras triangular.

Solución
Desarrollando el diagrama de cuerpo libre por cada nodo, tenemos

Fig. 2.1.2: Diagrama de cuerpo libre por nodos.


En cada nodo, la suma de las fuerzas por componentes x e y es igual a cero.
Considerando las fuerzas externas aplicadas a cada nodo como

𝐹𝑖,ℎ : Fuerza sobre el nodo 𝑖 en dirección horizontal.

𝐹𝑖,𝑣 : Fuerza sobre el nodo 𝑖 en dirección vertical.

Nodo 1

∑ 𝐹ℎ : − 𝐹1 cos(30°) + 𝐹3 cos(60°) + 𝐹1,ℎ = 0

√3
−( ) 𝐹1 + 0,5𝐹3 + 0 = 0
2

−0,866𝐹1 + 0,5𝐹3 = 0

∑ 𝐹𝑣 : − 𝐹1 sin(30°) − 𝐹3 sin(60°) + 𝐹1,𝑣 = 0

√3
−0,5𝐹1 − ( ) 𝐹3 − 1000 = 0
2

0,5𝐹1 + 0,866𝐹3 = 1000

Nodo 2

∑ 𝐹ℎ : 𝐹2 + 𝐹1 cos(30°) + 𝐹2,ℎ + 𝐻2 = 0

√3
𝐹2 + 𝐹1 ( ) + 0 + 𝐻2 = 0
2

0,866𝐹1 + 𝐹2 + 𝐻2 = 0

∑ 𝐹𝑣 : 𝐹1 sin(30°) + 𝐹2,𝑣 + 𝑉2 = 0

0,5𝐹1 + 0 + 𝑉2 = 0
0,5𝐹1 + 𝑉2 = 0
Nodo 3

∑ 𝐹ℎ : − 𝐹2 − 𝐹3 cos(60°) + 𝐹3,ℎ = 0

−𝐹2 − 0,5𝐹3 + 0 = 0
𝐹2 + 0,5𝐹3 = 0

∑ 𝐹𝑣 : 𝐹3 sin(60°) + 𝐹3,𝑣 + 𝑉3 = 0

√3
( ) 𝐹3 + 0 + 𝑉3 = 0
2

0,866𝐹3 + 𝑉3 = 0

−0,866 0 0,5 0 0 0 𝐹1 0
0,5 0 0,866 0 0 0 𝐹2 1000
0,866 1 0 1 0 0 𝐹3 0
0 = ⇒ 𝐴𝑥 = 𝑏
0,5 0 0 1 0 𝐻2 0
0 1 0,5 0 0 0 𝑉2 0
( 0 0 0,866 0 0 1) ( 𝑉3 ) ( 0 )

En MATLAB
>> A1j=[-0.866,0,0.5,0,0,0];
>> A2j=[0.5,0,0.866,0,0,0];
>> A3j=[0.866,1,0,1,0,0];
>> A4j=[0.5,0,0,0,1,0];
>> A5j=[0,1,0.5,0,0,0];
>> A6j=[0,0,0.866,0,0,1];
>> A=[A1j;A2j;A3j;A4j;A5j;A6j]
A=
-0.8660 0 0.5000 0 0 0
0.5000 0 0.8660 0 0 0
0.8660 1.0000 0 1.0000 0 0
0.5000 0 0 0 1.0000 0
0 1.0000 0.5000 0 0 0
0 0 0.8660 0 0 1.0000
>> B=[0,1000,0,0,0,0]'
B=
0
1000
0
0
0
0

Ahora calculamos el determinante de A para saber si la matriz es invertible


>> detA=det(A)
detA =
1.0000

Al ser distinto de cero el determinante, la matriz A es invertible, por lo tanto la


solución SEL es única. Calculamos ésta por medio de la matriz inversa de A.

>> Ainv=inv(A)
Ainv =
-0.8660 0.5000 0 0 0 0
-0.2500 -0.4330 0 0 1.0000 0
0.5000 0.8660 0 0 0 0
1.0000 0.0000 1.0000 0 -1.0000 0
0.4330 -0.2500 0 1.0000 0 0
-0.4330 -0.7500 0 0 0 1.0000
>> X=Ainv*B
X=
500.0220
-433.0191
866.0381
0.0000
-250.0110
-749.9890

Asignamos cada coeficiente del vector de incógnitas X a las variables que corresponda.
Observando la solución del SEL, claramente está con signo cambiado respecto a los valores
esperados, por ejemplo esto se puede notar al revisar los resultados de las fuerzas verticales
en los apoyos de la estructura. Lo anterior se deriva de la convención de signos para los
sentidos de las direcciones x e y al imponer las fuerzas en el diagrama de cuerpo libre de cada
nodo. Por lo tanto, la solución del problema para las incógnitas fuerzas en libras (lb) es:

>> F1=-X(1)
F1 =
-500.0220
>> F2=-X(2)
F2 =
433.0191
>> F3=-X(3)
F3 =
-866.0381
>> H2=-X(4)
H2 =
-4.8075e-014
>> V2=-X(5)
V2 =
250.0110
>> V3=-X(6)
V3 =
749.9890

Además, otra opción es utilizar un el comando linsolve para resolver el SEL, que toma
como entradas solo la matriz A y B.

>> X=linsolve(A,B)
X=
500.0220
-433.0191
866.0381
0.0000
-250.0110
-749.9890

Finalmente, aproximando, el resultado de las fuerzas presentes en la estructura es

𝐹1 = −500 [𝑙𝑏] 𝐹2 = 433 [𝑙𝑏] 𝐹3 = −866 [𝑙𝑏]


𝐻2 = 0 [𝑙𝑏] 𝑉2 = 250 [𝑙𝑏] 𝑉3 = 750 [𝑙𝑏]

También podría gustarte