Você está na página 1de 11

COMPARACIÓN DE COMANDOS ENTRE SCILAB Y MATLAB

INSTRUCCIÓN SCILAB INSTRUCCIÓN MATLAB


Los scripts: Los scripts:
Por convenio, los scripts de Scilab tienen el sufijo .sce . Se teclea el nombre del fichero en la línea de comandos de Matlab o se incluye
Para ejecutar un script se usa la orden dicho nombre en otro fichero *.m.
-->exec(nombre_fichero) // repite todas las instrucciones en pantalla
-->exec(nombre_fichero, -1) // para que no repita las instrucciones

Las funciones Scilab responden al siguiente formato de escritura: Para las funciones se escribe primero la palabra function, seguida por los valores
function [argumentos de salida] = nombre(argumentos de entrada) de salida (entre corchetes [ ] y separados por comas si hay más de uno), el
// comentarios signo igual (=) y el nombre de la función seguido de los argumentos (entre
// paréntesis ( ) y separados
... por comas):
instrucciones (normalmente terminadas por ; para evitar eco en function [a,b,c] = nombre_función (x,y,z)
pantalla)
...
endfunction
3. OBJETOS Y SINTAXIS BÁSICOS
Las variables son sensibles a las mayúsculas, deben comenzar siempre con una
Algunas constantes numéricas están predefinidas. Sus nombres letra, no pueden contener espacios en blanco y pueden nombrarse hasta con 63
comienzan por el símbolo %. En particular %pi es el número π, %e es el caracteres (en versiones anteriores no permitía tantos caracteres). Si se nombra
número e, %i es la unidad imaginaria, %eps es la precisión de la una variable con más de 63 caracteres truncará el nombre de
máquina, %inf es el infinitomáquina dicha variable.

Lo que se escribe en cualquier línea detrás de // es considerado como


comentario

3.1 Constantes y operadores aritméticos

Reales: 8.01 -5.2 .056 1.4e+5 0.23E-2 -.567d-21 8.003D-12


Complejos: 1+2*%i
Booleanos: %t %f
Caracteres (entre apóstrofes o comillas): ’esto es una cadena de
caracteres’ “string“
Operadores aritméticos: + - * / ^
Operadores de comparación: == ~= (ó <>) < > <= >=
Operadores lógicos: & | ~
La principal diferencia es el signo %previo al nombre de la variable

3.2 Funciones elementales Algunas funciones elementales:

Trigonométricas
3.4 Variables
En Scilab las variables no son nunca declaradas: su tipo y su tamaño Matlab almacena el último resultado obtenido en la variable ans.
cambian de forma dinámica de acuerdo con los valores que le son Tecleando clear podemos borrar todas las variables del espacio de trabajo, pero
asignados. no borra lo de las demás ventanas, es decir, no desaparece lo que hay escrito en
la ventana de comandos.
Tecleando clc borramos lo que hay en la ventana de comandos pero no borra las
variables de la memoria del espacio de trabajo.

Son similares en las dos aplicaciones


4. MATRICES MATRICES
Como ya se ha dicho, las matrices bidimensionales de números reales o Para crear un vector introducimos los valores deseados separados por espacios (o
complejos son los objetos básicos con los que trabaja Scilab. Los comas) todo ello entre corchetes []. Si lo que queremos es crear una matriz lo
vectores y escalares son casos particulares de matrices. hacemos de forma análoga pero separando las filas con puntos y comas (;).
A = [1 2 3; 4 5 6] % es una matriz con 2 filas y 3 columnas
a=[1,2,3,4;5,6,7,8;9,10,11,12] // matriz 3x4
Algunas funciones para generar matrices
Otras órdenes para crear matrices son: zeros (n) crea una matriz cuadrada n x n de ceros.
zeros (m,n) crea una matriz m x n de ceros.
-->v1=a:h:b // crea un vector fila de números desde a hasta un número ones (n) crea una matriz cuadrada n x n de unos.
c <= b ones (m,n) crea una matriz m x n de unos.
// tal que c+h > b, con incrementos de h rand (n) crea una matriz cuadrada n x n de números aleatorios con distribución
-->v2=a:b // como el anterior, con paso h=1 uniforme (0,1).
-->v3=v2’ // matriz traspuesta (conjugada si es compleja) rand (m,n) crea una matriz m x n de números aleatorios con distribución
-->v4=v2.’ // matriz traspuesta sin conjugar uniforme (0,1).
randn (n) crea una matriz cuadrada n x n de números aleatorios con distribución
Algunas funciones para generar matrices: normal (0,1).
randn (m,n) crea una matriz m x n de números aleatorios con distribución normal
(0,1).
eye (n) crea una matriz cuadrada n x n de unos en la diagonal y ceros el resto.
eye (m,n) crea una matriz m x n de unos en la diagonal y ceros el resto.
magic (n) crea una matriz cuadrada n x n de enteros de modo que sumen lo
mismo las filas y las
columnas.
hilb (n) crea una matriz cuadrada n x n de Hilbert, es decir, los elementos (i,j)
responden a la
expresión (1/(i+j-1)).
Las operaciones con matrices son similares salvo un par de invhilb (n) crea una matriz cuadrada n x n que es la inversa de la matriz de
diferencias relacionadas con las transpuestas. Hilbert.
4.2 Manipulación de matrices: operadores y funciones
Los operadores aritméticos representan las correspondientes
operaciones matriciales siempre que tengan sentido. Cuando van
precedidos de un punto deben entenderse en el sentido de que la

operación se efectúa "elemento a elemento".


Para acceder a los elementos de una matriz necesitamos dar dos valores, el
4.3 Manipulación de los elementos de una matriz. Extracción, primero indica la fila y el segundo la columna.
inserción y eliminación >> A = [1 2 3; 4 5 6];
>> A (2,1) % elemento de la matriz que está en la fila 2 y en la columna 1
ans =
4
Si queremos que escriba toda una fila usaremos los dos puntos para indicar que
queremos todos los elementos.
>> A (2,:) % escribe la segunda fila de la matriz
ans =
456
Esta operación se realiza de manera similar en los dos lenguajes
Matlab tiene además otra forma de identificar cada elemento de una matriz, de
modo que podemosacceder a un elemento de una matriz indicando sólo un valor
y no dos, pero debemos saber que el orden elegido por Matlab es por columnas
así los elementos de la matriz A serían denominados:
A(1) A(3) A(5)
A(2) A(4) A(6)
6. POLINOMIOS Un polinomio se representa por un vector fila con sus coeficientes en orden
-->p=poly(a,"x") descendiente, no debemos olvidar colocar los términos con coeficiente nulo.
siendo a una matriz cuadrada nxn es el polinomio caracterísitco de la Así por ejemplo si queremos indicar el polinomio 5x4 + 2x2 – x + 7 escribiríamos
matriz a, con variable simbólica x [5 0 2 -1 7].
-->a=companion(p) Para encontrar las raíces de un polinomio p usaremos la función roots (p)
donde p es un polinomio es la matriz "compañera" de p, también, Si conocemos las raíces de un polinomio es posible construir el polinomio
llamada de Frobenius, es decir la matriz asociado mediante la función poly (r).
cuyo polinomio característico es p. Matlab trabaja con los polinomios como vectores fila y con las raíces como
-->p=poly(v,"x","roots") vectores columnas.
siendo v un vector numérico es el polinomio, con variable simbólica x, Otras características:
cuyas raíces son las componentes
de v
-->p=poly(v,"s","coeff")
siendo v un vector numérico es el polinomio, con variable simbólica s,
cuyos coeficientes son las
componentes del vector v (en orden de menor a mayor grado)
-->t=poly(0,"t")
-->p=1+t-4*t^2+%pi*t^5
define t como un símbolo que permite definir otros polinomios con
variable t mediante su expresión
algebraica.
-->roots(p)
calcula las raíces del polinomio p
7. RESOLUCIÓN DE ECUACIONES NO LINEALES
x = fsolve(fun,x0) comienza en x0 y trata de resolver las ecuaciones fun(x) = 0, una
Scilab dispone de la función fsolve, cuya utilización más sencilla es: matriz de ceros.
-->x=fsolve(x0,fun) ejemp
-->[x,val]=fsolve(x0,fun) x = fsolve(fun,x0,options) resuelve las ecuaciones con las opciones de
optimización especificadas en options. Utilice optimoptions para establecer estas
opciones.
Los dos lenguajes cuentan con la misma función fsolve ejemp
x = fsolve(problem) resuelve problem, donde problem es una estructura descrita
en Argumentos de entrada. Cree la estructura problem exportando un problema
desde la aplicación de optimización, como se describe en Exportar su trabajo.
ejemp
[x,fval] = fsolve(___), para cualquier sintaxis, devuelve el valor de la función
objetiva fun en la solución x.
ejemp
[x,fval,exitflag,output] = fsolve(___) Además, devuelve un valor exitflag que
describe la condición de salida de fsolvey una estructura output con información
sobre el proceso de optimización.

[x,fval,exitflag,output,jacobian] = fsolve(___) Devuelve el jacobiano de fun en la


solución x.
8. CÁLCULO DE INTEGRALES DEFINIDAS
q = integral(fun,xmin,xmax) integra de forma numérica la
Para calcular la integral definida de una función de una variable Scilab función fun de xmin a xmax mediante la cuadratura adaptativa global y las
dispone de la función: tolerancias de error predeterminadas.
-->intg(a,b,f)
ejemp
donde f debe ser una función de la forma y=f(t) y a y b son los límites
de integración q = integral(fun,xmin,xmax,Name,Value) especifica opciones adicionales con uno
o más argumentos de par Name,Value. Por ejemplo,
Para integrales dobles: especifique 'WayPoints' seguido de un vector de números reales o complejos
-->int2d(X,Y,f) para indicar los puntos específicos que debe utilizar el integrador.

Para integrales triples: Para integrales dobles:


-->int3d(X,Y,Z,f) q = integral2(fun,xmin,xmax,ymin,ymax)
q = integral2(fun,xmin,xmax,ymin,ymax,Name,Value)

Para integrales triples:


q = integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax)
q = integral3(fun,xmin,xmax,ymin,ymax,zmin,zmax,Name,Value)
9. RESOLUCIÓN DE ECUACIONES DIFERENCIALES

Para resolver problemas de valor inicial relativos a (sistemas de)


ecuaciones diferenciales ordinarias Scilab dispone de la funcion ode .

10. REPRESENTACIONES GRÁFICAS CON SCILAB 10. REPRESENTACIONES GRÁFICAS CON MATLAB
9.1 Curvas planas
El comando básico de Scilab para dibujar curvas planas es plot2d. La orden plot genera una gráfica. Los argumentos deben ser vectores de la misma
longitud.
-->polarplot(theta,rho) // con esta función se grafican en coordenadas Ejemplo:
polares >> x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9];
>> plot (x,y)
-->plot2d2(x,y) Una ventana gráfica se puede dividir en m particiones horizontales y en n
es similar a plot2d, pero dibuja una función constante a trozos verticales, de modo que
(escalonada) cada subventana tiene sus propios ejes, y para hacer esto vamos a usar subplot
(m,n,p) donde p
-->plot2d3(x,y) indica la subdivisión que se convierte en activa.
es similar a plot2d, pero dibuja una función utilizando líneas verticales >> x = 1:360; y1 = sind (x); y2 = cosd (x); y3 = exp (x); y4 = exp (-x);
>> subplot (2,2,1), plot (x,y1), title ('seno')
-->plot2d4(x,y) >> subplot (2,2,2), plot (x,y2), title ('coseno')
es similar a plot2d, pero dibuja una curva utilizando puntas de flecha >> subplot (2,2,3), plot (x,y3), title ('exponencial')
(por ejemplo para señalar la dirección de una trayectoria) >> subplot (2,2,4), plot (x,y4), title ('-exponencial')

-->fplot2d(x,f)
donde x es un vector y f es el nombre de una función Scilab, dibuja la
curva que pasa por los puntos (xi,f(xi)). La función debe responder a
la forma [y]=f(x).
9.2 Curvas en el espacio
-->param3d(x,y,z) También podemos crear gráficas en 3 dimensiones, se trata de extender la orden
donde x , y , z son tres vectores de la misma dimensión, dibuja la curva de plot (2-D) a plot3 (3-D) donde el formato será igual pero los datos estarán en
que pasa por los puntos (xi,yi,zi) tripletes:

-->param3d1(x,y,z)
es similar a param3d pero permite dibujar varias curvas. Aquí, x , y , z
son tres matrices de la misma dimensión cuyas columnas determinan
las distintas curvas.

-->param3d1(x,y,list(z,colors))
donde colors en un vector de números enteros, dibuja la i-ésima curva
del color definido por el i-ésimo elemento de colors
9.3 Superficies
plot3d, fplot3d, plot3d1, fplot3d1 Matlab contiene un conjunto de funciones gráficas 3D para crear superficies,
-->plot3d(x,y,z) contornos, y variaciones, así como especializaciones de esas formas básicas • Una
dibuja la superficie definida por la función z=f(x,y). superficie se define por la expresión Matlab 11 • Una superficie se define por la
x : vector de dimensión n expresión
y : vector de dimensión m z = f x, y ( )
z : matriz de dimensión nxm donde x e y son las coordenadas en el plano-xy y z es la altura resultante
x e y contienen las coordenadas de los puntos de la malla rectangular
sobre la que se dibuja la función surf – dibuja una superficie compuesta de parches de colores que dependen de la
z contiene los valores de la función en los nodos: z(i,j)=f( x(i), y(j)) magnitud z mesh – dibuja parches de superficies blancas que se definen por su
Para construir la matriz z a partir de los vectores x e y puede ser util la contorno. Los colores de las líneas de los parches se determinan por la magnitud
función de z.
-->[xm,ym]=ndgrid(x,y)
que construye dos matrices xm e ym de dimensión nxm tales que el Superficie de malla:
nodo La orden [X,Y]=meshgrid(x,y) crea una matriz X cuyas filas son copias del vector x
(i,j) de la malla tiene las coordenadas (xm(i,j),ym(i,j)). Con ayuda de y una matriz Y
estas matrices los valores de la función f(x,y) pueden calcularse cuyas columnas son copias del vector y. Para generar la gráfica de malla se usa la
mediante: orden
-->z=f(xm,ym) mesh(X,Y,Z), mesh acepta un argumento opcional para controlar los colores.
También puede tomar
una matriz simple como argumento: mesh(Z).
grayplot, Sgrayplot, fgrayplot, Sfgrayplot
-->grayplot(x,y,z) // con valores de z
-->fgrayplot(x,y,f) // con nombre de función
-->Sgrayplot(x,y,z) // suavizado, con valores
-->Sfgrayplot(x,y,f) // suavizado, con función
representación plana de una función z=f(x,y) usando colores.
x : vector de dimensión n
y : vector de dimensión m
z : matriz de dimensión nxm : z(i,j)=f(x(i),y(j))
f : función externa del tipo z=f(x,y)
Sgrayplot y Sfgrayplot hacen lo mismo que las anteriores pero con
"suavizado", es decir, el color en cada faceta se interpola, en lugar de
ser constante
contour, contour2d, contourf
Las gráficas de contorno en 2-D y 3-D se generan usando respectivamente las
Este grupo de funciones sirve para dibujar curvas de nivel de una funciones contour y contour3.
superficie >> contour (X,Y,Z) % dibuja las líneas de contorno
-->contour(x,y,z,nz)
-->contour2d(x,y,z,nz) La función pcolor transforma la altura a un conjunto de colores.
-->contourf(x,y,z,nz) >> colorbar % añade la barra de color a la figura actual
x : vector de dimensión n
y : vector de dimensión m
z : matriz de dimensión nxm : z(i,j)=f(x(i),y(j))
nz : si es un numero entero, se dibujan nz curvas de nivel
regularmente espaciadas;
si nz es un vector numérico se dibujan las curvas de nivel
correspondientes a los valores contenidos en nz

champ, champ1
Estas dos funciones sirven para representar un campo de vectores en
el plano XY
-->champ(x,y,fx,fy) // intensidad = longitud flechas
-->champ1(x,y,fx,fy) // intensidad = color flechas
representación del campo de vectores
x : vector de dimensión n
y : vector de dimensión m
fx : matriz de dimensión nxm : primera comp. campo
fy : matriz de dimensión nxm : segunda comp. campo

Você também pode gostar