Documentos de Académico
Documentos de Profesional
Documentos de Cultura
--> A=[1 2 3; 4 5 6; 7 8 9]
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):
1. 4. 7. 1. 4. 7.
2. 5. 8. 2. 5. 8.
3. 6. 9. 3. 6. 9.
--> B*A
ans =
4. 2. 0.
7. 5. 5.
9. 5. 7.
0. 0.
Sea A --> A=[1 1 1;2 3 1;1 -1 -2]
A =
1. 1. 1.
2. 3. 1.
1. -1. -2.
--> det(A)
ans =
-5.
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:
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 =
A.inv(A)=A.B=I
--> A*B
ans =
1. 0. 0.
0. 1. 0.
0. 0. 1.
Operaciones con matrices
+ 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
Ax = b
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
[ ] . *[ ]
1. -2. 3. -4.
TIPOS DE MATRICES PREDEFINIDOS
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 =
--> 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 =
--> v
v =
1. 3. 4.
--> x=rand(1,6)
x =
--> x(v)
ans =
ejemplos
DIRECCIONAMIENTO DE VECTORES Y MATRICES
A PARTIR DE VECTORES
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
--> x=1:2:10
x =
1. 3. 5. 7. 9.
--> x=1:1.5:10
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.
Los dos puntos aislados representan "todos los elementos". Por ejemplo, el
siguiente comando extrae todos los elementos de la 3ª fila:
--> A(3, :)
ans =
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 =
ejemplos
ejemplos OPERADOR DOS PUNTOS (:)
--> A(3:5,:)
ans =
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 (:)
--> 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.
FT TF
FF TT
ejemplos
Operadores lógicos
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
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
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
calendar() devuelve una matriz con el calendario del mes actual, o del mes y año que
se especifique como argumento
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)
--> pol1=[1 -2 4]
pol1 =
1. -2. 4.
--> pol3=conv(pol1,pol2)
pol3 =
1. -2. 7. -10. 20. -16.
ejemplos
dividir polinomios
Para dividir polinomios existe deconv()
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
Ax = b
-->x = A\b // con A como una matriz no singular
SOLUCIÓN DE ECUACIONES LINEALES
x yz 2
2x 3y z 3
x y 2 z 6
--> 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
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
• Operaciones escalares
Ejm: --> b = [1 2 3 4 5]
b=1:5 o b=[1:5]
b=
1. 2. 3. 4. 5.
Resolución de problemas con Scilab
• Operaciones de arreglos (Matrices)
--> c = 1 : 2 : 9
Y regresa
c =
1 3 5 7 9
Resolución de problemas con Scilab
• Operaciones de arreglos (Matrices)
Y regresa
d =
1. 10. 19.
Resolución de problemas con Scilab
• Operaciones de arreglos (Matrices)
Y regresa…
e =
[Aij]x[Bjk]=[Cik]
4. 2.
3. 5.
2. 6.
1. 9. 1.
7. -2. 6.
--> c=a*b
c =
--> 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)
--> 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
variance(A) // varianza
Estadística descriptiva mean, sum, gsort, var
A =
2. 7. 4. 7.
6. 4. 6. 1.
4. 0. 7. 4.
ans =
5.
4.25
3.75
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.
ans =
20.
17.
15.
ans =
A =
2. 7. 4. 7.
6. 4. 6. 1.
4. 0. 7. 4.
ans =
7. 7. 4. 2.
6. 6. 4. 1.
7. 4. 4. 0.
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.
6.
5.5833333
8.25
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 =
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
0.30.50.70.8
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;
!lss A B C D X0 dt !
P2ODEb1
T Laplace Fracciones parciales
!lss A B C D X0 dt !
gf(2)= A matrix =
gf(4)= C matrix = c
1.5187629 0. 0.
gf(5)= D matrix =
2.
P2ODEb1
T Laplace Fracciones parciales
3+s se(4)
6 3 4
G ( s) 2
s 3 s 1 s 2 se(2) 2
3
------
1+s
P2ODEb1