Está en la página 1de 77

MATRICES VECTORES

Definición de matrices desde teclado

Las matrices se definen o introducen por filas;


los elementos de una misma fila están separados por blancos o comas,
mientras que las filas están separadas por pulsaciones intro o por
caracteres punto y coma (;)

Por ejemplo, el siguiente comando define una matriz A de dimensión


(3×3):

(las matrices se introducen por filas, se almacenan por columnas)

--> A=[1 2 3; 4 5 6; 7 8 9]

La respuesta del programa es la siguiente:


A =

1. 2. 3.
4. 5. 6.
7. 8. 9.
Definición de matrices desde teclado

A' (transpuesta de A)
Basta teclear lo siguiente (se añade a continuación la respuesta del programa):

--> A' --> B=A'


ans = B =

1. 4. 7. 1. 4. 7.
2. 5. 8. 2. 5. 8.
3. 6. 9. 3. 6. 9.

Ahora ya están definidas las matrices A y B, y es posible seguir operando con


ellas. Por ejemplo, se puede hacer el producto B*A
(debe resultar una matriz simétrica):

--> B*A
ans =

66. 78. 90.


78. 93. 108.
90. 108. 126.
Definición de matrices desde teclado

En Scilab se accede a los elementos de un vector poniendo el


índice entre paréntesis

(por ejemplo x(3) ó x(i))

Los elementos de las matrices se acceden poniendo los dos


índices entre paréntesis, separados por una coma

(por ejemplo A(1,2) ó A(i,j))

Las matrices se almacenan por columnas(aunque se introduzcan


por filas, como se ha dicho antes), y teniendo en cuenta esto
puede accederse a cualquier elemento de una matriz con un sólo
subíndice
Definición de matrices desde teclado

Por ejemplo, si A es una matriz (3×3)


--> A=[4 2 0;7 5 5;9 5 7]
A =

4. 2. 0.
7. 5. 5.
9. 5. 7.

se obtiene el mismo valor escribiendo A(1,3) que escribiendo A(7)

--> A(1,3) --> A(7)


ans = ans =

0. 0.
Sea A --> A=[1 1 1;2 3 1;1 -1 -2]
A =

1. 1. 1.
2. 3. 1.
1. -1. -2.

Determinante de una matriz A

--> det(A)
ans =

-5.

Rango de una matriz


--> rank(A)
ans =

3.
Definición de matrices desde teclado
Invertir una matriz es tan fácil como trasponerla. A continuación se va a definir
una nueva matriz A -no singular- en la forma:

--> A=[1 4 -3; 2 1 5; -2 5 3]


A =

1. 4. -3.
2. 1. 5.
-2. 5. 3.

O se pregunta si
A es “no
--> det(A) el det(A) es cero --> det(A)==0
singular”
ans = en forma lógica ans =
Porque su
determinante es
-122. Scilab responde F
diferente de cero
que “no” o “F”
Definición de matrices desde teclado
--> A=[1 4 -3; 2 1 5; -2 5 3] --> B=inv(A)
A = B =

1. 4. -3. 0.1803279 0.2213115 -0.1885246


2. 1. 5. 0.1311475 0.0245902 0.0901639
-2. 5. 3. -0.0983607 0.1065574 0.057377

A.inv(A)=A.B=I

--> A*B
ans =

1. 0. 0.
0. 1. 0.
0. 0. 1.
Operaciones con matrices

Los OPERADORES MATRICIALES de Scilab son :

+ adición o suma
– sustracción o resta
* multiplicación
' traspuesta
^ potenciación
\ división-izquierda
/ división-derecha
.* producto elemento a elemento
./ y .\ división elemento a elemento
.^ elevar a una potencia elemento a elemento
OPERADORES PARA LA RESOLUCIÓN DE SISTEMAS
DE ECUACIONES LINEALES

Scilab utiliza los operadores de división para la resolución de


sistemas de ecuaciones lineales

Considérese el siguiente sistema de ecuaciones lineales

Ax = b

donde x y b son vectores columna, y A una matriz cuadrada


invertible

La resolución de este sistema de ecuaciones se puede


escribir en las 2 formas siguientes:

x = inv(A)*b
x = A\b
OPERADORES PARA LA RESOLUCIÓN DE SISTEMAS
DE ECUACIONES LINEALES

 x  y  z 1  1 -1 1  1
  1 1 -1 x = -1 x = inv(A)*b
 z  y  z  1      x = A\b
 x  y  z  3 -1 -1 -1  3 

--> A=[1 -1 1; 1 1 -1; -1 -1 -1], b=[1;-1;3]


A =

1. -1. 1. --> x=A\b


1. 1. -1. x =
-1. -1. -1.
0.
b = -2.
-1.
1.
-1.
3.
OPERADOR ELEMENTO A ELEMENTO

[ ] . *[ ]

--> [1 2 3 4]*[1 -1 1 -1]

Inconsistent row/column dimensions.

--> [1 2 3 4].*[1 -1 1 -1]


ans =

1. -2. 3. -4.
TIPOS DE MATRICES PREDEFINIDOS

testmatrix : genera matrices especiales, como magic, Hilbert, Franck

testmatrix('magi',3)
testmatrix('hilb',4)
testmatrix('frk',10)

--> testmatrix('hilb',4)
--> testmatrix('magi',3) ans =
ans =
16. -120. 240. -140.
8. 1. 6. -120. 1200. -2700. 1680.
3. 5. 7. 240. -2700. 6480. -4200.
4. 9. 2. -140. 1680. -4200. 2800.
TIPOS DE MATRICES PREDEFINIDOS

--> testmatrix('frk',10)
ans =

10. 9. 8. 7. 6. 5. 4. 3. 2. 1.
9. 9. 8. 7. 6. 5. 4. 3. 2. 1.
0. 8. 8. 7. 6. 5. 4. 3. 2. 1.
0. 0. 7. 7. 6. 5. 4. 3. 2. 1.
0. 0. 0. 6. 6. 5. 4. 3. 2. 1.
0. 0. 0. 0. 5. 5. 4. 3. 2. 1.
0. 0. 0. 0. 0. 4. 4. 3. 2. 1.
0. 0. 0. 0. 0. 0. 3. 3. 2. 1.
0. 0. 0. 0. 0. 0. 0. 2. 2. 1.
0. 0. 0. 0. 0. 0. 0. 0. 1. 1.
ejemplos
--> A=rand(3,3)
B=diag(diag(A))
C=[A, eye(3); zeros(3), B]

--> A=rand(3,3)
A =

0.5015342 0.6325745 0.0437334


0.4368588 0.4051954 0.4818509
0.2693125 0.9184708 0.2639556

--> B=diag(diag(A))
B =

0.5015342 0. 0.
0. 0.4051954 0.
0. 0. 0.2639556
ejemplos

A eye(3,3)
--> C=[A, eye(3,3); zeros(3,3), B] zeros(3,3) B
C =

0.5015342 0.6325745 0.0437334 1. 0. 0.


0.4368588 0.4051954 0.4818509 0. 1. 0.
0.2693125 0.9184708 0.2639556 0. 0. 1.
0. 0. 0. 0.5015342 0. 0.
0. 0. 0. 0. 0.4051954 0.
0. 0. 0. 0. 0. 0.2639556
DIRECCIONAMIENTO DE VECTORES Y MATRICES
A PARTIR DE VECTORES
x(v) equivale al vector x(v(1)), x(v(2)), ...

--> v
v =

1. 3. 4.

--> x=rand(1,6)
x =

0.8784126 0.113836 0.1998338 0.5618661 0.5896177 0.685398

--> x(v)
ans =

0.8784126 0.1998338 0.5618661

ejemplos
DIRECCIONAMIENTO DE VECTORES Y MATRICES
A PARTIR DE VECTORES

--> f=[2 4], c=[1 2] --> f=[1 3 5 7]


f = f =

2. 4. --> A(f) 1. 3. 5. 7.
ans =
c =
5. --> A(f), A(5), A(6)
1. 2. 4. ans =

16.
--> A=testmatrix('magi',4) --> A(c) 9.
A = ans = 2.
7.
16. 2. 3. 13. 16.
5. 11. 10. 8. 5. ans =
9. 7. 6. 12.
4. 14. 15. 1. 2.

ans =

11.
ejemplos
OPERADOR DOS PUNTOS (:)
vector x :
--> x=1:10
x =

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

el operador (:) representa un rango: en este caso, los números enteros entre el 1 y el
10, por defecto el incremento es 1

también utilizarse con otros valores enteros y reales, positivos o negativos:

--> x=1:2:10
x =

1. 3. 5. 7. 9.
--> x=1:1.5:10
x =

1. 2.5 4. 5.5 7. 8.5 10.


--> x=10:-1:1
x =

10. 9. 8. 7. 6. 5. 4. 3. 2. 1. ejm
--> A=testmatrix('magi',6) OPERADOR
A = DOS PUNTOS (:)
35. 1. 6. 26. 19. 24.
3. 32. 7. 21. 23. 25.
31. 9. 2. 22. 27. 20.
8. 28. 33. 17. 10. 15.
30. 5. 34. 12. 14. 16.
4. 36. 29. 13. 18. 11.

Scilab accede a los elementos de una matriz por medio de los índices de fila y de
columna encerrados entre paréntesis y separados por una coma

--> A(2,3)
ans =

7.

extrae los 4 primeros elementos de la 6ª fila:

--> A(6, 1:4)


ans =

4. 36. 29. 13. ejemplos


OPERADOR DOS PUNTOS (:)

Los dos puntos aislados representan "todos los elementos". Por ejemplo, el
siguiente comando extrae todos los elementos de la 3ª fila:

--> A(3, :)
ans =

31. 9. 2. 22. 27. 20.

Para acceder a la última fila o columna puede utilizarse la palabra end, en lugar
del número correspondiente.

Por ejemplo, para extraer la sexta fila (la última) de la matriz, se utiliza $:

--> A($, :)
ans =

4. 36. 29. 13. 18. 11.

ejemplos
ejemplos OPERADOR DOS PUNTOS (:)

El siguiente comando extrae todos los elementos de las filas 3, 4 y 5:

--> A(3:5,:)
ans =

31. 9. 2. 22. 27. 20.


8. 28. 33. 17. 10. 15.
30. 5. 34. 12. 14. 16.

Se pueden extraer conjuntos disjuntos de filas utilizando corchetes [ ]. Por ejemplo,


el siguiente
comando extrae las filas 1, 2 y 5:

--> A([1 2 5],:)


ans =

35. 1. 6. 26. 19. 24.


3. 32. 7. 21. 23. 25.
30. 5. 34. 12. 14. 16.
OPERADOR DOS PUNTOS (:)
la siguiente secuencia de comandos sustituye las filas 2, 4 y 5 de B
por las filas 1, 2 y 3 de A

--> B=eye(A) --> B([2 4 5],:)=A(1:3,:)


B = B =

1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.
0. 1. 0. 0. 0. 0. 35. 1. 6. 26. 19. 24.
0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0.
0. 0. 0. 1. 0. 0. 3. 32. 7. 21. 23. 25.
0. 0. 0. 0. 1. 0. 31. 9. 2. 22. 27. 20.
0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1.

ejemplos
ejemplos OPERADOR DOS PUNTOS (:)

Para invertir el orden de las columnas de una matriz se puede hacer lo


siguiente:

--> A=testmatrix('magi',3)
A =

8. 1. 6.
3. 5. 7.
4. 9. 2.

--> A(:,3:-1:1)
ans =

6. 1. 8.
7. 5. 3.
2. 9. 4.

En general se hace: A(:,$:-1:1)

Finalmente, A(:) representa un vector columna con las columnas de A una


detrás de otra.
Operadores relacionales
El lenguaje de programación de Scilab dispone de los
siguientes operadores relacionales:
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
== igual que
~= distinto que

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

--> A==B --> A~=B


ans = ans =

FT TF
FF TT

ejemplos
Operadores lógicos

// Operadores logicos y de comparacion


3 > 2 //mayor que
3 < 2 //menor que
pause

3 <> 2 //diferente (no igual)


3 == 3 //igual
Pause

(2>1)&(3>1) //Operador AND


(2>1) | (3>5) //Operador OR
pause

~(2<1) //Operador NOT (no)


pause
Operadores lógicos
// Lazos (loops) en SCILAB
// "for" en multiples líneas
// Ejemplo 1
m=[];
for m = 1:10
a(m) = m^2
end
a

// "while" en varias lineas


// Ejemplo 2
s = 100;
while s>50
disp(s^2)
s = s – 5
End
Nota (comando pause)
clc

function c=foo(b)
a=42+b disp("Thanks to the pause, you can investigate
if ''a'' has the right value");
disp("Value can be changed too if needed.");
disp("function c=foo(b); a=42+b");
disp("Para salir de pause, con return o abort ");
pause

c=a+2
endfunction

foo(2)
P2ODEb2
Operadores lógicos

// Ejemplo 4 "select-case"
OS=getos()
select OS
case "Windows“ then
disp("Scilab on Windows")
case "Linux" then
disp("Scilab on Linux")
case "Darwin" then
disp("Scilab on MacOs")
else error("Scilab on Unknown platform")
end

P2ODEb3
Operadores lógicos
// Condicional
// "if...then...else"
// Instrucciones en lineas multiples (tambien puede efectuarse en una sola linea)
// Ejemplo 3 (elseif)
// Dependiendo del valor de x imprimir x, y o z
// Si x< 5 -> imprimir x
// Si 5<= x < 10 -> imprimir y
// Si x>= 10 -> imprimir z
// Para interrumpir introducir x = 0
x= 1; y = 100; z = 400;
while x<>0
x=input('Introduzca el valor x = ');
if x<5 then
disp(x)
elseif x>=10 then
disp(z)
else
disp(y)
end
end
P2ODEb4
Funciones basadas en el cálculo de
valores y vectores propios:
El estado de esfuerzos en un punto está definido por:

80 50 0 
σ= 50 -30 0  MPa
 0 0 20 

Calcular los esfuerzos principales


Los esfuerzos principales 1, 2, 3, se consiguen como los valores propios
o eigenvalores “spec(S)” de la matriz de esfuerzos “S”

--> S=[80 50 0; 50 -30 0; 0 0 20] --> SP=spec(S)


S = SP =

80. 50. 0. -49.3303 1(MPa)


50. -30. 0. 20. 2(MPa)
0. 0. 20. 99.3303 3(MPa)

ejemplos
Determinación de la fecha y la hora

clock devuelve un vector fila de seis elementos que representan el año, el mes, el día,
la hora, los minutos y los segundos, según el reloj interno del computador. Los
cinco primeros son valores enteros, pero la cifra correspondiente a los segundos
contiene información hasta las milésimas de segundo

now devuelve un número (serial date number) que contiene toda la información de
la fecha y hora actual. Se utiliza como argumento de otras funciones

date devuelve la fecha actual como cadena de caracteres


por ejemplo:

--> date
ans =

12-Jul-2020

ejemplos
Determinación de la fecha y la hora
datestr(t) convierte el serial date number t en cadena de caracteres con el día, mes,
año, hora, minutos y segundos. Ver en los manuales on-line los formatos de cadena
Admitidos

datenum() convierte una cadena ('mes-día-año') o un conjunto de seis números (año,


mes, día, horas, minutos, segundos) en serial date number

datevec() convierte serial date numbers o cadenas de caracteres en el vector de seis


elementos que representa la fecha y la hora

calendar() devuelve una matriz con el calendario del mes actual, o del mes y año que
se especifique como argumento

weekday(t) devuelve el día de la semana para un serial date number t.


ejemplos
Funciones para cálculos con polinomios
Para Scilab un polinomio se puede definir mediante un vector de
coeficientes. Por ejemplo, el polinomio:
x^4 − 8x^2 + 6x − 10 = 0
se puede representar mediante el vector [1, 0, -8, 6, -10]
Scilab puede realizar diversas operaciones sobre él, como por ejemplo
evaluarlo para un determinado valor de x (función horner()) y calcular las
raíces (función roots()):

--> pol=[1 0 -8 6 -10]


pol =

1. 0. -8. 6. -10.

--> roots(pol)
ans =

-3.2800487
2.6747996
0.3026246 + 1.0238251i
0.3026246 - 1.0238251i ejemplos
producto de polinomios
Para calcular producto de polinomios Scilab utiliza una función
llamada conv() (de producto debconvolución)

En el siguiente ejemplo se va a ver cómo se multiplica un polinomio de


segundo grado por otro de tercer grado:

--> pol1=[1 -2 4]
pol1 =
1. -2. 4.

--> pol2=[1 0 3 -4]


pol2 =
1. 0. 3. -4.

--> pol3=conv(pol1,pol2)
pol3 =
1. -2. 7. -10. 20. -16.
ejemplos
dividir polinomios
Para dividir polinomios existe deconv()

Las funciones orientadas al cálculo con polinomios son las siguientes:

poly(A) polinomio característico de la matriz A

roots(pol) raíces del polinomio pol

horner(pol,x) evaluación del polinomio pol para el valor de x. Si x es un vector,


pol se evalúa para cada elemento de x

polyvalm(pol,A) evaluación del polinomio pol de la matriz A

conv(p1,p2) producto de convolución de dos polinomios p1 y p2

[c,r]=deconv(p,q) división del polinomio p por el polinomio q. En c se devuelve


el cociente y en r el resto de la división residue(p1,p2) descompone el cociente
entre p1 y p2 en suma de fracciones simples (ver >>help residue)
dividir polinomios

derivat(pol) calcula la derivada de un polinomio

polyder(p1,p2) calcula la derivada de producto de polinomios

polyfit(x,y,n) calcula los coeficientes de un polinomio p(x) de grado n


que se ajusta a los datos p(x(i)) ~= y(i), en el sentido de mínimo error
cuadrático medio

interp1(xp,yp,x) calcula el valor interpolado para la abscisa x a partir


de un conjunto de puntos dado por los vectores xp e yp

interp1(xp,yp,x,'m') como la anterior, pero permitiendo especificar


también el método de interpolación. La cadena de caracteres m
admite los valores 'nearest', 'linear', 'spline', 'pchip', 'cubic' y 'v5cubic'
Casos ejemplo

x=0:0.5:2*%pi;
y=cos(x);
disp([x' y'])

0. 1.
La función disp toma únicamente un
0.5 0.8775826
argumento, el cual puede ser ambos, o
1. 0.5403023
una matriz de caracteres o una matriz
1.5 0.0707372
numérica
2. -0.4161468
2.5 -0.8011436
3. -0.9899925
3.5 -0.9364567
4. -0.6536436
4.5 -0.2107958
5. 0.2836622
5.5 0.7086698
6. 0.9601703

ejemplos
SOLUCIÓN DE ECUACIONES LINEALES

sistema de ecuaciones lineales de la


forma:

Ax = b
-->x = A\b // con A como una matriz no singular
SOLUCIÓN DE ECUACIONES LINEALES
 x yz 2

 2x  3y  z  3
 x  y  2 z  6

--> A=[1 1 1;2 3 1;1 -1 -2]; //matriz de los


coeficientes de las variables

--> b=[2;3;-6]; //matriz de los terminos independientes

--> x=A\b

x =

-1.
1.
2. ejemplos
Encontrar la matriz aumentada [A b], la cual es una combinación de
coeficientes de la matriz A y el lado derecho
es el vector b del sistema lineal

Ax = b

--> C=[A b] //escribe la matriz aumentada del sistema


de ecuac. lineales
C =
1. 1. 1. 2.
2. 3. 1. 3.
1. -1. -2. -6.

--> rref(C) //lleva a la forma escalonada reducida por


filas
ans =

1. 0. 0. -1.
0. 1. 0. 1.
0. 0. 1. 2.
ejems
Hallar las raíces del polinomio p(x) = 3x^2 + 5x -6
--> p=[3 5 -6];
--> r=roots(p)
r =
-2.4748096
0.808143

Hallar el valor de la función polinómica La función horner se utiliza para


p3(x) = x^3 - 2x + 12 evaluar un polinomio pn(x) en un
en el punto dado x = 1.5 punto particular x

--> x=poly(0,'x') //declarar x polinomio --> sol=horner(p1,1.5)


x = sol =
x
12.375

--> p1=x^3-2*x+12 //definir polinomio


p1 =
3
12 -2x +x
ejemplos
Resolución de problemas con Scilab

• Operaciones escalares

Operación Sintaxis algebraica Sintaxis Scilab


Resolución de problemas con Scilab

• Operaciones de arreglos (Matrices)

• Para matrices de intervalos regulares

Ejm: --> b = [1 2 3 4 5]

Se puede simplificar la entrada, colocando la función…

b=1:5 o b=[1:5]

Y regresa… (Por defecto el incremento es de 1)

b=
1. 2. 3. 4. 5.
Resolución de problemas con Scilab
• Operaciones de arreglos (Matrices)

• Para matrices de intervalos regulares. Con incrementos diferentes de uno


(1)
Ejm: c = [1 3 5 7 9] (incremento de 2)

incremento entre el primero y último valor…

--> c = 1 : 2 : 9
Y regresa
c =
1 3 5 7 9
Resolución de problemas con Scilab
• Operaciones de arreglos (Matrices)

• Espaciamiento de n cantidad de veces entre dos números. Con el comando


linspace
Ejms:
--> d=linspace(1,19,3)
se coloca el intervalo en los dos primeros espacios y en el ultimo se coloca el
numero n de veces que se desea dividir…

Y regresa

d =

1. 10. 19.
Resolución de problemas con Scilab
• Operaciones de arreglos (Matrices)

• espaciamiento de n cantidad de veces entre dos números potencia de 10,


comando logspace

Ejm: Para una matriz --> e = [10 100 1000]


--> e=logspace(1,3,3)
se coloca en los dos primeros valores las potencias del primer y ultimo valor
del intervalo y en el ultimo se coloca el numero n de veces que se desea
dividir…

Y regresa…
e =

10. 100. 1000.


Resolución de problemas con Scilab

• Operaciones de arreglos (Matrices)


• Multiplicación de matrices:
• CASO 1:

[Aij]x[Bjk]=[Cik]

Nota: Solo se pueden realizar en matrices donde el número de


columnas de la primera sea igual al numero de filas de la
segunda y la matriz resultante será de orden igual a el numero
de filas de la primera y el numero de columnas de la segunda.
Resolución de problemas con Scilab
--> a=[4 2;3 5;2 6]
a =

4. 2.
3. 5.
2. 6.

--> b=[1 9 1;7 -2 6]


b =

1. 9. 1.
7. -2. 6.

--> c=a*b
c =

18. 32. 16.


38. 17. 33.
44. 6. 38.
Resolución de problemas con Scilab
• Operaciones de arreglos (Matrices)
• Multiplicación de matrices:
• CASO 2:
(Cuando se desea una multiplicación de elemento por elemento – multiplicación punto)

--> a=[1 2 3]
a =
Nota: Solo se pueden realizar en matrices donde son de orden
1. 2. 3.
idéntico
--> b=[6 7 8]
La misma sintaxis se cumple para la división elemento por
b =
elemento (./)
y la exponenciación (.^n) de elementos individuales:
6. 7. 8.
a./b
--> c=a.*b a.^n
c =

6. 14. 24.
Resolución de problemas con Scilab
• Operaciones de arreglos (Matrices)

Realizar una tabla de conversiones de grados a radianes.


Grados [10 15 20 30 90 100], mostrar los resultados en una tabla de conversión

--> grados=[10 15 20 30 90 100]


grados =

10. 15. 20. 30. 90. 100.

--> radianes=grados * %pi/180


radianes =

0.1745329 0.2617994 0.3490659 0.5235988 1.5707963 1.7453293


Resolución de problemas con Scilab

• Operaciones de arreglos (Matrices)


• Realizar una tabla de conversiones de grados a radianes.
Grados [10 15 20 30 90 100], mostrar los resultados en una tabla de conversión

--> tabla=[grados',radianes']
tabla =

10. 0.1745329
15. 0.2617994 Se realiza la transpuesta de las matrices para
20. 0.3490659 cambiar de filas a columnas y así presentar en
30. 0.5235988 forma de tabla.
90. 1.5707963
100. 1.7453293
Estadística descriptiva

mean, sum, sort, var

A=[2 7 4 7;6 4 6 1;4 0 7 4 ]

mean(A) // media aritmética

sum(A) // suma de los valores

gsort(A) // ordena - menor a mayor

variance(A) // varianza
Estadística descriptiva mean, sum, gsort, var

--> A=[2 7 4 7;6 4 6 1;4 0 7 4 ]

A =
2. 7. 4. 7.
6. 4. 6. 1.
4. 0. 7. 4.

--> mean(A,'c')//media de cada fila

ans =

5.
4.25
3.75

--> mean(A,'r')//media de cada columna

ans =

4. 3.6666667 5.6666667 4.
Estadística descriptiva mean, sum, gsort, var

--> A=[2 7 4 7;6 4 6 1;4 0 7 4 ]

A =
2. 7. 4. 7.
6. 4. 6. 1.
4. 0. 7. 4.

--> sum(A,'c')//suma de cada fila

ans =

20.
17.
15.

--> sum(A,'r')//suma de cada columna

ans =

12. 11. 17. 12.


Estadística descriptiva mean, sum, gsort, var

--> A=[2 7 4 7;6 4 6 1;4 0 7 4 ]

A =
2. 7. 4. 7.
6. 4. 6. 1.
4. 0. 7. 4.

--> gsort(A,'c')//ordena cada fila - menor a mayor

ans =

7. 7. 4. 2.
6. 6. 4. 1.
7. 4. 4. 0.

--> gsort(A,'r') //ordena cada columna - menor a mayor

ans =

6. 7. 7. 7.
4. 4. 6. 4.
2. 0. 4. 1.
Estadística descriptiva mean, sum, gsort, variance

--> A=[2 7 4 7;6 4 6 1;4 0 7 4 ]

A =
2. 7. 4. 7.
6. 4. 6. 1.
4. 0. 7. 4.

--> variance(A,'c') //varianza de cada fila


ans =

6.
5.5833333
8.25

--> variance(A,'r') //varianza de cada columna

ans =

4. 12.333333 2.3333333 9.
Estadística descriptiva

hist, histfit
disp('P2a2')
%valores gaussianos con media cero y varianza 1.0 en [0,1]
mediante:
%randn(m) genera una matriz de orden m
%randn(m,n) genera una matriz de orden m por n
y=randn(1500,1); % genera 1500 números aleatorios con
distribución
%normal de media cero y varianza 1
hist(y) % dibuja un histograma de 10 barras y la función de
densidad
% normal para los datos del vector y
%%
histfit(y) % dibuja un histograma y la función de densidad
% normal para los datos del vector y
Distribución Normal
Estándar histplot(x,y);

--> x=-2.9:0.1:2.9;

--> y=rand(1000,1,"normal");

--> histplot(x,y);
Distribución Normal Histograma con ajuste de distribución histfit(data)
Estándar
>> histplot(n,x)//n:Num. Clases
--> rand("normal")
--> x = rand(20,1)
x =
0.6107784
-1.0567864
-0.3778182
1.1456173
2.5749105
-0.5005553
.
.
0.9182207
-0.9355485

--> media=mean(x) --> var=variance(x) --> dstd=sqrt(variance(x))


media = var = dstd =

0.2376479 1.2762855 1.1297281


Distribución Normal histfit ( )
Estándar
>>x=[1 3 3 2 4 2 5 3 4 3 3 2 4 1 3 4]
media=mean(x)
dstd=sqrt(variance(x))
histplot(4,x)

media =

2.9375

dstd =

1.1236
Sistema ecuaciones diferencial ordinario
Problema de Cauchy
function [dydx]=fty(t, y),dydx=[(2-y(1))*y(2);(0.3*y(1)-1)*y(2)],endfunction
t0=0;
y0=[1;2];
tf=10;
t=linspace(t0,tf);
y=ode(y0,t0,t,fty);
plot2d(t',y')

P2ODE1
Ecuación diferencial ordinaria
Problema de Cauchy
x’’(t) = -3cos2(t)+2 ; x(0) = 0 y x’(0) = 0

clear
clc
//Resolución de una ecuación diferencial de segundo orden
//cambio de variable para simplificar el orden de nuestra ecuación y de esa forma
//poderla meterla en Scilab
//Declaramos nuestra función
function dy=f(t, x)
dy=[x(2);-3*(cos(t))^2+2]
endfunction
t0=0; //Las condiciones de t
x0=[0;0]; //Las condiciones de x
t=0:0.1:6; //La grafica de 0 a 6 con marco de paso de 0.1
x=ode(x0,t0,t,f); //Solución de la ec diferencial con los valores iniciales y de mov de la
gráfic
plot(t,x(1,:),"*"); // grafica resultado

P2ODE2
Ecuación diferencial ordinaria
Problema de Cauchy
x’’(t) = -3cos2(t)+2 ; x(0) = 0 y x’(0) = 0

P2ODE2
EDO 3er Orden
Problema de Cauchy
x’’’ = 2x’+ln(x’’)+cos(x’) ; x(0) = 1, x’(0) = 0 y x’’(0)=5

function [y]=dif(t, y)
y=[y(2);y(3);2*y(2)+log(y(3))+cos(y(1))]
endfunction
y=ode([1;-3;5],0,t,dif);//Indica solución ec diferencial
t=0:0.1:10;//Indica rango la grafica
plot(t,y(1,:)); //plot de la 1ra
plot(t,y); //plot de las tres

P2ODE3
EDO 3er Orden
Problema de Cauchy
x’’’ = 2x’+ln(x’’)+cos(x’) ; x(0) = 1, x’(0) = 0 y x’’(0)=5

P2ODE3
Sistema 2do Orden R(s) : escalón
syslin - csim

Respuesta para un sistema de segundo orden


C (s) n2
 2
R( s ) s  2n s  n2

Con coeficiente de amortiguamiento

  0.30.50.70.8

Frecuencia natural no amortiguada

n  1, 2, 4, 6

P2ODE8
Sistema 2do Orden, R(s) : escalón, syslin - csim
//multi respuesta con entrada escalón
s=%s
a=[1 2 4 6 ] ;
b=[0.3 0.5 0.7 0.8];
t=0:0.16:16;
for i =1:4,
num(i)=a(i)^2;
den(i)=s^2+2*b(i)*a(i)*s+a(i)^2;
cr=syslin('c',num( i)/den(i));
c=csim( 'step', t, cr);
plot2d(t,c,i);
end;
xgrid;
xtitle ('Respuesta del sistema a un escalon' , 't (seg) ', 'Amplitud');
legends ( ['casol', 'caso2', 'caso3 ', 'caso4' ] , [ 1, 2, 3,4], opt=4) ;
//leyenda en esquina inferior derecha
P2ODE8
Sistema 2do Orden, R(s) : escalón, syslin - csim

syslin
[sl]=syslin(dom,H)
dom='c' for a continuous time system,
dom='d' for a discrete time system,
n for a sampled system with sampling period n (in seconds).
H rational matrix or linear state space representation

En nuestro caso
cr=syslin('c',num( i)/den(i));
// H: función de transferencia G=num( i)/den(i)
// 'c‘ :sistema continuo en el tiempo
P2ODE8
Sistema 2do Orden, R(s) : escalón, syslin - csim

csim
simulation (time response) of linear system
c=csim('step', t, cr);

En nuestro caso
c=csim( 'step', t, cr);

P2ODE8
Sistema 2do Orden, R(s) : escalón, syslin - csim

P2ODE8
Sistema 2do Orden, R(s) : impulso, syslin - csim
//multi respuesta – IMPULSO
s=%s
a=[1 2 4 6 ] ;
b=[0.3 0.5 0.7 0.8];
t=0:0.16:16;
for i =1:4,
num(i)=a(i)^2;
den(i)=s^2+2*b(i)*a(i)*s+a(i)^2;
cr=syslin('c',num( i)/den(i));
c=csim( 'impulse', t, cr);
plot2d(t,c,i);
end;
xgrid;
xtitle ('Respuesta del sistema a un escalon' , 't (seg) ', 'Amplitud');

P2ODE9
legends ( ['caso1', 'caso2', 'caso3 ', 'caso4' ] , [ 1, 2, 3,4], opt=4) ;
Sistema 2do Orden, R(s) : escalón, syslin - csim

P2ODE9
T Laplace Fracciones parciales

s=%s
num=2*s^3+5*s^2+3*s+6;
den=s^3+6*s^2+11*s+6;
g=syslin('c',num/den);
gf=tf2ss(g)
se=pfss(g)

tf2ss pfss
Transfiere al espacio de Descompone en fracciones
estado parciales

x  Ax + Bu
y  Cx  Du

Muestra A, B, C, D

P2ODEb1
T Laplace Fracciones parciales

--> num=2*s^3+5*s^2+3*s+6;

--> den=s^3+6*s^2+11*s+6;

s=%s --> g=syslin('c',num/den);


num=2*s^3+5*s^2+3*s+6;
den=s^3+6*s^2+11*s+6; --> gf=tf2ss(g)
g=syslin('c',num/den);
gf=tf2ss(g) gf =
se=pfss(g)

gf(1) (state-space system:)

!lss A B C D X0 dt !

P2ODEb1
T Laplace Fracciones parciales
!lss A B C D X0 dt !

gf(2)= A matrix =

-3.5368332 0.6478308 -6.661D-16


-3.1791788 -0.0643968 -0.0676323 gf(6)= X0 (initial state) =
5.728151 1.0963196 -2.39877
0.
gf(3)= B matrix = 0.
0.
-4.6090145
-1.786594
2.7504668 gf(7)= Time domain =

gf(4)= C matrix = c

1.5187629 0. 0.

gf(5)= D matrix =

2.

P2ODEb1
T Laplace Fracciones parciales

s=%s --> se=pfss(g)


num=2*s^3+5*s^2+3*s+6; se = se(3)
den=s^3+6*s^2+11*s+6;
g=syslin('c',num/den);
gf=tf2ss(g) se(1) -4
se=pfss(g) ------
-6 2+s
------

3+s se(4)
6 3 4
G ( s)     2
s  3 s 1 s  2 se(2) 2

3
------

1+s

P2ODEb1

También podría gustarte