Matlab 3D
Matlab 3D
Matlab 3D
PROGRAMA
•Introducción.
•Operaciones con matrices.
•Manipulación de vectores y
matrices.
•Funciones matriciales.
•Polinomios y procesado de señales.
•Funciones de funciones.
•Gráficos: 2D y 3D.
•Programación.
•Análisis de datos.
•Análisis numérico
•Ayuda
¿Qué es Matlab?, MATrix LABoratory
MATLAB es un programa para realizar cálculos
numéricos con vectores y matrices. Como caso
particular puede también trabajar con números
escalares, tanto reales como complejos. Una de las
capacidades más atractivas es la de realizar una
amplia variedad de gráficos en dos y tres
dimensiones. MATLAB.
Los elementos básicos del Matlab, como cualquier otro
lenguaje de programación, son: constantes, variables,
operaciones, expresiones y funciones.
Constante numéricas:
• Números enteros: 2 35 -48
• Números reales: 2. -35.2 48.45
• Máximo de 16 cifras significativas
• Utilizando la letra E a continuación de un nº con
punto decimal [2.2250e-308 1.7e+308].
• Números complejos: 2+3i 4*j i,j=(-1)½
Operaciones aritméticas elementales:
Suma: + Multiplicación: * Exponenciación: ^
Resta: - División: /
Primero exponenciaciones, luego divisiones y
multiplicaciones por último sumas y restas.
Variables: es la etiqueta que identifica una porción de
memoria;
Matlab diferencia entre mayúsculas y minúsculas
A = ans =
1 3 5 42 79 61
6 9 2 86 142 68
4 8 7 92 164 106
» det(A)
MATrix LABoratory
ans = -- datos son matrices
-- reglas del álgebra lineal
5
Vectores y matrices_______________________________
Los vectores pueden ser vectores fila o vectores columna
Vectores fila; los elementos de una misma fila están separados por
blancos o comas,
>> v =[2 3 4]
Vectores columna: los elementos de una misma columna están
separados por intro o por caracteres punto y coma (;).
>> w =[2;3;4;7;9;8]
La dimensión de un vector se obtiene por el comando length(nombre
del vector) sub_w=w(i:k:j)
Generación de vectores:
• Especificando el incremento de sus componentes v=a:h:b;
• Especificando su dimensión linspace(a,b,n) si se omite n toma 100
por defecto; el incremento es k=(b-a)/(n-1)
• Con componentes logarítmicamente espaciadas logspace(a,b,n)
genera un vector fila de n puntos logarítmicamente espaciados entre
10a y 10b. Si se omite el valor de n se toma 50
Vectores y matrices_______________________________
Operaciones con escalares:
v+k adición o suma
v-k sustracción o resta
v*k multiplicación
v/k divide por k cada elemento de v
k./v divide k por cada elemento de v
v.^k potenciación cada componente de v esta elevado a k
k.^v potenciación k elevado cada componente de v
Operaciones entre vectores:
v+w adición o suma
v-w sustracción o resta
v.*w multiplicación cada elemento de v por el correspondiente de w
v./w divide cada elemento de v por el correspondiente de w
v.^w potenciación cada componente de v esta elevado al
correspondiente de w
Producto escalar de vectores v*w calcula el producto escalar de v
por w
Vectores y matrices_______________________________
sum(v) suma
prod(v) producto
v` transposición de vectores (filas columnas)
dot(v,w) producto escalar de vectores
cross(v,w) producto vectorial de vectores
[y,k]=max(v) valor máximo de las componentes de un
vector k indica la posición, lo mismo para min(v) valor
mínimo
Vectores y matrices_______________________________
Para definir una matriz no hace falta establecer de antemano su tamaño (de
hecho, se puede definir un tamaño y cambiarlo posteriormente). MATLAB
determina el número de filas y de
columnas en función del número de elementos que se proporcionan (o se
utilizan). Las matrices se definen por filas; los elementos de una misma fila
están separados por blancos o comas, mientras que las filas están separadas
por pulsaciones intro o por caracteres punto y coma (;). Por ejemplo, el
siguiente comando define una matriz A de dimensión (3x3):
» A=[1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es la siguiente:
A=
123
456
789
+ adición o suma
– sustracción o resta
* multiplicación
' adjunta (transpuesta o transpuesta conjugada)
^ 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
Vectores y matrices_______________________________
diag(A) Obtencion de la diagonal de una matriz.
sum(diag(A)) calcula la traza de la matriz A
diag(A,k) busca la k-ésima diagonal.
Generación de matrices:
•Generación de una matriz de ceros, zeros(n,m)
•Generación de una matriz de unos, ones(n,m)
•Inicialización de una matriz identidad eye(n,m)
•Generación de una matriz de elementos aleatorios
rand(n,m)
• Matrices con diagonal dada diag(v), diag(v,k)
• [X Y] columnas, [X; Y] filas
Vectores y matrices_______________________________
>> a= sparse(i,j,c,m,n)
m indica filas, n columnas, c vector que contiene los
elementos no nulos i,j son dos vectores que indican la
posición de cada elemento de c
para visualizar la matriz entera >>full(a)
[i2,j2,c2]=find(a)
Vectores y matrices_______________________________
12 −4 0 0 0
7 3 0 0 −8
0 0 0 0 0
0 0 − 13 11 0
0 0 2 7 −4
9 * celsius
+ 32
5
Vectores y matrices_______________________________
Dado un polinomio
x3+2x
se representa por
>> pol1=[1 0 2 0]
para el cálculo de las raíces de un polinomio existe el
comando roots.
>>raices=roots(pol1) (da un vector columna,
aunque pol1 es un vector fila)
Polinomios______________________________________
Un polinomio puede ser reconstruido a partir de sus
raíces con el comando poly
>> p=poly(raices) (da un vector fila) **
en caso de que el argumento de poly fuera una matriz
obtendríamos como resultado el polinomio característico
de la matriz. Así mismo si queremos calcular los
autovalores de la matriz bastaría con calcular las raíces
del polinomio característico.
Ejemplo1:
pol2=[2 4 0 1]; % definición del polinomio 2x3+4x2+1
raices=roots(pol2) % cálculo de sus raíces
pol2_n=poly(raices) % reconstrucción del polinomio
real(pol2_n) % ¿qué pasó?
Ejemplo2:
A=[1 2 3 ; 2 3 4; 4 2 5]; p=poly(A) % pol. característico
roots(p) % autovalores de A
Polinomios______________________________________
Para calcular el valor de un polinomio p en un punto
dado x basta con utilizar el comando polyval
>>y=polyval(p,x)
Ejemplo3:
p=[1 -1 -1 1] % definición del polinomio x3-x2-x+1
polyval(p,2)
Ejemplo4:
x=-2:0.1:2;
Y=polyval(p,x);
Para multiplicar y dividir polinomios tenemos los
comandos especiales conv(p1,p2) y deconv(p1,p2)
Ejemplo5:
p1=[1, -2, 1]; p2=[1,1]; p3=conv(p1,p2)
p4=deconv(p3,p2)
[p4,r]=deconv(p3,p2) % resto de la división
Polinomios______________________________________
Para conocer el resto de la división de polinomios basta con
poner
>>[p4,r] = deconv(p3,p2)
El comando residue, permite el cálculo del desarrollo en
suma de fracciones simples del cociente p1/p2.
p2 debe tener raíces reales
El formato del comando es: >>[r,p,k] =residue(p1,p2)
donde:
r= vector columna con los numeradores
p= vector columna con las raices del denominador
k= vector fila con los coeficientes del polinomio
independiente.
p1( x ) r (1) r (n )
= ++ + k( x )
p2( x ) x − p(1) x − p(n )
Polinomios______________________________________
p=[1, 6,0,1];
d=polyder(p) % es decir 3x2+12x
Polinomios______________________________________
Ejercicio3.2
a) presion=[-0.132 4.55 -21.0];
presion0=polyval(presion,273.15-268.25)
b) presion1=3*9.265e-006;
presion(3)=presion(3)-presion1
temp=roots(presion)
Polinomios______________________________________
Ejercicio3.3
format long
p=[1 –1 2 –2 1 –1];
raices=roots(p)
der_p=polyder(p)
polyval(der_p,round(raices(2)))
La solución exacta es
y(x)=c1ex+c2sen(x)+c3cos(x)+c4xsen(x)+c5xcox(x)
dsolve(‘D5y-D4y+2*D3y-2*D2y+Dy-y=0’,’x’)
Polinomios______________________________________
Ejercicio3.4
numerador=[1 0 0 2 1];
denominador=[1 –1];
[cociente,resto]=deconv(numerador,denominador)
3
4 3 2
4 x x x
I = x + x2 + x + 3 + dx = + + + 3 x + 4 ln( x − 1)
x − 1 4 3 2
int(‘(x^4+2*x+1)/(x-1)’)
ECUACIONES LINEALES
Dado un sistema algebraico de ecuaciones lineales de la
forma Ax=b. Lo resolveremos por métodos clásicos y
con funciones propias de matlab
Algunos comandos cuyos argumentos son matrices y
resultan útiles para la resolución de sistemas.
Regla de Cramer
Ejemplo2: Dado un sistema Ax=b
A=[1,2,3;2,3,4;4,2,5]
b=[4;5;1];
%comprobamos que la matriz no es singular
det(A)
D1=A;D1(:,1)=b
D2=A;D2(:,2)=b
D3=A;D3(:,3)=b
x=[det(D1);det(D2);det(D3)]/det(A)
Ecuaciones lineales________________________________
La solución por Cramer es tediosa y poco eficaz.
Una primera posibilidad más cómoda.
Si la matriz es cuadrada y su determinante es distinto de
cero.
Ainv=inv(A)
Y el sistema se resolvería como
x=Ainv*b
Otra solución sería utilizar la división matricial
X=A\b
>>[V,D]=eig(A)
Ecuaciones lineales________________________________
Ejercicio4.1
Se considera la matriz A. Calcular el determinante de la
matriz A. Resolver el sistema siendo b un vector columna
igual a (1 2 3)
6 18 2
A= 7 − 2 − 4
4 10 − 6
Ejercicio4.1
A=[6 18 2;7 -2 -4;4 10 -6];
d=det(A)
b=[1;2;3];
sol=A\b
A(1,3)=-10
d=det(A)
sol=A\b
A*sol-b
Ecuaciones lineales________________________________
Ejercicio 4.2
M=[1 1 –2; -1 –2 0; 3 0 1];
poly(M)
M^3+4*M+13*eye(3)
Ejercicio 4.3
A=[1 2 0; 2 5 -1;4 10 -1];
[V,D]=eig(A)
diag(D)
GRÁFICOS: 2D Y 3D
Funciones gráficas 2D elementales:
MATLAB dispone de 4 funciones básicas para crear
gráficos 2-D. Estas se diferencian principalmente por el
tipo de escala que utilizan en los ejes Estas cuatro
funciones son las siguientes:
FUNCIÓN PLOT
Ejemplo2
x=0:pi/90:2*pi;
y=sin(x).*cos(x);
plot(x,y)
grid on
grid off
xlabel(‘eje x (en radianes)’)
ylabel(‘eje y’)
title(‘y=sen(x)*cos(x)’)
GRÁFICOS: 2D Y 3D______________________________
FUNCIÓN PLOT
Es posible incluir en el título o en la etiqueta de los ejes el
valor de una variable numérica. Ya que el argumento de
los comandos title, xlabel e ylabel es una variable
carácter, es preciso transformar las variables numéricas
hold on
hold off
GRÁFICOS: 2D Y 3D______________________________
y yellow . point - solid
m magenta o circle : dotted
c cyan x x-mark -. dashdot
r red + plus -- dashed
g green * star
b blue s square
w white d diamond Opciones de plot
k black v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram
GRÁFICOS: 2D Y 3D______________________________
Ejemplo3: Calcular gráficamente las soluciones de la
ecuación
2 x − cos(2 x )
teta=0:pi/360:pi/4;
= 0 .4
2
f1=(2*teta-cos(2*teta))/2;
f2=0.4*ones(size(f1));
figure
plot(teta,f1,'g--',teta,f2,'r')
axis square
xlabel('Angulo (radianes)')
gtext('2x-cos(2x))/2')
text(0.2,0.43,'y=0.4')
[teta0,y0]=ginput(1)
title(['Raiz aproximada=',num2str(teta0)])
GRÁFICOS: 2D Y 3D______________________________
axis([x0 x1 y0 y1])
axis auto: devuelve la escala a la de defecto
axis off: desactiva los etiquetados de los ejes
desapareciendo los ejes sus etiquetas y la grid.
axis on: lo activa de nuevo
axis xy: sistema de coordenas cartesianas origen en el
ángulo inferior izquierdo, eje ox de izqda. A dcha. y oy
de abajo a arriba.
axis equal: los mismos factores de escala para los dos
ejes
axis square: cierra con un cuadrado la región delimitada
por los ejes de coordenadas actuales.
GRÁFICOS: 2D Y 3D______________________________
Impresión de gráficas
FUNCIÓN SUBPLOT
Ejemplo7:
subplot(121)
f=‘sin(x)-2*cos(2*x)’;
fplot(f,[0 2*pi])
legend(‘sen(x)-2cos(2x)’)
subplot(122)
fplot(‘sin’,[0 4*pi],’r’)
legend(‘sen(x)’)
GRÁFICOS: 2D Y 3D______________________________
Otras funciones gráficas 2-D
Representación de polígonos
función especial para dibujar polígonos planos,
rellenándolos de un determinado color.
La forma general es la siguiente:
» fill(x,y,c)
· Si c es un carácter de color ('r','g','b','c','m','y','w','k'), o
un vector de valores [r g b], el polígono se rellena de
modo uniforme con el color especificado.
· Si c es un vector de la misma dimensión que x e y, sus
elementos se trasforman de acuerdo con un mapa de
colores determinado, y el llenado del polígono –no
uniforme en este caso–se obtiene interpolando entre los
colores de los vértices. Este comando con matrices:
GRÁFICOS: 2D Y 3D______________________________
» fill(A,B,C)
donde A y B son matrices del mismo tamaño. En este
caso se dibuja un polígono por cada par de columnas de
dichas matrices. C puede ser un vector fila de colores
uniformes para cada polígono, o una matriz del mismo
tamaño que las anteriores para obtener colores de
relleno por interpolación.
Ejemplo8:
x=[1,2,1,0];
y=[0,1,2,1];
figure
fill(x,y,’r’)
title(‘rombo’)
GRÁFICOS: 2D Y 3D______________________________
Funciones gráficas 3D elementales:
La función plot3 es análoga a su homóloga bidimensional
plot. Su forma más sencilla es la
siguiente:
» plot3(x,y,z)
Ejemplo9:
teta=0:pi/80:8*pi;
x=1+2*cos(teta);
y=1+2*sin(teta);
z=4*teta;
plot3(x,y,z)
axis([-1 3 -1 3 0 120]);
xlabel('eje x')
ylabel('eje y')
zlabel('eje z')
GRÁFICOS: 2D Y 3D______________________________
Representación gráfica de superficies. mesh(x,y,Z),
Creación de una malla [X, Y]=meshgrid(x,y)
Gráfica de la malla construida sobre la superficie z
mesh(X,Y,Z), meshz(X,Y,Z)
Además hace una proyección sobre el plano z=0,
meshc(X,Y,Z), líneas de contorno en el plano z=0
Ejemplo10:
x=[0:2:200];y=[0:50];
%Obtenemos la malla del dominio
[X Y]=meshgrid(x,y);
length(x),length(y)
size(X), size(Y)
Z=X.^2-Y.^2;
figure(1);mesh(X,Y,Z)
figure(2);meshz(X,Y,Z)
figure(3);meshc(X,Y,Z)
GRÁFICOS: 2D Y 3D______________________________
Lo mismo con surf(X,Y,Z), surfc(X,Y,Z), surfl(X,Y,Z)
Una forma distinta de representar funciones tridimensionales es por medio de
isolíneas o curvas de nivel. Con contour(x,y,Z) y con contour3(X,Y,Z)
generamos las líenas de nivel de una superficie.
Existen etiquetas especiales, primero necesitamos saber los valores del
contorno
cs=contour(Z) y luego ponemos clabel(cs) o clabel(cs,v)
pcolor(Z) dibuja una proyección con sombras de color sobre el plano, la
gama de colores está en consonancia con las variaciones de la matriz Z.
La función surf y pcolor tiene diversas posibilidades referentes a la forma en
que son representadas las facetas o polígonos coloreados. Las tres
posibilidades son las siguientes:
• shading flat: determina sombreado con color constante para cada polígono.
Este sombreado se llama plano o flat.
• shading interp: establece que el sombreado se calculará por interpolación
de colores entre los vértices de cada faceta. Se llama también sombreado de
Gouraud
• shading faceted: consiste en sombreado constante con líneas negras
superpuestas. Esta es la opción por defecto
GRÁFICOS: 2D Y 3D______________________________
Cuando se desea dibujar una figura con un determinado mapa de colores se establece
una correspondencia (o un mapping) entre los valores de la función y los colores del
mapa de colores.
» caxis([cmin, cmax]) %escala el mapa de colores
colormap(opcion). Distintas escalas de colores
hsv - Hue-saturation-value color map.
hot - Black-red-yellow-white color map.
gray - Linear gray-scale color map.
bone - Gray-scale with tinge of blue color map.
copper - Linear copper-tone color map.
pink - Pastel shades of pink color map.
white - All white color map.
flag - Alternating red, white, blue, and black color map.
lines - Color map with the line colors.
colorcube - Enhanced color-cube color map.
vga - Windows colormap for 16 colors.
jet - Variant of HSV.
prism - Prism color map.
cool - Shades of cyan and magenta color map.
autumn - Shades of red and yellow color map.
spring - Shades of magenta and yellow color map.
winter - Shades of blue and green color map.
summer - Shades of green and yellow color map.
GRÁFICOS: 2D Y 3D______________________________
Manipulación de gráficos
view: view(azimut, elev), view([xd,yd,zd]).
view(2)
view(3)
rotate(h,d,a) o rotate(h,d,a,o) h es el objeto, d es un
vector que indica la dirección y a un ángulo, o el origen de
rotación
Transformación de coordenadas
[ang,rad]=cart2pol(x,y) %De cartesianas a polares
[ang,rad,z]=cart2pol(x,y,z) %De cartesianas a cilindricas
Programación de funciones
La primera línea es ejecutable y empieza por la palabra
function de la forma
function arg_salida=nombre_funcion(arg_entrada)
function t=gases(p,v,n)
%t=gases(p,v,n)
%funcion que considra la ley de los gases ideales
%Argumentos de entrada:
%presion p (atmosferas)
%volumen v (litros)
%número de moles n
%Argumentos de salida:
%temperatura t (grados kelvin)
%R=0.0821 atm.litro/mol.grado
R=0.0821
t=p*v/(n*R);
for k=n1:incre:n2
end
for k=vector_columna
end
Ejercicio6.1:
Utilizando estructuras de control construir una función que
nos calcule las raíces de una ecuación de segundo grado
ax2+bx+c=0
PROGRAMACIÓN________________________________
Ejercicio6.1:
function raiz=sole2(a,b,c)
%raiz=sole2(a,b,c)
%solucion de la ecuacion de segundo grado
%ax^2+bx+c=0, a~=0
%
if (nargin ~=3)
error(‘El numero de argumentos de entrada debe ser 3’)
end
discri=b^2-4*a*c;
raiz=[];
if(discri==0)
raiz=-b/(2*a);
disp([‘Raiz doble=‘,num2str(raiz)])
return
elseif(discri>0)
PROGRAMACIÓN________________________________
raiz(1)=(-b+sqrt(discri))/(2*a);
raiz(2)=(-b-sqrt(discri))/(2*a);
disp([‘Raices reales simples=‘,num2str(raiz)])
return
else
raiz(1)=(-b+sqrt(-discri)*i)/(2*a);
raiz(2)=(-b-sqrt(-discri)*i)/(2*a);
disp([‘Raices complejas=‘,num2str(raiz)])
return
end
Desviación típica.
s=std(y)
Nos da la dispersión o variación de los datos para dar
una idea de cuan esparcidos están.
(y (i ) − y )2
std ( y ) = i
N
Coeficientes de correlación y matriz de covarianza
r=corrcoef([x,y])
Nos da el grado de relación entre x e y.
N
x ( i ) y ( i )
r= i =1
(N
i =1
x(i ) )(
2 N
i =1
y (i ) 2
)
ANÁLISIS DE DATOS______________________________
Ejemplo1:
R=corrcoef(califica)
1.0000 0.6438 0.4563 0.4628
0.6438 1.0000 0.6164 0.6089
0.4563 0.6164 1.0000 0.3332
0.4628 1.0000
0.6089 0.3332
R(2,3) = R(3,2) ; R(4,3) poca relación entre física y
estadística
Para calcular la covarianza (numerador de la expresión
r=...)
N
s=cov([x,y]) x ( i ) y ( i )
s= i =1
N −1
ANÁLISIS DE DATOS______________________________
En el caso de matrices S=cov(X) nos daría la matriz de
covarianza y su diagonal se llama vector de varianzas =
desviaciones típicas al cuadrado.
Gráficos estadísticos.
Histograma:
>>hist(y)
Ejemplo2:
y=rand(40,1);
hist(y)
Variantes: hist(y,n) (con n subintervalos de clases
regulares); hist(y,x); [n,p]=hist(y)
Gráfico de barras:
bar(y)
Perfil de muestra:
stairs(y)
stem(x,y)
ANÁLISIS DE DATOS______________________________
Gráfico de errores:
errorbar(x,y,e)
Histograma angular:
rose similar a hist pero realiza un histograma angular los
valores de la muestra es de ángulos en radianes.
Curvas de regresión
p=polyfit(x,y,n)
Calcula el polinomio de regresión de grado n; es decir el
polinomio p de grado n que minimiza. (ver ejercicio 7.2)
N 2
(p( x ) − y )
i =1
i i
ANÁLISIS DE DATOS______________________________
Interpolación uni y bidimensional
.-1D
vector_y=interp1(x,y,vector_x,opcion)
opcion:
-’linear’: interpolación lineal
-’cubic’ :interpolación cúbica
-’spline’: interpolación spline cúbica (ptos de
interpolación igualmente espaciados).
.-2D
matriz_Z=interp2(X,Y,Z,matriz_X,matriz_Y,opcion)
opcion:
-’bilinear’: interpolación lineal
-’bicubic’ :interpolación cúbica
-’nearest’
ANÁLISIS DE DATOS______________________________
Ejercicio7.1:
La tabla siguiente recoge el peso de 30 estudiantes.
Construir sobre una misma ventana las 4 figuras
siguientes:
1.-Un histograma de frecuencias con el ox peso y oy
frecuencia de valores.
2.-El polígono de frecuencias, curva obtenida entre los
puntos definidos por las marcas de clase y la frecuencia.
3.-El perfil de muestra mediante stairs
4.-El perfil de muestra mediante stem.
Calcular el máximo y mínimo peso y la media de pesos.
71 82 65 75 77 91 59 84 89 81
73 91 82 75 96 85 69 76 81 92
84 79 77 95 81 79 84 85 76 82
ANÁLISIS DE DATOS______________________________
Ejercicio7.1:
peso=[71 82 65 75 77 91 59 84 89 81 ...
73 91 82 75 96 85 69 76 81 92 ...
84 79 77 95 81 79 84 85 76 82];
figure
subplot(221)
hist(peso)
title(‘Histograma’)
xlabel(‘Peso’)
ylabel(‘Frecuencia’)
subplot(222)
[n,p]=hist(peso);
plot(p,n)
title(‘poligono de frecuencias’)
xlabel(‘Peso’)
ylabel(‘Frecuencia’)
subplot(223)
ANÁLISIS DE DATOS______________________________
stairs(peso)
title(‘Stairs’)
ylabel(‘Peso’)
xlabel(‘Individuo’)
subplot(224)
stem(peso)
title(‘Stem’)
ylabel(‘Peso’)
xlabel(‘Individuo’)
maximo=max(peso)
minimo=min(peso)
media=mean(peso)
ANÁLISIS DE DATOS______________________________
Ejercicio7.2
Se ha medido experimentalmente la conductividad
eléctrica del acero a distintas temperaturas,
recogiéndose los siguientes valores:
Obtener los polinomios de regresión de primero y
segundo grado. Calcular para los polinomios obtenidos
cuál sería el valor estimado de la conductividad eléctrica
a los 600 y a los 1000ºC.
T(ºC) K(Wcm)-1
100 51813
300 28571
500 17483
700 11696
900 9116
ANÁLISIS DE DATOS______________________________
Ejercicio7.2
temp=100:200:900;
conduc=[51813 28571 17483 11696 9116];
pol1=polyfit(temp,conduc,1)
temp1=0:50:1000;
conduc1=polyval(pol1,temp1)
conduc1e=polyval(pol1,temp);
plot(temp1,conduc1,temp,conduc1e,’o’,temp,conduc,’*’)
legend(‘recta de regresion’,’conductividades estimadas’,...
‘conductividades medidas’)
xlabel(‘temperatura ºC’)
ylabel(‘Conductividad electrica (ohm cm)^{-1}’)
cond1_600=polyval(pol1,600)
cond1_1000=polyval(pol1,1000)
ANÁLISIS DE DATOS______________________________
pol2=polyfit(temp,conduc,2)
temp2=0:50:1000;
conduc2=polyval(pol2,temp2)
conduc2e=polyval(pol2,temp);
figure
plot(temp2,conduc2,temp,conduc2e,'o',temp,conduc,'*')
legend('recta de regresion','conductividades estimadas',...
'conductividades medidas')
xlabel('temperatura ºC')
ylabel('Conductividad electrica (ohm cm)^{-1}')
cond2_600=polyval(pol2,600)
cond2_1000=polyval(pol2,1000)
corre1=corrcoef([conduc',conduc1e'])
corre2=corrcoef([conduc',conduc2e'])
ANÁLISIS DE DATOS______________________________
Ejercicio7.3:
[x,y]=meshgrid(-3:1:3);
z=peaks(x,y);
Dada esta función ver la diferencia entre la interpolación
nearest, bilinear y bicubic
ANÁLISIS DE DATOS______________________________
Ejercicio7.3:
[x,y]=meshgrid(-3:1:3);
z=peaks(x,y);
[xi,yi]=meshgrid(-3:0.25:3);
zi1=interp2(x,y,z,xi,yi,'nearest');
zi2=interp2(x,y,z,xi,yi,'bilinear');
zi3=interp2(x,y,z,xi,yi,'bicubic');
figure
mesh(xi,yi,zi1)
figure
mesh(xi,yi,zi2)
figure
mesh(xi,yi,zi3)
ANÁLISIS DE DATOS______________________________
Ejercicio7.4:
Para el ejemplo del ejercicio 6.2 calcular:
.- La nota media obtenida por los alumnos en cada una
de las disciplinas.
.- La nota máxima en estadística y los alumnos que la
han obtenido
ANÁLISIS DE DATOS______________________________
Ejercicio7.4:
mean(califica);
for i=1:4
materia=variables(long_v(i)+1:long_v(i+1));
disp([‘La nota media de ‘,materia, ...
‘es ...’,num2str(ans(i))])
end
yM=max(califica(:,4)); %calculo de la calificacion maxima
disp([‘La nota máxima es’, num2str(yM),’ obtenida por : ‘])
%identificación alumno
iM=find(califica(:,4)==yM);
%se extrae su nombre y apellidos
ANÁLISIS DE DATOS______________________________
Ejercicio7.4:
for i=1:length(iM)
n=3*(iM(i)-1);
if n==0
p=[0 long_n(1:3)];
else
p=long_n(n:n+3);
end
alumno=[nombres(p(1)+1:p(2)) ‘ ‘ nombres(p(2)+1:p(3)) ...
‘ ‘ nombres(p(3)+1p(4))];
disp(alumno)
end
ANÁLISIS NUMÉRICO
En este capítulo nos introduciremos al análisis numérico
de problemas básicos relacionados con el estudio de
funciones de una y varias variables, la aproximación de
extremos locales o el cálculo de ceros de una función.
x=0;eval(‘sin(x)-2*cos(2*x)+x^2-pi^2+2’)
x=10;eval(‘sin(x)-2*cos(2*x)+x^2-pi^2+2’)
ANÁLISIS NUMÉRICO_____________________________
int('sin(x)^2*cos(x)^2',0,4*pi) %1/2*pi=1.5708
ia=quad('sin(x).^2.*cos(x).^2',0,4*pi) % 1.0051e-030
ial=quadl('sin(x).^2.*cos(x).^2',0,4*pi) %1.5708
ANÁLISIS NUMÉRICO_____________________________
Ejemplo5:
La ecuación de van der Pol
( )
y1 − 1 − y y1 + y1 = 0
2
1
0
Reescribimos el sistema
y1 = y 2
(
y 2 = 1 − y y 2 − y1
2
1 )
Escribimos el fichero ODE
ANÁLISIS NUMÉRICO_____________________________
function dy=vdp1(t,y)
Llamamos a solver
Ejemplo:
dy=[y(2); (1-y(1)^2)*y(2)-y(1)];
[T,Y]=ode45(‘vdp1’,[0 20],[2;0]);
plot(T,Y(:,1),'-',T,Y(:,2),'--')
title('Solucion de la ecuacion de Van der Pol, \mu=1')
xlabel('Tiempo T')
ylabel('Solucion Y')
legend('Y1','Y2')
ANÁLISIS NUMÉRICO_____________________________
AYUDA
La ayuda es lo mas importante de matlab,
help nombre_comando
help nombre_toolbox
Algunas importantes son
help graph2d
help graph3d
help specgraph
help save
Podemos ver ejemplos hechos con matlab poniendo
demo
Para saber más: http://www.mathworks.com/
http://www.mathworks.com/access/helpdesk/help/toolbox/compiler/compiler.shtml
Esta última hace referencia a los compiladores de c de matlab, los mex files