CURSO BASICO DE
MATLAB
R2020B
Ing. [Link]. Roberto Parra Zeballos
MATLAB - 2DA. PARTE
ENTRADAS Y SALIDAS DE VARIABLES
Input → Aparece un mensaje pidiendo un dato. El valor digitado será dado a la variable. Si se desea
asignar una cadena se añade el argumento ‘s’.
Sintaxis: Variable = input (‘mensaje’, ’s’)
Ejemplos:
>> z=input(‘Ingrese un número:’)
Ingrese un número: 7
>> whos z
Name Size Bytes Class Attributes
z 1x1 8 double
>> NOM = input ('Cuál es tu nombre?','s')
Cuál es tu nombre?Juancito
NOM =
Juancito
>> whos NOM
Name Size Bytes Class Attributes
NOM 1x8 16 char
ENTRADAS Y SALIDAS DE VARIABLES
disp → visualiza en pantalla un mensaje de texto o el valor de
una matriz, pero sin imprimir su nombre.
%c tipo
Ejemplos: %s para cadena de caracteres
>> disp (’FIN DEL PROGRAMA’)
%d para variables enteras
FIN DEL PROGRAMA
>> A %f para variables reales
A=
%lf para grandes variables reales
1 2 3 >>x=1/3
4 5 6 x= %e decimal tipo exponencial
0.3333
>> disp(A) >> disp('El valor de x = '), disp (x)
1 2 3 El valor de x =
0.3333
4 5 6 \n → nueva lines
fprintf → Visualiza un valor numérico con formato \t → tabulador
Sintaxis; fprintf( ‘mensaje y formato de la variable’, variable) \b → backspace
\r → return
Ejemplo: >> área = 100; \f → alimentación de hoja
>> fprintf ('El área del rectángulo es %12.3f cm2 \n', area)
El área del rectángulo es 100.000 cm2
ESTRUCTURAS IF-ELSEIF-ELSE-END
La orden else puede
if expresión lógica 1 aparecer o no.
conjunto de órdenes 1 También puede
elseif expresión lógica 2 aparecer sólo la
conjunto de órdenes 2 combinación if-end o
elseif expresión lógica 3 la combinación
conjunto de órdenes 3 if-else-end.
.
.
else
conjunto de órdenes
end
EJEMPLO
Resolver una ecuación de 2do. Grado de la forma:
ax2 + bx + c = 0
Se crea el siguiente fichero .m:
% PROGRAMA QUE RESUELVE UNA ECUACIÓN DE 2DO. GRADO
% DE LA FORMA--> a x^2 + b x +c = 0
a = input('Lea la variable a = ?')
b = input('Lea la variable b = ?')
c = input('Lea la variable c = ?')
D = b^2 - 4*a*c;
% definir si las soluciones son reales o imaginarias
if (D >= 0)
x1 = (-b + sqrt(D))/(2*a);
x2 = (-b - sqrt(D))/(2*a);
fprintf ( '\n Las soluciones son: %10.5f %10.5f', x1, x2)
else
Re = -b/(2*a);
Im = sqrt(abs(D))/(2*a);
disp('Soluciones Imaginarias')
x1 = Re + Im * sqrt(-1)
x2 = Re - Im * sqrt(-1)
end
LA ESTRUCTURA FOR-END
La sintaxis es la siguiente: For i = 1:0.1:10
for k=x
conjunto de órdenes
end
donde k es una varible y x es un vector.
Por ejemplo si queremos calcular el valor de k2, cuando k = 4,5,6:
>> for k=[4,5,6]
k^2
end
Bucles while-end
Su sintaxis es la siguiente:
while expresión lógica
conjunto de órdenes
End
EJEMPLO
x=1
while x<=11
x=2*x
end
El valor de 𝑒 𝑥 se calcula con la siguiente serie de
Taylor:
TERM < Epsilon
𝑥 𝑥2 𝑥3
𝑒 𝑥 = 1 + 1! + 2!
+ 3!
+⋯ −∞<𝑥 <∞
Para cualquier valor de x, calcule el valor de 𝑒 𝑥 y
determine su error.
While (abs(TERM)) > Epsilon
----
----
----
end
FICHEROS FUNCTION
Las function se construyen en ficheros .m . Las funciones
son archivos que pueden aceptar argumentos de entrada y devolver
argumentos de salida.
function [Argumento(s) de Salida] = nombrefuncion (Arg.
Entrada)
% líneas de comentarios
% que aparecen al ejecutar
% help nombrefuncion
Órdenes que hacen los cálculos
...
Por norma los nombres de la function y del fichero coincidirán.
Es decir, el fichero lo llamamos nombrefuncion.m
Para llamar o ejecutar la function se realiza como las órdenes
normales
» [Argumento(s) de Salida] = nombrefuncion (Arg. Entrada)
CONSTRUIR UNA FUNCTION RAICES.M QUE CALCULE LAS RAÍCES DE UN
POLINOMIO DE SEGUNDO GRADO AX2+BX+C
Una vez guardado el fichero
raices.m. Se puede llamar
Se escribe en el fichero raices.m >> [x,y] = raices(1,-3,2)
function [x1, x2] = raices(a,b,c) x=
2
% y=
% Función que calcula en x1 y x2 las raíces 1
>> help raices
% de un polinomio de segundo grado Función que calcula en x1 y x2
% a x^2 + b x + c = 0 las raíces
de un polinomio de segundo
% grado
a x^2 + b x + c = 0
disc=sqrt(b*b-4*a*c)
x1 = (-b + disc)/(2*a)
x2 = (-b - disc)/(2*a)
ALGO MAS DE FUNCTION
…
MAS SOBRE FUNCIONES …
Function [valores de retorno]= nombre_function (argumentos de entrada)
Variable Local = se declara dentro de una function y es reconocida solo por esta.
Variable Global = Variables a las cuales pueden acceder una funcion sin haber
sido pasadas como argumentos.
function prueba2 ()
global A; global B;
function b = prueba1 (a)
x=5;
x=5;
b=x*a; B=x*A;
end end
>> prueba1(5)
>> global A; >> A = 4;
ans = 25
>> b
>> global B; >> prueba2
Undefined function or variable 'b’. >> A=3; B=
>> prueba2 20
B = 15
EJEMPLO – CÁLCULO DE MEDIA Y
DESVIACION ESTANDARD
function [M, S] = media_desv(x) else
n =length (x); %POBLACION
M = sum(x)/n; dip('Poblacion')
suma = 0; disp (n)
% Muestra S = sqrt(suma/n);
for i = 1:n end
dif = (x(i)-M)^2; end
suma = suma + dif;
end >>x=[1 2 3 4 5 6];
if n <= 30 >> [M,S]= media_desv(x)
% MUESTRA Muestra
disp('Muestra') 6
disp (n) M= 3.5000
S = sqrt(suma/(n-1)); S= 1.8708
SUB-FUNCIONES –FUNCIONES
LLAMADAS POR OTRA FUNCION
function m = mediana (v,n)
%sub-funcion que calcula la mediana
w = sort (v);
function [MEDIA, MEDIANA] =
estadistica(u) %FUNCION PRIMARIA if rem (n,2) == 1
n = length (u); m = w((n+1)/2);
MEDIA = media(u,n); else
MEDIANA = mediana (u, n); m=(w(n/2)+w(n/2+1))/2;
end end
function a=media (v,n)
end
%sub-funcion que calcula la media
>> u = [6 5 4 1 2 3];
a =sum(v)/n;
>> [MEDIA, MEDIANA] = estadistica(u)
end
MEDIA = 3.5000
MEDIANA = 3.5000
CREACIÓN DE REFERENCIAS A
FUNCIONES >> y =@exp:
>> x=@sin;
>> z=y(x(2*pi))
A) Manipulador de funciones (FUNCTION
HANDLE). z= 1.0000
Función de funciones: Una función hace >> z=y(x(pi/2))
referencia a otra. z= 2.7183
Sintaxis: fhandle =@nomrfunción
Ejemplos:
>>f1=@sin
f1 = @sin
>>y =f1(pi/2)
Y=1
>>f2=@exp;
Y=f2(1)
Y = 2.7183
Sintaxis= @(lista de variables)
implementacion de function Ejemplo: Crear una function tiempo que
nos de la fechay hora actual.
Para ejecutar:
Fhandle(arg1, arg2, arg3, …., argN)
>>tiempo=@() datestr(now);
Ejemplo: Crear function hipot que
calcule la hipotenusa de un triangulo Ahorita = tiempo()
rectangulo.
Ahorita =
>>hipot = @(x,y) sqrt(x.^2+y.^2);
>>c=hipot(3,4)
'21-Mar-2024 14:17:30'
c= 5
B) MANIPULADORES A FUNCIONES
PERSONALIZADAS
Reciben como argumentos de
entrada manipuladores a función
para particularizar sus cálculos con la
función referenciada.
Ejemplo: Dada la función: Solución:
𝑓 𝑥 = 𝑒 −𝑥 cos 𝑥 Para resolver la integral, usaremos la
función quad cuya sintaxis es:
Calcular:
𝜋 q=quad(fhandle, a, b)
𝐼 = න 𝑓 𝑥 𝑑𝑥
0 function y = mifuncion1(x)
y= exp(-x).*cos(x);
end
>> I = quad(@mifuncion1, 0, pi)
C) FUNCIONES QUE UTILIZAN
I = 0.5216
MANIPULADORES DE FUNCIÓN
EVALUACION DE FUNCIONES: FEVAL
Evalua la function f en los argumentos
especificados.
Sintaxis:
feval=(‘f’, arg1, arg, …, argN) Eval: Evalua una cadena, sentencia o
[x1, x2] = feval (‘ECUA2’, 1,2,3) llamada a function.
X1=-1.0000 + 1.4142i Sintaxis: eval (‘string’)
X2 =-1.0000-1.4142i >> x=[1:5];
>> Cadena2='w=(x.^0.5-1)./(x.^0.5)';
>> eval(Cadena2)
w=
0 0.2929 0.4226 0.5000 0.5528
INTRODUCCIÓN DE FUNCIONES POR
TECLADO
1ra. Forma
3ra. Forma
> syms x
>> syms x
>> f1=input('Ingrese f1 = ')
>> f1=input('Ingrese f1 = ')
Ingrese f1 = sin(5*x)
f1 =sin(5*x) Ingrese f1 = sin(5*x)
>> diff (f1) f1 = sin(5*x)
ans = 5*cos(5*x) >> f1 = inline(f1)
2da. Forma f1 =
>> syms x Inline function:
>> f1=input('Ingrese f1 = ') f1(x) = sin(x.*5.0)
Ingrese f1 = @(x) sin(5*x);
>> feval(f1,1)
>> I = quad(f1, 0, pi)
ans = -0.9589
I= 0.4000
EJEMPLO – FUNCIONES POR TECLADO
>> f2
>> syms x y f2 =
>> f2=input('Ingrese f2 = ') cos(x*y^2) + sin(x*y)
Ingrese f2 = sin(x*y) + cos(x*y^2) >> f2=inline(f2)
f2 = cos(x*y^2) + sin(x*y) f2 =
>> x = [1 0 2 3] ; Inline function:
>> y=[1 1 1 1] ; f2(x,y) = cos(x.*y.^2)+sin(x.*y)
>> z = eval(f2) >> feval (f2, 1,1)
z = 1.3818 1.0000 0.4932 -0.8489 ans =
1.3818
CALCULO SIMBOLICO
Obtener el valor de f (x,y) = (2x+5y+3)^1/3 en los puntos (0,0), (0,1), (0,2),
y (0,3).
» syms x y
» f=(2*x+5*y+3)^(1/3)
» v=[0 1 2 3];
» val=subs(f,{x,y},{0*v,v}) %sustituye (x,y) por (0,v(i))
» val=double(val) %pasa val a variable numérica
LÍMITES, DERIVADAS E
INTEGRALES SIMBÓLICAS
MANIPULACIÓN DE EXPRESIONES
SIMBÓLICAS
SOLUCION DE ECUACIONES
solve(p) → encuentra soluciones de la ecuación p=0
Calcúlense todas las raíces del polinomio z3+z2−4z+6
» syms z
» p=z^3+z^2-4*z+6
» sol=solve(p)
nos da las soluciones de la ecuación. La solución es un vector
de tres componentes que hemos guardado con el nombre
sol.
La orden solve no siempre da todas las soluciones como
puede comprobarse si se escribe
» sol=solve(’sin(x)’)
Sólo devuelve sol = 0
>> syms x y
>> sol=solve('x+y-1', '2*x-3*y-10')
Para obtener los valores de la solución escribimos
>> sol.x, sol.y
FIN
Parte2