Apuntes Scilab
Apuntes Scilab
Apuntes Scilab
Scilab es un paquete de software libre de código abierto para computación científica, orientado al cálculo
numérico, a las operaciones matriciales y especialemente a las aplicaciones científicas y de ingeniería.
Puede ser utilizado como simple calculadora matricial, pero su interés principal radica en los cientos de
funciones tanto de propósito general como especializadas que posee así como en sus posibilidades para la
visualización gráfica.
Scilab posee además un lenguaje de programación propio, muy próximo a los habituales en cálculo
numérico (Fortran, C, …) que permite al usuario escribir sus propios scripts (conjunto de comandos
escritos en un fichero que se pueden ejecutar con una única orden) para resolver un problema concreto y
también escribir nuevas funciones con, por ejemplo, sus propios algoritmos. Scilab dispone, además, de
numerosas Toolboxes, que le añaden funcionalidades especializadas.
La versión actual es la 4.1.2. Tanto los binarios para varias plataformas (GNU Linux, Windows
2000/XP/Vista, Hp-UX) como los fuentes están disponibles en http://www.scilab.org/download
Scilab dispone de un manual de usuario que se puede consultar en una ventana de ayuda (Help
Browser). Esta ayuda se puede invocar desde la barra de herramientas (? ---> Scilab Help en Windows,
Help ---> Help Browser en Linux) o escribiendo mediante el comando help(). Se puede acceder
fácilmente a la descripción de todas las funciones que, en muchos casos, se acompaña de ejemplos de uso
ilustrativos.
También dispone de un conjunto de Demos que pueden ayudar mucho al aprendizaje de Scilab ya que se
acompañan, en general, del código que genera la demostración.
Sin embargo, Scilab no dispone de un tutorial propiamente dicho que facilite los primeros pasos, que
explique la filosofía general del lenguaje o que indique cómo resolver problemas técnicos concretos.
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 2
2.1 Scripts
Un script es un conjunto de instrucciones (de cualquier lenguaje) guardadas en un fichero (usualmente de
texto) que son ejecutadas normalmente mediante un intérprete. Son útiles para automatizar pequeñas
tareas. También puede hacer las veces de un "programa principal" para ejecutar una aplicación.
Así, para llevar a cabo una tarea, en vez de escribir las instrucciones una por una en la línea de comandos
de Scilab, se pueden escribir una detrás de otra en un fichero. Para ello se puede utilizar el
Editor integrado de Scilab: botón "Editor" de la barra de menús o bien usando la orden
-->scipad()
Lógicamente, en el nombre del fichero hay que incluir el path, caso de que el fichero no esté en el
directorio actual. El nombre del fichero debe ir entre apóstrofes o comillas dobles, puesto que es una
cadena de caracteres.
2.2 Funciones
Es posible definir nuevas funciones Scilab. La diferencia entre un script y una función es que esta última
tiene una "interfase" de comunicación con el exterior mediante argumentos de entrada y de salida.
Las funciones se pueden definir on-line o bien escribiéndolas en un fichero (ASCII). A los ficheros que
contienen funciones Scilab, por convenio, se les pone el sufijo .sci . Las funciones definidas on-line están
disponibles de modo inmediato. Las funciones guardadas en un fichero hay cargarlas en el espacio de
trabajo de una sesión de Scilab mediante el comando exec. Se pueden incluir varias funciones en un
mismo fichero, una a acontinuación de otra.
-->deff('[arg_out]=nombre(arg_in)','instrucciones')
EJEMPLO
-->deff('[s]=fun2(x,y)','s=sqrt(x^2+y^2)')
-->fun2(3,4)
ans =
5.
-->exec('misfunciones.sci',-1)
-->t=5;
-->max(fun3(t),0)
ans =
0.
FICHERO misfunciones.sci
function [z]=fun3(x)
z=sin(x);
endfunction
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 3
En Scilab, por defecto, los números son codificados como números reales en coma flotante en doble
precisión. La precisión, esto es, el número de bits dedicados a representar la mantisa y el exponente,
depende de cada (tipo de) máquina.
El objeto básico de trabajo de Scilab es una matriz bidimensional cuyos elementos son números reales o
complejos. Escalares y vectores son casos particulares de matrices. También se pueden manipular matrices
de cadenas de caracteres, booleanas, enteras y de polinomios. También es posible construir otro tipo de
estructuras de datos definidos por el usuario.
Algunas constantes numéricas están predefinidas. Sus nombres comienzan por el símbolo %. En particular
%pi es el número π, %e es el número e, %i es la unidad imaginaria, %eps es la precisión de la máquina
(mayor número real doble precisión para el que 1+%eps/2 es indistinguible de 1), %inf es el infinito-
máquina (overflow: cualquier número que supere al mayor número real representable en doble precisión),
%nan es el símbolo NaN (Not a Number) para una operación inválida (por ejemplo, 0/0 es %nan).
El lenguaje de Scilab es interpretado, esto es, las instrucciones se traducen a lenguaje máquina una a una
y se ejecutan antes de pasar a la siguiente. Es posible escribir varias instrucciones en la misma línea,
separándolas por una coma o por punto y coma.
Scilab distingue entre mayúsculas y minúsculas: %nan NO ES LO MISMO QUE %Nan
Se pueden recuperar comandos anteriores, usando las teclas de flechas arriba y abajo. Con las flechas
izquierda y derecha nos podemos desplazar sobre la línea de comando y modificarlo.
Los argumentos pueden ser, siempre que tenga sentido, reales o complejos y el resultado se devuelve en
el mismo tipo del argumento.
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 4
EJEMPLO
-->sqrt(34*exp(2))/(cos(23.7)+12)
ans =
1.3058717
-->7*exp(5/4)+3.54
ans =
27.97240
-->exp(1+3*%i)
ans =
- 2.6910786 + 0.3836040i
3.4 Variables
En Scilab las variables no son nunca declaradas: su tipo y su tamaño cambian de forma dinámica de
acuerdo con los valores que le son asignados. Así, una misma variable puede ser utilizada, por ejemplo,
para almacenar un número complejo, a continuación una matriz 25x40 de números enteros y luego para
almacenar un texto. Las variables se crean automáticamente al asignarles un contenido. Asimismo, es
posible eliminar una variable de la memoria si ya no se utiliza.
EJEMPLOS
-->a=10
a =
10.
--> pepito=exp(2.4/3)
pepito =
2.2255409
-->pepito=a+pepito*(4-0.5*%i)
pepito =
18.902164 - 1.1127705i
Para conocer en cualquier instante el valor almacenado en una variable basta con teclear su nombre
(Atención: recuérdese que las variables AB ab Ab y aB SON DISTINTAS, ya que Scilab distingue entre
mayúsculas y minúsculas).
3.5 Formatos
Por defecto, Scilab muestra los números en formato “variable” con 10 dígitos. Se puede modificar esto
mediante el comando format:
format(14) 14 dígitos
format(‘e’) formato científico o exponencial, coma flotante
format(‘v’) formato variable (por defecto)
format(‘v’,20) formato variable con 20 dígitos
format(‘e’,15) formato científico con 15 dígitos
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 5
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 6
4. MATRICES
Como ya se ha dicho, las matrices bidimensionales de números reales o complejos son los objetos básicos
con los que trabaja Scilab. Los vectores y escalares son casos particulares de matrices.
Observaciones:
• Lo que se escribe en cualquier línea detrás de // es considerado como comentario
• El hecho de que, al introducirlas, se escriban las matrices por filas no significa que internamente,
en la memoria del ordenador, estén así organizadas: en la memoria las matrices se almacenan
como un vector unidimensional ordenadas por columnas, como siempre.
Se pueden también utilizar los vectores/matrices como objetos para construir otras matrices (bloques):
-->v1=1:4
-->v2=[v1,5;0.1:0.1:0.5]
-->v3=[v2',[11,12,13,14,15]']
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 7
-->A=[eye(2,2),ones(2,3);linspace(1,2,5);zeros(1,5)]
-->w=diag(A)
-->B=matrix(A,5,4)
-->C=diag(diag(A,1))+diag(diag(B,-2),1)
La mayoría de las funciones Scilab están hechas de forma que admiten matrices como argumentos. Esto se
aplica en particular a las funciones matemáticas elementales y su utilización debe entenderse en el sentido
de "elemento a elemento": si A es una matriz de elementos aij, exp(A) es otra matriz cuyos elementos
son exp(aij). No debe confundirse con la función exponencial matricial que, a una matriz cuadrada A,
asocia la suma de la serie exponencial matricial, y que en Scilab se calcula mediante la función expm.
-->A=[1,0;0,2]
-->B=exp(A)
-->C=expm(A)
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 8
v(i) Si v es un vector es vi
A(i,j) Si A es una matriz, es aij
Si A es una matriz, es el k-ésimo elemento de A, en el orden
A(k)
en que está almacenada en la memoria (por columnas)
Pero Scilab posee un buen número de facilidades para designar globalmente un conjunto de elementos de
una matriz o vector, consecutivos o no.
-->A=[1.1,1.2,1.3;2.1,2.2,2.3;3.1,3.2,3.3]
-->A(2:3,1:2)
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 9
Si B es un vector booleano (sus elementos son %t para verdadero y %f para falso) entonces A(B)
especifica la submatriz que se obtiene considerando o no cada elemento en función del valor verdadero o
falso del vector booleano:
-->v=linspace(1,5,9)
-->b=[%t,%t,%t %f %f %t %t %f %f]
-->w=v(b)
Esta sintaxis para designar conjuntos de elementos de un matriz puede usarse tanto para recuperar los
valores que contienen (para, por ejemplo, utilizarlos en una expresión), como para asignarles valores.
Cuando estas expresiones aparecen a la izquierda de un signo igual (es decir, en una instrucción de
asignación) pueden tener distintos significados:
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 10
-->A\b
calcula la solución del sistema lineal de ecuaciones Ax=b . Para recordar la sintaxis, debe asimilarse el
operador \ con una "división por la izquierda", es decir A\b es como A-1b .
Este operador debe ser usado con precaución: Si la matriz A es singular o mal condicionada, la instrucción
A\b emite un mensaje de advertencia y devuelve una solución del correspondiente problema de mínimos
cuadrados:
Si la matriz A no es cuadrada (teniendo el mismo número de líneas que el segundo miembro) entonces la
instrucción A\b devuelve directamente una solución de mínimos cuadrados sin advertir absolutamente
nada. En el caso en que la solución de mínimos cuadrados no es única (la matriz A no es de rango
máximo), la solución que devuelve NO es la de norma mínima. Para obtener esta última es mejor utilizar
la instrucción siguiente, que utiliza la pseudo-inversa de la matriz A:
-->pinv(A)*b
-->spec(A)
Si se desean obtener, además, los vectores propios, hay llamar a la función spec de la siguiente forma:
-->[X,V]=spec(A)
mediante la cual se obtienen: V : matriz cuadrada diagonal con los autovalores y X : matriz cuadrada
invertible cuya i-ésima columna es un vector propio asociado al i-ésimo autovalor.
Para información más completa sobre estas y otras funciones se recomienda visitar el epígrafe Linear
Algebra del Help de Scilab.
Casi todas las funciones Scilab relacionadas con el álgebra lineal numérica están basadas en rutinas de la
librería LAPACK.
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 11
6. POLINOMIOS
Scilab puede manipular objetos de tipo "polinomio". Algunas formas de generar polinomios son las
siguientes:
-->p=poly(a,"x")
siendo a una matriz cuadrada nxn es el polinomio caracterísitco de la matriz a, con variable simbólica x
-->a=companion(p)
donde p es un polinomio es la matriz "compañera" de p, también, llamada de Frobenius, es decir la matriz
cuyo polinomio característico es p.
-->p=poly(v,"x","roots")
siendo v un vector numérico es el polinomio, con variable simbólica x, 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
EJEMPLOS
-->a=[1,2,3;4,5,6;7,8,-9];
-->p=poly(a,"t")
p =
2 3
- 54 - 126t + 3t + t
-->p=poly([1,2,3,4],"x","coeff")
p =
2 3
1 + 2x + 3x + 4x
-->roots(p)
ans =
- 0.0720852 + 0.6383267i
- 0.0720852 - 0.6383267i
- 0.6058296
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 12
-->x=fsolve(x0,fun)
-->[x,val]=fsolve(x0,fun)
donde:
• fun es el nombre de la función Scilab que calcula f(x).
Debe responder a la forma: [y]=fun(x)
(ver en el epígrafe 2 las distintas formas de definir f)
• x0 es el valor inicial de x para comenzar las iteraciones
• x es la solución del sistema
• val (opcional) es el valor de f en la solución
EJEMPLO
Calcular la solución de
deff('y=f(x)','y=2*sin(x+2)+3*x-1')
fsolve(0,f)
ans =
- 0.3300595
EJEMPLO
Calcular la (única) solución del siguiente sistema de ecuaciones en el primer cuadrante:
deff('[y]=g(x)','y=[x(1)^3+x(2)^3-3,x(1)^2+x(2)^2-2*x(2)]');
[x,v]=fsolve([1,1],g)
v =
0. 0.
x =
0.9587068 1.2843962
-->fsolve(x0,fun,jacob)
donde:
• jacob es el nombre de la función Scilab que calcula la matriz jacobiana de f(x) .
Argumentos: [dfx]=jacob(x)
EJEMPLO
Calcular la (única) solución del siguiente sistema de ecuaciones en el primer cuadrante:
deff('[y]=g(x)','y=[x(1)^3+x(2)^3-3,x(1)^2+x(2)^2-2*x(2)]');
deff('[dg]=derg(x)','dg=[3*x(1)^2,3*x(2)^2;2*x(1),2*x(2)-2]')
x=fsolve([1,1],g,derg)
x =
0.9587068 1.2843962
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 13
Para calcular la integral definida de una función de una variable Scilab dispone de la función:
-->intg(a,b,f)
donde f debe ser una función de la forma y=f(t) y a y b son los límites de integración
EJEMPLO
deff('[y]=f(x)','y=(x*/sin(30*x)) / sqrt(1-(x/(2*%pi))^2)');
intg(0,2*%pi,f)
ans =
- 2.5432596
Para la descripción de argumentos opcionales y utilización con funciones Fortran o C véase el Help.
Para calcular
siendo una región formada por la unión de N triángulos se puede calcular con
-->int2d(X,Y,f)
donde X e Y son matrices 3xN tales que la j-ésima columna de X (respec. Y) contiene las abscisas
(respec. las ordenadas) de los vértices del j-ésimo triángulo y f es una función de la forma v=f(x,y)
Análogamente,
-->int3d(X,Y,Z,f)
sirve para calcular la integral de una función de tres variables en una región formada por la unión de
tetraedros.
X, Y, Z son matrices 4xN que contienen las coordenadas de los vértices de los tetraedros y f es una
función de la forma v=f(x,n) siendo x un vector de tres componentes.
(0,0,1)
(0,0,0)
(0,1,0)
(1,0,0)
EJEMPLO
deff('[v]=f(x,nf)','v=exp(sum(x.*x))');
X=[0,1,0,0]';
Y=[0,0,1,0]';
Z=[0,0,0,1]';
int3d(X,Y,Z,f)
ans =
0.2278
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 14
Para resolver problemas de valor inicial relativos a (sistemas de) ecuaciones diferenciales ordinarias Scilab
dispone de la funcion ode .
-->y=ode(y0,t0,t,f)
donde:
• y0 es el valor de la condición inicial
• t0 es el punto en que se impone la condición inicial
• t es el vector que contiene los valores de t para los cuales
se quiere calcular la solución
• f es el nombre de la función que calcula
• y es un vector conteniendo los valores de la solución
RESOLUCIÓN INTERACTIVA
plot2d(linspace(0,20),ode(0.1,0,linspace(0,20),fty))
Mediante la utilización de otros argumentos opcionales es posible decidir, en la llamada a ode, el método a
usar para la resolución del problema así como cotas para el error tolerado. También es posible utilizar una
rutina escrita en Fortran o C para calcular la función del segundo miembro, así como pasar a ésta
argumentos opcionales extra. Pero queda fuera del ámbito de estos apuntes explicar estas funcionalidades.
RESOLUCIÓN INTERACTIVA
-->function [dydx]=fty(t,y),dydx[(2-y(2))*y(1);(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') // para dibujar la solucion
--> plot2d(linspace(0,10)',ode([1;2],0,linspace(0,10),fty)')
Las posibilidades de esta funcion (la más básica para resolver e.d.o.'s) y de otras relacionadas con las
ecuaciones y la simulación son imposibles de exponer aquí: hay libros enteros dedicados a ello.
Para algo más de información y algunos ejemplos, véase el Help de esta función y, en general el epígrafe
"Optimization and simulation". Los ejemplos de estas notas están en el script ejemplo9.sce
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 15
Estas notas sólo pretenden exponer algunos de los comandos más básicos de que dispone Scilab para
generar gráficos. En principio se exponen, exclusivamente, los comandos de dibujo y posteriormente se
explicará cómo modificar los distintos (y numerosos) parámetros que determinan sus características.
plot2d
Dados dos vectores (VER (*) )
x=[x1,x2,. . . ,xn] e y=[y1,y2, . . . ,yn]
-->plot2d(x,y)
x=linspace(-5,5)';
y=2*sin(x/2).*cos(3*x); // ( VER (**) )
plot2d(x,y)
x=linspace(-5,5)';
plot2d(x, 2*sin(x/2).*cos(3*x))
(*) Para dibujar una única curva, es indiferente que los vectores x e y sean filas o columnas. Sin
embargo, cuando se desean dibujar varias curvas juntas no lo es. Por ello, usaremos siempre vectores-
columna.
(**) Obsérvese que, puesto que se calculan todas las ordenadas "de una sola vez", es preciso "vectorizar"
la escritura de la fórmula, para que, al ser el argumento x un vector, la fórmula devuelva un vector de las
mismas dimensiones calculado elemento e elemento.
-->plot2d(y)
Ejemplo:
x=linspace(-5,5)';
y=2*sin(x/2).*cos(3*x);
plot2d(y)
-->plot2d(x,y)
siendo x un vector e y una matriz dibuja una curva por cada columna de
y
Ejemplo:
x=linspace(-5,5)';
y=2*sin(x/2).*cos(3*x);
z=2*sin(x);
w=[y,z];
plot2d(x,w)
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 16
-->plot2d(x,y)
x1=linspace(-2*%pi,0)';
x2=linspace(0,2*%pi)';
y1=2*sin(x1);
y2=2*sin(x2/2).*cos(3*x2);
plot2d([x1,x2],[y1,y2])
Observaciones:
• Obsérvese que, por defecto, gráficas sucesivas se superponen. Para evitarlo, hay que borrar la
gráfica anterior antes de dibujar de nuevo. Ello puede hacerse ó bien cerrando la ventana gráfica ó
bien borrando su contenido desde la barra de menús ( Edit --> Erase Figure ) o mediante un
comando ( xbasc() ).
• Cuando se borra el contenido de la ventana gráfica, pero no se cierra, se conservan sus
características. Si, por ejemplo, se ha modificado la carta de colores de esa ventana, se seguirá
conservando la carta al borrarla, pero no al crerrarla.
• Cuando plot2d dibuja varias curvas, les asigna distintos colores. El orden de los colores asignados
viene determinado por la carta de colores activa. Por defecto, es la siguiente:
1 7
2
3
4
5
6
polarplot
-->polarplot(theta,rho)
siendo theta y rho vectores de las misma dimensión, dibuja la curva que
pasa por los puntos de coordenadas polares
(theta_1,rho_1). . .(theta_n,rho_n)
Ejemplo:
theta=linspace(0,2*%pi)';
rho=sin(2*theta).*cos(3*theta);
polarplot(theta,rho)
Esta función se puede utilizar también con otros argumentos, como plot2d y su funcionamiento es similar.
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 17
-->plot2d2(x,y)
-->plot2d3(x,y)
-->plot2d4(x,y)
fplot2d
-->fplot2d(x,f)
Ejemplo:
x=linspace(-%pi,%pi);
exec("gf1.sci",-1)
fplot2d(x,gf1)
o directamente poniendo
fplot2d(-%pi:0.1:%pi,gf1)
FICHERO gf1.sci
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 18
paramfplot2d : animaciones
-->paramfplot2d(f,x,t)
x=linspace(-2*%pi,2*%pi);
t=linspace(-1,1,60);
paramfplot2d(gfun2,x,t)
FICHERO gfun2.sci
function [y]=gfun2(x,t)
y=zeros(x);
b=-%pi<=x & x<=%pi;
y(b)=-t*sin(x(b));
endfunction
param3d
-->param3d(x,y,z)
Ejemplo:
t=linspace(0,8*%pi);
param3d(t.*sin(t),t.*cos(t),3*t)
param3d1
-->param3d1(x,y,z)
-->param3d1(x,y,list(z,colors))
t= linspace(0,5*%pi)';
x= [zeros(t),12*sin(2*t)];
y= [10*cos(t),12*cos(2*t)];
z= [10*sin(t),12*sin(t)];
param3d1(x,y,list(z,[6,2]))
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 19
9.3 Superficies
-->plot3d(x,y,z)
x : vector de dimensión n
y : vector de dimensión m
z : matriz de dimensión nxm
-->[xm,ym]=ndgrid(x,y)
-->z=f(xm,ym)
Ejemplo:
x=linspace(0,2*%pi,30);
y=linspace(0,4*%pi,50);
[xm,ym]=ndgrid(x,y);
z=cos(xm).*cos(ym);
plot3d(x,y,z)
-->fplot3d(x,y,f)
Ejemplo:
fplot3d(x,x,f)
-->plot3d1(x,y,z)
-->fplot3d1(x,y,f)
Son similares a las anteriores pero producen una superficie formada por
facetas coloreadas en función de la altura (valor de z)
Ejemplo:
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 20
Ejemplo:
fig=gcf();
fig.color_map=jetcolormap(30);
//
// se añade una "colorbar" para identificar los valores
//
z=f(x,x);
zmin=min(z); zmax=max(z);
colorbar(zmin,zmax);
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 21
-->contour(x,y,z,nz)
-->contour2d(x,y,z,nz)
-->contourf(x,y,z,nz)
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
Ejemplo:
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla
Una introducción rápida a Scilab 22
champ, champ1
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
Ejemplo:
Rosa Echevarría Líbano – Dpto. Ecuaciones Diferenciales y Análisis Numérico – Universidad de Sevilla