Documente Academic
Documente Profesional
Documente Cultură
Ventana de Edición
El nombre de los archivos debe identificar el problema
El nombre de variables no debe ser mayor de 31 caracteres
Los nombres de las variables deberán ser alfabetos, dígitos y guión bajo( _ )
Los nombres de las variables deberán empezar con letras, MATLAB distingue entre
mayúsculas y minúsculas.
ABC, A1, C56, CVEN_302day, year, iteracion, maxtime, velocity, distance, area, density,
pressure
Time, TIME, time (case sensitive!!)(sensitive!!)
Los comentarios deben ir precedidos por % o, lo que es lo mismo, MATLAB ignora todo lo que
vaya precedido por el símbolo %.
La ayuda de MATLAB es bastante útil; para acceder a la misma basta teclear “help” y/o
seguido del comando a utilizar. Es recomendable usarlo para obtener una información más
precisa sobre la sintaxis y diversas posibilidades de uso de los comandos.
Los cálculos que no se asignan a una variable en concreto se asignan a la variable de
respuesta por defecto que es ans (del inglés, answer):
Sin embargo, si el cálculo se asigna a una variable, el resultado queda guardado en ella:
Para conocer el valor de una variable, basta teclear su nombre:
Si se añade un punto y coma (;) al final de la instrucción, la máquina no muestra la
respuesta...
... pero no por ello deja de realizarse el cálculo.
Uso del comando clear, clc, clf; uso de ctrl+c
Variables restringidas: inf, NaN
Las operaciones se evalúan por orden de prioridad: primero las potencias, después las
multiplicaciones y divisiones y, finalmente, las sumas y restas. Las operaciones de igual
prioridad se evalúan de izquierda a derecha:
Se pueden utilizar las funciones matemáticas habituales. Así, por ejemplo, la función
coseno,
o la función exponencial
Además de la variable pi , MATLAB tiene otras variables con valor predeterminado; éste
se pierde si se les asigna otro valor distinto. Por ejemplo:
Otro ejemplo de función matemática: la raíz cuadrada; como puede verse, trabajar con
complejos no da ningún tipo de problema. La unidad imaginaria se representa en
MATLAB como i o j, variables con dicho valor como predeterminado:
El usuario puede controlar el número de decimales con que aparece en pantalla el valor
de las variables, sin olvidar que ello no está relacionado con la precisión con la que se
hacen los cálculos, sino con el aspecto con que éstos se muestran:
Para conocer las variables que se han usado hasta el momento:
o, si se quiere más información (obsérvese que todas las variables son arrays):
Para deshacerse de una variable
Para definir un vector fila, basta introducir sus coordenadas entre corchetes, pueden
estar separados por comas o por espacios:
El comando ‘ realiza la transposición de un vector:
Si queremos declarar un vector de coordenadas equidistantes entre dos dadas, por
ejemplo, que la primera valga 0, la última 20 y la distancia entre coordenadas sea 2,
basta poner:
De la misma manera, si lo que conocemos del vector es el valor de la primer coordenada,
0, la última 20 y que tiene 11 espacios en total, escribiremos:
A las coordenadas de un vector se accede sin más que escribir el nombre del vector y,
entre paréntesis, su índice:
y se pueden extraer subvectores, por ejemplo:
Las matrices se escriben como los vectores, pero separando las filas mediante un punto y
coma; así una matriz 3x3:
A los elementos de una matriz se accede solo escribiendo el nombre de la matriz y, entre
paréntesis, los respectivos índices,
También se puede acceder a un fila o columna completas,
O acceder a la matriz como si fuera una columna,
O acceder a cualquiera de sus submatrices:
Existen algunas matrices definidas previamente; por ejemplo, la matriz identidad,
la matriz nula,
o la matriz cuyos elementos valen todos 1:
Se puede conocer el tamaño de una matriz y la longitud de un vector:
Existen comandos que permiten crear de forma sencilla matrices. Por ejemplo:
Las funciones matemáticas elementales están definidas de forma que se pueden aplicar
sobre arrays. El resultado es el array formado por la aplicación de la función a
cada elemento del array.
Las operaciones habituales entre arreglos (suma, resta y producto escalar de vectores;
suma, resta, producto y potencia de matrices) se representan con los operadores
habituales:
También pueden efectuarse multiplicaciones, divisiones y potencias de arrays,
entendiéndolas como elemento a elemento (como, de hecho, se realizan la suma y la
resta). El operador utilizado para ellas es el habitual precedido por un punto; es decir:
Finalmente, pueden calcularse determinantes: e inversas de matrices.
y resolverse sistemas de ecuaciones lineales con el versátil comando \:
Se puede trabajar con polinomios: basta tener en cuenta que un polinomio no es más que
un vector. El orden de los coeficientes es de mayor a menor grado, por ejemplo:
MATLAB tiene funciones específicas para polinomios como:
Dentro del módulo (toolbox) de matemática simbólica, se utiliza el programa de cálculo
simbólico MAPLE. Con estas herramientas, se puede trabajar con funciones, calcular
derivadas o integrales:
MATLAB tiene un gran potencial de herramientas gráficas. Se pueden dibujar los valores
de un vector frente a otro (de la misma longitud): el comando plot, une por defecto los
puntos (x(i),y(i) mediante una poligonal.
1.8
1.6
1.4
1.2
0.8
0.6
0.4
0.2
0
-4 -3 -2 -1 0 1 2 3 4
Como se ve, con pocos puntos la gráfica tiene un aspecto demasiado lineal a trozos. Para
"engañar" al ojo, basta tomar más puntos.
1.8
1.6
1.4
1.2
0.8
0.6
0.4
0.2
0
-4 -3 -2 -1 0 1 2 3 4
También pueden dibujarse las funciones escritas:
O dibujarse dos funciones distintas en la misma gráfica con “hold on”
Con el comando “hold off” se olvidan de las graficas anteriores y las nuevas credas
-3
x 10
2.5
1 1
1.5
0.8 0.8
1
0.6 0.6
0.5
0.4 0.4
0 0.2
0.2
0
0
-0.5
-0.2
-0.2
-1
-0.4
-0.4
-1.5 -0.6
-0.6
-0.8
-2
-0.8
-1
0 1 2 3 4 5 6
-1 -2.5
0 1 2 3 4 5 6
-0.05 -0.04 -0.03 -0.02 -0.01 0 0.01 0.02 0.03 0.04 0.05
También puede usarse el versátil comando ezplot (se lee como easy plot) que permite
dibujar funciones, curvas paramétricas e implícitas
E inclusive algunas superficies con el comando ezsurf
2
- y 2y
xsin(x
x = sin(x),
exp(x)y)-1 =0
= cos(x)
61 sin(x y)
250
0.8
4
10.6
1
200
0.4
0.5 2
0.5
0.2
150
0
0 00
yy
-0.2
100
-0.5
-0.5
-2
-0.4
-150
-1
2-0.6
-4 5
-0.8 1 2
5
00 1
0 0
-6-1 0
-0.5 -1 0 -5 0.5-5 -12 1 1.5
-6 -4 -3 -4y -2 -1-2 0 01 23 4 4 5 6 6
y -2 -2 xxx x
x
Igualmente se pueden crear gráficas con características especiales y personalizadas
utilizando ciertos comandos de MATLAB:
1.6
1.4
sqrt(x)
1.2
1
y
0.8
0.6
0.4
0.2 exp(-x)
0
0 0.5 1 1.5 2 2.5 3
x
Los ficheros con extensión (.m) son ficheros de texto sin formato (ficheros ASCII) que
constituyen el centro de la programación en MATLAB. Estos ficheros se crean y modifican
con un editor de textos cualquiera. En el caso de MATLAB ejecutado en un PC bajo
Windows, lo mejor es utilizar su propio editor de textos, que es también Debugger.
En los ficheros de comandos conviene poner los puntos y coma (;) al final de cada
sentencia, para evitar una salida de resultados demasiado cuantiosa.
FORMAT: Refiere al formato del texto impreso, pero no modifica la forma en que se
llevna a cabo los cálculos, si este no se modifica, se utilizan los de defaoult, “short”.
FORMAT SHORT: Refiere a 5 dígitos para los valores escalares.
FORMAT LONG: Refiere a 15 dígitos para cálculos de doble precisión y a 7 para cálculos
de precisión sencilla.
FORMAT BANK: Los resultados se presentaran en forma monetaria (dollares y centavos).
FORMAT COMPACT: Suprime linea inecesarias de alimentación al programa.
GLOBAL: Utilizado para que tanto en el archivo como en el trabajo de espacio, así como
en otros programas el valor de la variable se conserve. Si la variable global no existe,
inicialmente su valor será de una amtriz vacía. Si la variable existe, el valor utilizado será
el de la variable global. Por estilo, las variables globales se escriben en mayúsculas, pero
no es obligatorio.
RETURN: Es un comando opcional al final del texto, que indica que esa función terminó,
y obliga a regresar al inicio, si no se escribe por default regresará.
x = (1988:1995)'
y = [28.1 30 32.3 34.6 35.3 36.4 37.5 38.5]'
p = polyfit(x,y,1)
yr = polyval(p,x)
plot(x,y,'r*',x,yr)
I = (norm(px-mean(y1))/norm(y1-
mean(y1)))^2
%Realizar un programa donde se realicen 6 gráficas diferentes, cada una con el nombre de sus ejes (x
, y), y un título. deben de estar ordenadas de tal forma que existan 3 columnas y 2 filas de gráficas en
una imagen. Las figuras en las posiciones impar deberán estar cuadriculadas, las pares no. Cada
imagen deberá tener color, grueso de línea y estilo de línea diferente.
function ejem_semiplot
clear all; clc; format compact;
%Desarrollo gráficas triginométicas, primer imágen
t1 = 0:0.2*pi/100:2*pi; x1 = sin(2*t1); y1 = sin (3*t1);
%Desarrollo de una elipse, segunda imagen
x2 = -3:0.1:3; y21 = sqrt(4-(4/9)*x2.^2); y22 = -sqrt(4-(4/9)*x2.^2);
%Desarrollo de lineas rectas, tercera imagen
x3 = [0 3]; y31 = 2*x3; y32 = 2*x3 - 1;
%Intersección de rectas, cuarta imagen
x4 = linspace(-5,5); y41 = 2*x4 - 5; y42 = 1/3*x4 - 5/3;
%Desarrollo de una grafica simple, quinta imagen
x5 = 0:0.5:5;
%Desarrollo de una superficie simple, sexta imagen
% x6 = -4:0.2:4; % y6 = x6;
1%Progrmación de la gráfica
Ejemplo de imagenes multiples en un gráfica
2
Ejemplo de imagenes multiples en un gráfica
6
Ejemplo de imagenes multiples en un gráfica
figure(1) 1.5 5
+/-sqrt(4-(4/9)*x 2)
multiples en un gráfica') 0.5
2x y 2x-1
3
sin(3t)
subplot(2,3,4),
-1
-1 -0.5 0 plot(x4,y41,'cv',x4,y42,'y^'),
0.5 1
-2
-3 -2 xlabel('x'),
-1 0 1 ylabel('2x-5
2 3 y -11/3x-5/3'),
0 0.5 1 title('Ejemplo
1.5 2 2.5 de
3
subplot(2,3,5), ezplot('tan(x5)'),grid
Ejemplo de imagenes multiples en un gráfica tan(x 5) y 2/16 - x 2/9
5
subplot(2,3,6), ezsurf('y^2/16 - x^2/9',[-4,4 6 -4,4])
return
0
4
2
1
2x-5 y 1/3x-5/3
0 0
-5
-2 -1
-10 -4 -2
4
-6 2 4
0 2
0
-15 -8 -2 -2
-5 0 5 -6 -4 -2 0 2 4 6 y -4 -4 x
x x5
Bifurcaciones y bucles
MATLAB posee un lenguaje de programación que, como cualquier otro lenguaje, dispone
de sentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten realizar
una u otra operación según se cumpla o no una determinada condición. La siguiente
Figura muestra tres posibles formas de bifurcación.
Los bucles permiten repetir las mismas o análogas operaciones sobre datos distintos. En
MATLAB se utiliza la palabra end con la finalidad de terminar el bucle.
La Figura muestra dos posibles formas de bucle, con el control situado al principio o al
final del mismo. Muchos lenguajes de programación disponen de bucles con control al
principio (for y while en C/C++/Java) y al final (do … while en C/C++/Java). En
MATLAB no existe construcción análoga a do ... while.
Las bifurcaciones y bucles no sólo son útiles en la preparación de programas o de
ficheros *.m. También se aplican con frecuencia en el uso interactivo de MATLAB.
En su forma más simple, la sentencia if se La sentencia for repite un conjunto de
sentencias un número predeterminado de
escribe en la forma siguiente : veces. La sentencia for de MATLAB es muy
if condición diferente y no tiene la generalidad de la
sentencia for de C/C++/Java. La siguiente
sentencias construcción ejecuta sentencias con
end valores de i desde 1 hasta n, variando de
uno en uno.
Existe también la bifurcación múltiple, en la
for i=1:n
que pueden concatenarse tantas condiciones
sentencias
como se desee, y que tiene la forma:
end
if condición1 bloque1 o bien,
elseif condición2 bloque2
elseif condición3 bloque3 for i=vectorValores
else opción por defecto para cuando no se cumplan sentencias
las condiciones 1,2,3 bloque4 end
End donde vectorValores es un vector con los
distintos valores que tomará la variable i.
la opción por defecto else puede ser
omitida: si no está presente no se hace nada.
En el siguiente ejemplo se presenta el caso La estructura del bucle while es muy
más general para la variable del bucle similar a la de C/C++/Java. Su sintaxis es la
(valor_inicial: incremento: valor_final); el siguiente:
bucle se ejecuta por primera vez con i=n, y while condición
luego i se va reduciendo de 0.2 en 0.2 hasta sentencias
que llega a ser menor que 1, en cuyo caso
el bucle se termina: end
for i=n:-0.2:1 donde condición puede ser una expresión
vectorial o matricial. Las sentencias se
sentencias siguen ejecutando mientras haya
end elementos distintos de cero en condición,
En el siguiente ejemplo se presenta una es decir, mientras haya algún o algunos
estructura correspondiente a dos bucles elementos true. El bucle se termina
anidados. La variable j es la que varía más cuando todos los elementos de condición
rápidamente (por cada valor de i, j toma son false (es decir, cero).
todos sus posibles valores):
for i=1:m
for j=1:n
sentencias
end
end
La función input permite imprimir un La función disp permite imprimir en
mensaje en la línea de comandos de pantalla un mensaje de texto o el valor de
MATLAB y recuperar como valor de una matriz, pero sin imprimir su nombre.
retorno un valor numérico o el resultado En realidad, disp siempre imprime
de una expresión tecleada por el usuario. vectores y/o matrices: las cadenas de
La expresión introducida es evaluada con caracteres son un caso particular de
los valores actuales de las variables de vectores.
MATLAB y el resultado se devuelve como >> disp('El programa ha terminado')
valor de retorno.
>> A=rand(4,4);
>> n = input('Teclee el número de
>> disp(A)
ecuaciones')
La función fprintf permite imprimir un
>> nombre = input('¿Cómo te
mensaje y el valor de la variable
llamas?','s')
relacionada a este, su sintaxis es:
En este caso el texto tecleado como
>>fprintf(‘texto %NAD.NDDRut \n’,var)
respuesta se lee y se devuelve sin evaluar,
con lo que se almacena en la cadena ‘texto’: Cualquier enunciado
nombre. NAD: Unidades antes del decimal
NDD: Unidades después del decimal
Rut: Rutina de escritura del número
\n: Indica que escriba en el sig. renglón
Var: Nombre de la variable
Significa “depurar”, esta es una sección
de gran ayuda, sobretodo cuando se está
realizando un a programación avanzada,
para poder ver el avance de los cálculos,
y comprobar que el programa realiza los
cálculos como los deseamos.
En este mismo sentido, puede decirse que pensar bien las cosas al programar (sobre una hoja de
papel en blanco, mejor que sobre la pantalla del PC) siempre es rentable, porque se disminuye más
que proporcionalmente el tiempo de depuración y eliminación de errores.
Otro objetivo de la programación debe ser mantener el código lo más sencillo y ordenado posible. Al
pensar en cómo hacer un programa o en cómo realizar determinada tarea es conveniente pensar
siempre primero en la solución más sencilla, y luego plantearse otras cuestiones como la eficiencia.
Finalmente, el código debe ser escrito de una manera clara y ordenada, introduciendo comentarios,
utilizando líneas en blanco para separar las distintas partes del programa, sangrando las líneas para
ver claramente el rango de las bifurcaciones y bucles, utilizando nombres de variables que recuerden
al significado de la magnitud física correspondientes, etc.
Determinar la presión a partir de la ecuación de Van der Waals del metano a 350K,
decidiendo el usuario si conoce o no la constante de los gases ideales. Mostrar el valor de
a, b, R y P. RT a
P= − 2
V −b V
V 8P V 27 R 2Tc2 L atm
; b = c ; R= 0.08206=
RT
a = c ; b = 3PcVc2 ; R= c c a=
3 3Tc 64 Pc 8Pc mol K
* BM_3C4c.m
Ode15s y 45
Un ecuación no lineal simple se puede escribir de la forma:
f(x) = 0
Donde f es una función y x es la incógnita. También se podrían incluir ecuaciones
explícitas adicionales
Existe una forma, donde se pueden colocar ciertas opciones para mejorar el cálculo de la
solución:
X = fsolve (fun,X0,Options)
Options, hace referencia a un argumento credo con la función optimset, con el cuál pueden
mejorarse los parámetros: Display, TolX, TolFun, DerivativeCheck, Diagnostics, FunValCheck, Jacobian,
JacobMult, JacobPattern, LineSearchType, NonlEqnAlgorithm, MaxFunEvals, MaxIter, PlotFcns, OutputFcn,
DiffMinChange and DiffMaxChange, LargeScale, MaxPCGIter, PrecondBandWidth, TolPCG, and TypicalX.
Existe otro argumento denominado “exitflag”, que describe la condición de salida del fsolve.
Aplicados a Termodinámica