clear all;
close all;
clc;
%------------
NUM=[256, 512, 1024, 2048, 4096]; %diferentes numeros de ptos tomados
numPUN=length(NUM);
tic; % indica el tiempo que tarda en realizar el ejercicio
for m=1:numPUN
ndata=NUM(m);%número de puntos de xx
xx=linspace(0,10,ndata);
fun=xx.^3 + 0.25*xx +3;
integral=0;
paso=xx(2)-xx(1);
for k=1:ndata-1
integral=integral + fun(k)*paso;
end%fin del bucle con contador 'k'
resul(m)=integral;
end%fin del bucle con contador 'm'
timeE=toc;
viernes, 28 de noviembre de 2008
clacula la integral mediante rectángulos
%integral
clear all;clc; close all;
num=1024;
xx=linspace(0,10,num);
fun=xx.^3+0.25*xx+3;
plot(xx,fun);
deltax=xx(2)-xx(1); %almacena el incremento
integral=0;
for k=1:(num-1);
integral=integral+fun(k)*deltax; % realiza la integral por la aproximación mediante barras
end;
clear all;clc; close all;
num=1024;
xx=linspace(0,10,num);
fun=xx.^3+0.25*xx+3;
plot(xx,fun);
deltax=xx(2)-xx(1); %almacena el incremento
integral=0;
for k=1:(num-1);
integral=integral+fun(k)*deltax; % realiza la integral por la aproximación mediante barras
end;
Función y derivada numérica (método Euler adelante)
% AUTOR:
% FECHA:
ndata=4096;
x=linspace(-10,10,ndata);
fun=x.^3+x+2;
fun1=fun+rand(1,ndata);
hold on;
plot(x,fun,'k-');
plot(x,fun1,'r+');
%graf2=figure(2);
%graf2=plot(x,fun-fun1,'r+'); % gráfica de la derivada de la función
%afectada por el random
%DERIVADA NUMERICA
deltax= x(2)-x(1);
for k=1:(ndata-1);
deri(k)= ((fun(k+1)-fun(k))/deltax);
end;
graf3=figure(3);
graf3=plot(x(1:ndata-1),deri,'b-','LineWidth',1.5);
pos=[30 100 550 350]; %determino la posición de la gráfica
set(figure(3),'Position',pos); % constituye la posición elegida
% FECHA:
ndata=4096;
x=linspace(-10,10,ndata);
fun=x.^3+x+2;
fun1=fun+rand(1,ndata);
hold on;
plot(x,fun,'k-');
plot(x,fun1,'r+');
%graf2=figure(2);
%graf2=plot(x,fun-fun1,'r+'); % gráfica de la derivada de la función
%afectada por el random
%DERIVADA NUMERICA
deltax= x(2)-x(1);
for k=1:(ndata-1);
deri(k)= ((fun(k+1)-fun(k))/deltax);
end;
graf3=figure(3);
graf3=plot(x(1:ndata-1),deri,'b-','LineWidth',1.5);
pos=[30 100 550 350]; %determino la posición de la gráfica
set(figure(3),'Position',pos); % constituye la posición elegida
miércoles, 19 de noviembre de 2008
segundo bucle, paso a paso con funcion pause
num=4
resul=1
for k=1:num
[k resul]
pause; % espera a que toquemos cualquier tecla
resul=resul*k
[k resul]
pause;
end
resul=1
for k=1:num
[k resul]
pause; % espera a que toquemos cualquier tecla
resul=resul*k
[k resul]
pause;
end
utilización de For, creamos primer bucle muy sencillo.
%autor:
%18/11/08
% realizar bucle determinar factorial de un numero (menor de 15)
num=8; %numero del cual voy a realizar el factoria
lresul=1 %variable que almacena el resultado
for k=1:num
resul=resul*k
end % end del for
%18/11/08
% realizar bucle determinar factorial de un numero (menor de 15)
num=8; %numero del cual voy a realizar el factoria
lresul=1 %variable que almacena el resultado
for k=1:num
resul=resul*k
end % end del for
lunes, 17 de noviembre de 2008
Crear una variable de numeros aleatorios y buscar los que cumplan una determinada condición
% Autor:
% Fecha: 11/11/08
clear all;clc; close all;
% Generar un vector columna de nombre xx1 y con 128 números aleatorios y determinar el numero de valores por encima de 0.5.
% almacemar el resultado de la comparación en una variable con el nombre cxx1.
rand('state',100.3*sum(clock));%genero la semilla, esta va en función de la variable clock, la cual %es independiente de cada ordenador.
xx1= rand(1,128).'; % creo la variable aleatoria entre 1 y 128, y la traspongo para que sea %columna.
cxx1=sum(xx1 > 0.5); % como los verdaderos me devuelve 1, al hacer la suma, obtengo todos los %verdaderos.
cxx2=(xx1>0.5 & xx1<=0.75);% unimos dos sentencias de lógica, buscamos los mayores a 0.5 y %los menores o iguales a 0.75sum(cxx2); cxx3=(xx1==0.25xx1>0.98); % unimos dos secuencias no excluyentes a o b
sum(cxx3);
conta01=find(xx1); % busca los valores xx1 distintos de 0 y nos devuelve el índice
conta02=find(xx1>0.5);% devuelve los indices de los compenentes que cumplen la condición.
conta03=find(xx1>0.5 & xx1<= 0.75); % almacena en la variable conta03 los indices de los valores que cumplen la condición.
xxAA=[1 2 3; 0.2 5 1; -1 2 2.5]; %creamos una matriz
[indF,indC]=find(xxAA>2); % me devuelve el indice fila y columna que cumple la condición
xxAA(indF(1),indC(1)); %devuelve los numeros que lo cumple.
xxAA(indF(2),indC(2));xxAA(indF(3),indC(3));
xxAA=[1 2 3; 0.2 5 1; -1 2 2.5]; %creamos una matriz
indF,indC]=find(xxAA>2); % me devuelve el indice fila y columna que cumple la condición
xxAA(indF(1),indC(1)); %devuelve los numeros que lo cumple.
xxAA(indF(2),indC(2));xxAA(indF(3),indC(3));
% Fecha: 11/11/08
clear all;clc; close all;
% Generar un vector columna de nombre xx1 y con 128 números aleatorios y determinar el numero de valores por encima de 0.5.
% almacemar el resultado de la comparación en una variable con el nombre cxx1.
rand('state',100.3*sum(clock));%genero la semilla, esta va en función de la variable clock, la cual %es independiente de cada ordenador.
xx1= rand(1,128).'; % creo la variable aleatoria entre 1 y 128, y la traspongo para que sea %columna.
cxx1=sum(xx1 > 0.5); % como los verdaderos me devuelve 1, al hacer la suma, obtengo todos los %verdaderos.
cxx2=(xx1>0.5 & xx1<=0.75);% unimos dos sentencias de lógica, buscamos los mayores a 0.5 y %los menores o iguales a 0.75sum(cxx2); cxx3=(xx1==0.25xx1>0.98); % unimos dos secuencias no excluyentes a o b
sum(cxx3);
conta01=find(xx1); % busca los valores xx1 distintos de 0 y nos devuelve el índice
conta02=find(xx1>0.5);% devuelve los indices de los compenentes que cumplen la condición.
conta03=find(xx1>0.5 & xx1<= 0.75); % almacena en la variable conta03 los indices de los valores que cumplen la condición.
xxAA=[1 2 3; 0.2 5 1; -1 2 2.5]; %creamos una matriz
[indF,indC]=find(xxAA>2); % me devuelve el indice fila y columna que cumple la condición
xxAA(indF(1),indC(1)); %devuelve los numeros que lo cumple.
xxAA(indF(2),indC(2));xxAA(indF(3),indC(3));
xxAA=[1 2 3; 0.2 5 1; -1 2 2.5]; %creamos una matriz
indF,indC]=find(xxAA>2); % me devuelve el indice fila y columna que cumple la condición
xxAA(indF(1),indC(1)); %devuelve los numeros que lo cumple.
xxAA(indF(2),indC(2));xxAA(indF(3),indC(3));
ejercicio dióptrio y gráfica normal y logaritmica
% Autor :
% Fecha : 8/11/2008
clear all;clc;close all;
% Script de entrega de clase 5
% Dado un diptrio de curvatura =5.55mm e índices n=1 n'=1.333, representar
% la distancia imagen en función de la distancia objeto para un objeto que
% pueda estar situado desde 1m hasta 1km del vertice del dioptrio,
% empleando 4096 puntos.
s1=linspace(-1000,-1,4096); % Creamos la variable s1 (distancia objeto) la cual va desde 1 metro hasta 1000 metros con 4096 ptos. n1=1; n2=1.333;
% Creamos los índices n r=0.00555;
% Radio del dioptrio de 5.55mm expresado en metros.
%El diotrio esférico viene dado por la expresión: (n2/s2)- (n1/s1)=((n2-n1)/r).
%como queremos la distancia imagen
(s2), s2=n2/((n2-n1)/r)+(n1/s1). s2= n2./(((n2-n1)/r)+(n1./s1)); % Distancia imagen
% REALIZACIÓN DE LA GRÁFICA
graf=figure(1) % creo una figura
graf=plot(s1,s2,'g-','lineWidth',1.75);
axis square; %impone que el gráfico sea de iguales dimensiones horizontales y verticales, sea cuadrada.
xlabel('distancia objeto (metros)','FontName','Arial','FontSize',12); % etiqueta eje x, y la fuente y tamaño
ylabel('distancia imagen (metros)','FontName','Arial','FontSize',12); % etiqueta eje y, y la fuente y tamaño.
set(figure(1),'Name','Distancia imagen en función de la distancia objeto para un diotrio de radio 5.55mm');%nombra al gráfico
set(figure(1),'NumberTitle','off')%elimina el contador que viene por defecto(fig2)
set(figure(1),'MenuBar','none');% elimina los botones de la gráfica
% Escala logaritmica para la función anterior
s2= log(n2./(((n2-n1)/r)+(n1./log(s1)))); % Distancia imagen
% REALIZACIÓN DE LA GRÁFICA
graf2=figure(2) % creo una figura
graf2=plot(log(s1),s2,'r-','lineWidth',1.75);
axis square; %impone que el gráfico sea de iguales dimensiones horizontales y verticales, sea cuadrada.
xlabel('log de la distancia objeto (metros)','FontName','Arial','FontSize',12); % etiqueta eje x, y la fuente y tamaño
ylabel('log de la distancia imagen (metros)','FontName','Arial','FontSize',12); % etiqueta eje y, y la fuente y tamaño.
set(figure(2),'Name','Distancia imagen en función de la distancia objeto para un diotrio de radio 5.55mm');%nombra al gráfico set(figure(2),'NumberTitle','off')%elimina el contador que viene por defecto(fig2)
pos=[30 100 550 350]; %determino la posición de la gráfica
set(figure(2),'Position',pos); % constituye la posición elegida para la gráfica.
set(figure(2),'MenuBar','none');% elimina los botones de la gráfica
% Fecha : 8/11/2008
clear all;clc;close all;
% Script de entrega de clase 5
% Dado un diptrio de curvatura =5.55mm e índices n=1 n'=1.333, representar
% la distancia imagen en función de la distancia objeto para un objeto que
% pueda estar situado desde 1m hasta 1km del vertice del dioptrio,
% empleando 4096 puntos.
s1=linspace(-1000,-1,4096); % Creamos la variable s1 (distancia objeto) la cual va desde 1 metro hasta 1000 metros con 4096 ptos. n1=1; n2=1.333;
% Creamos los índices n r=0.00555;
% Radio del dioptrio de 5.55mm expresado en metros.
%El diotrio esférico viene dado por la expresión: (n2/s2)- (n1/s1)=((n2-n1)/r).
%como queremos la distancia imagen
(s2), s2=n2/((n2-n1)/r)+(n1/s1). s2= n2./(((n2-n1)/r)+(n1./s1)); % Distancia imagen
% REALIZACIÓN DE LA GRÁFICA
graf=figure(1) % creo una figura
graf=plot(s1,s2,'g-','lineWidth',1.75);
axis square; %impone que el gráfico sea de iguales dimensiones horizontales y verticales, sea cuadrada.
xlabel('distancia objeto (metros)','FontName','Arial','FontSize',12); % etiqueta eje x, y la fuente y tamaño
ylabel('distancia imagen (metros)','FontName','Arial','FontSize',12); % etiqueta eje y, y la fuente y tamaño.
set(figure(1),'Name','Distancia imagen en función de la distancia objeto para un diotrio de radio 5.55mm');%nombra al gráfico
set(figure(1),'NumberTitle','off')%elimina el contador que viene por defecto(fig2)
set(figure(1),'MenuBar','none');% elimina los botones de la gráfica
% Escala logaritmica para la función anterior
s2= log(n2./(((n2-n1)/r)+(n1./log(s1)))); % Distancia imagen
% REALIZACIÓN DE LA GRÁFICA
graf2=figure(2) % creo una figura
graf2=plot(log(s1),s2,'r-','lineWidth',1.75);
axis square; %impone que el gráfico sea de iguales dimensiones horizontales y verticales, sea cuadrada.
xlabel('log de la distancia objeto (metros)','FontName','Arial','FontSize',12); % etiqueta eje x, y la fuente y tamaño
ylabel('log de la distancia imagen (metros)','FontName','Arial','FontSize',12); % etiqueta eje y, y la fuente y tamaño.
set(figure(2),'Name','Distancia imagen en función de la distancia objeto para un diotrio de radio 5.55mm');%nombra al gráfico set(figure(2),'NumberTitle','off')%elimina el contador que viene por defecto(fig2)
pos=[30 100 550 350]; %determino la posición de la gráfica
set(figure(2),'Position',pos); % constituye la posición elegida para la gráfica.
set(figure(2),'MenuBar','none');% elimina los botones de la gráfica
representa una función y crea una gráfica customizada
%Autor:
%Fecha 4/11/2008
clear all;clc;
% Definimos variable equiespaciada en el intervalo -2,2 con 1024 pts.
x=linspace(-2,2,1024);
%representamos la función f(x)=12*sin(5x^2-x/6)
f=(12* sin(5*x.^2-x/6));
graff=plot(x,f,'g:','lineWidth',2)
hold on;%para mantener
cm=sum(x.*f)/1024;
valormed=sum(f)/1024;
f1=plot(cm,valormed,'MarkerSize',9);
xlabel('eje x (ua)','FontName','Arial','FontSize',10) % etiqueta eje x, y la fuente y tamaño
ylabel('eje y (ua)','FontName','Arial','FontSize',10) % etiqueta eje x, y la fuente y tamaño
set(gca,'FontName','Verdana','FontSize',8)%da las propiedades al objeto gca, get current axes%de manera que elijo el tamaño y fuente de los ejes
grid %crea una red en la figura para ayudar a encontrar los puntos
axis square %crea una figura donde la parte hor y vert son iguales
% para cerrar todas las gráficas empleamos close all, deberiamos escribirla% al ppio%variamos las propiedades del gráfico
POS=[30 100 500 300];%posición donde va a salir
fig2=figure; set(fig2,'position',POS);%sale en la posicion pos
set(fig2,'Resize','off');
set(fig2,'MenuBar','none'); %elimina los botones auxiliares
set(fig2,'MenuBar','default'); %devuelve las propiedades anteriores
%Fecha 4/11/2008
clear all;clc;
% Definimos variable equiespaciada en el intervalo -2,2 con 1024 pts.
x=linspace(-2,2,1024);
%representamos la función f(x)=12*sin(5x^2-x/6)
f=(12* sin(5*x.^2-x/6));
graff=plot(x,f,'g:','lineWidth',2)
hold on;%para mantener
cm=sum(x.*f)/1024;
valormed=sum(f)/1024;
f1=plot(cm,valormed,'MarkerSize',9);
xlabel('eje x (ua)','FontName','Arial','FontSize',10) % etiqueta eje x, y la fuente y tamaño
ylabel('eje y (ua)','FontName','Arial','FontSize',10) % etiqueta eje x, y la fuente y tamaño
set(gca,'FontName','Verdana','FontSize',8)%da las propiedades al objeto gca, get current axes%de manera que elijo el tamaño y fuente de los ejes
grid %crea una red en la figura para ayudar a encontrar los puntos
axis square %crea una figura donde la parte hor y vert son iguales
% para cerrar todas las gráficas empleamos close all, deberiamos escribirla% al ppio%variamos las propiedades del gráfico
POS=[30 100 500 300];%posición donde va a salir
fig2=figure; set(fig2,'position',POS);%sale en la posicion pos
set(fig2,'Resize','off');
set(fig2,'MenuBar','none'); %elimina los botones auxiliares
set(fig2,'MenuBar','default'); %devuelve las propiedades anteriores
Ejercicio ángulo de refracción
%Autor:
%Fecha 4/11/08
%Averigua ángulos de refracción entre dos medios separados por una interfase
%Ángulos de incidencia de 0, 20, con pasos de 0.5 grados.
clc;clear all;
angI=(0:0.5:20)*pi/180; %ángulos en radianes
%los índices de refracción son n1=1, n2=1.336%aplicamos Snell, n1*Sen angI= n2*Sen angr
%buscamos angr,
Arcoseno angr = n1 * Sen AngI / n2n1=1;n2=1.336;angr= asin((n1*sin(angI))/n2);
plot(angI,angr)
%Fecha 4/11/08
%Averigua ángulos de refracción entre dos medios separados por una interfase
%Ángulos de incidencia de 0, 20, con pasos de 0.5 grados.
clc;clear all;
angI=(0:0.5:20)*pi/180; %ángulos en radianes
%los índices de refracción son n1=1, n2=1.336%aplicamos Snell, n1*Sen angI= n2*Sen angr
%buscamos angr,
Arcoseno angr = n1 * Sen AngI / n2n1=1;n2=1.336;angr= asin((n1*sin(angI))/n2);
plot(angI,angr)
Centro de masas
%Ejercicio centro de masas.
%fecha, autor
clear all;clc;
var1=[1 4 7 3 6 2 1];var2=[-3 -2 -1 0 1 2 3];
cm=sum(var1.*var2)/length(var1);
%fecha, autor
clear all;clc;
var1=[1 4 7 3 6 2 1];var2=[-3 -2 -1 0 1 2 3];
cm=sum(var1.*var2)/length(var1);
Crea una función con variable equiespaciada y busca el máx y el mín.
%ejercicio2
%desarrollo de una variable equiespaciada en intervalo -4,7 con%512 ptos, hallar el valor max y min de la función fx en intervalo%anterior.funcion=3x^2 -3x +6.clear all;clcv=linspace(-4,7,512); %crea la variable con los 512 ptos%
--------
%evaluamos la función.resultado = 3*v.^2 -9*v+6;%vamos a calcular el max y el min.[MAX, indM]=max(resultado)[MIN, indM]=min(resultado)
%desarrollo de una variable equiespaciada en intervalo -4,7 con%512 ptos, hallar el valor max y min de la función fx en intervalo%anterior.funcion=3x^2 -3x +6.clear all;clcv=linspace(-4,7,512); %crea la variable con los 512 ptos%
--------
%evaluamos la función.resultado = 3*v.^2 -9*v+6;%vamos a calcular el max y el min.[MAX, indM]=max(resultado)[MIN, indM]=min(resultado)
Suscribirse a:
Entradas (Atom)