You are on page 1of 25

EJERCICIOS RESUELTOS INFORMTICA: 1.-TIPOS DE DATOS: MATRICES Y CADENAS. 1.

A=round(rand(5,5)*9) B=round(rand(5,3)*9) C=eye(5) A*B A.*C A(2,1)=A(2,1)*B(2,3) inv(A), det(A), transpose(A) A(7,7)=1

2.
A=[3 4 5; 2 -3 7; 1 -6 1]; B=[2;-1;3]; rank(A) rank([A B]) X=inv(A)*B

3.
A=[11:14;21:24;31:34] B=A(2:3,3:4) c1=A(1:3,1:3) c2=c1' c3=A(1:3,1:2) C=[c2 c3] d1=A(1:2,1:2) d2=[d1 zeros(2,2)] d3=[zeros(2,2) B] D=[d2;d3]

4.
X0=[0;0]; u=2;v=3; alfa=30*pi/180; B=[cos(alfa) -sin(alfa); sin(alfa) cos(alfa)]; C= [u;v]; X1=X0+B*C X2=X1+B*C

5.
A=[0:5:225] l=length(A) A(l-9:l)=0 A(1:5)=[]

6.
A='informatica'

B='matematicas' lA=length(A) lB=length(B) a=A(lA-4:lA) b=B(lB-4:lB) strcmp(a,b)

7.
Sujetos=char('Pepe','Ximo','Paco','Jose','Juan') Verbos=char('es','no es','quiere','no quiere','se imagina') Atributos=char('apto','alto','coche','coser') n=ceil(rand(1,3)*5) [Sujetos(n(1),:) Verbos(n(2),:) Atributos(n(3),:)]

8.
n=[1 10 100 500 1000 4000 8000] m=(1+1./n).^n exp(1)

9.
v1=[1:100]; v2=[1:1000]; v3=[1:10000]; v1r=1./v1.^2 sum(1./v1.^2) sum(1./v1.^2) sum(1./v1.^2) sum(1./v1.^2) pi^2/6

10.
t=linspace(1,10,200); A=50;B=50;a=1;b=2; x=A*sin(a*t) y=B*sin(b*t)

11. Resistencias 2.- SCRIPTS ENTRADA/SALIDA. 1.


clear all clc primer_termino = input ('introduzca primer termino ', 's'); segundo_termino = input ('introduzca segundo termino ','s'); tercer_termino = input ('introduzca tercer termino ','s'); disp ('El primer termino es: '); disp (primer_termino); pause(2); disp ('El segundo termino es: '); disp (segundo_termino); pause(2);

disp ('Y el tercer termino es: '); disp (tercer_termino);

2.
A=input('primer texto ','s'); B=input('segudo texto ','s'); C=input('tercer texto ','s'); [A B C]

3.
frase=input('introduzca palabra que contenga el\n','s'); frasenueva=strrep(frase,'el','*el*'); fprintf('la frase modificada es:\n %s',frasenueva)

4.
clear all clc a=[input('Introduce la x de a '),input('Introduce la y de a ')]; b=[input('Introduce la x de b '),input('Introduce la y de b ')]; angulo=acos(dot(a,b)/(norm(a)*norm(b))); fprintf('l ngulo que forman a y b es: %g\n',angulo);

5.
str = input('Nombre y apellidos: ','s'); nota1 = input('Nota Primer Parcial: '); nota2 = input ('Nota Segundo Parcial: '); media=(nota1+nota2)/2; match = strfind(str,' '); l=length(str); apellido=str(match:l); fprintf('La nota de %s es: %g\n',apellido, media)

6.
%Inicializar clear all; clc; DNIS = char(); MAILS = char(); %Cargar fprintf('Cargando..............'); load('listaDNIS'); fprintf('Hecho: %d entradas cargadas \n',size(DNIS,1)); %Preguntar dni = input('DNI : ','s'); mail = input('MAILS : ','s'); %Incorporar DNIS(size(DNIS,1)+1,1:length(dni))= dni; MAILS(size(MAILS,1)+1,1:length(mail))= mail;

%Cambia el tamao de la matriz de forma dinamica %Limpiar clear dni; clear mail; %Guardar fprintf('Guardando..............'); save('listaDNIS'); fprintf('Hecho\n');

3.- GRFICOS 1.
x=linspace(0,8*pi,20); subplot(2,1,1); plot(x,sin(x),'r'); hold on; plot(x,x.*cos(x),'g'); xlabel('x'); ylabel('f(x)'); title('funciones'); legend('sen(x)','x*cos(x)'); hold off x1=linspace(0,8*pi,1000) subplot(2,1,2); plot(x1,sin(x1),'r'); hold on plot(x1,x1.*cos(x1),'g'); legend('sen(x),x*cos(x)'); xlabel('eje x'); ylabel('eje y');

2.
x=[1:12]; Y=ceil(rand(1,12)*35)+5; bar(x,Y);

3.
x=linspace(-2,2,10000); y=cos(2.*x); z=sin(2.*x); plot3(x,y,z);

4.
x=linspace(0,4*pi,200); subplot(2,3,1); y=sin(x); plot(x,y,'r'); subplot(2,3,2); y2=cos(x); plot(x,y2,'g');

subplot(2,3,3); y3=sin(x).*cos(x); plot(x,y3,'b'); subplot(2,3,4); plot(x, sin(x)+wgn(1,200,0.15)); subplot(2,3,5); plot(x, cos(x)+wgn(1,200,0.15)); subplot(2,3,6); plot(x, sin(x).*cos(x)+wgn(1,200,0.15));

5.
v0=input('introduce la velocidad inicial: '); y0=input('introduce la altura inicial: '); fi=input('introduce el ngulo de lanzamiento: '); g=9.8; v0x=v0.*cos(fi*pi/180); v0y=v0.*sin(fi*pi/180); thmax=v0y/g; hmax=(v0y^2)/(2*g); ttot=2*thmax; dmax=v0x*ttot; t=linspace(0,ttot); x=v0x.*t; y=v0y.*t-0.5*g*(t.^2); xlabel('distancia'); ylabel('altura'); title('tiro parbolico'); plot(x,y);

6.
t=linspace(0,2*pi);d=pi/2;A=1; subplot(2,3,1) plot(A*sin(t+d),A*sin(2*t),'r'); xlabel('1');ylabel('2');title('Lissajous 1'); subplot(2,3,2) plot(A*sin(3*t+d),A*sin(2*t)) subplot(2,3,3) plot(A*sin(3*t+d),A*sin(4*t)) subplot(2,3,4) plot(A*sin(5*t+d),A*sin(4*t)) subplot(2,3,5) plot(A*sin(5*t+d),A*sin(6*t)) subplot(2,3,6) plot(A*sin(9*t+d),A*sin(8*t))

4.-FUNCIONES: 1.
function [alpha,beta,gamma]=three_angles(a,b,c) fprintf('Programm to get the angles of a triangle by knowing the size os the sides.\n'); fprintf('For the triangle to exist: c + b > a, or c + a > b, or a + b > c \n'); disp(' ')

%First example fprintf('Example for a=1564.97 m, b=700 m, c=1200 m'); a=1564.97; b=700; c=1200; alphadeg=(acos((c^2-a^2-b^2)/(-2*a*b)))*(180/pi); betadeg=acos((b^2-a^2-c^2)/(-2.*a.*c))*(180/pi); gammadeg=acos((a^2-b^2-c^2)/(-2.*b.*c))*(180/pi); disp(' ') fprintf('Angles: alpha=%g , beta=%g , gamma=%g \n',alphadeg,betadeg,gammadeg) disp(' ') %Second example fprintf('Example for a=4 m, b=5 m, c=8.1 m'); clear a; clear b; clear c; a=4; b=5; c=8.1; disp(' ') fprintf('Angles: alpha=%g , beta=%g , gamma=%g \n',alphadeg,betadeg,gammadeg) disp(' ') %For any value: a=input('Introduce side a= ');b=input('Introduce side b= ');c=input ('Introduce side c= '); fprintf('Angles: alpha=%g , beta=%g , gamma=%g \n',alphadeg,betadeg,gammadeg) end

2.
function[n_argumentos] = argumentos(X,varargin) n_argumentos = nargin;

3.
function[dist]=distpuntorecta(A,B,C,x0,y0); %Calcula la distancia de una recta (cuya formula general es Ax+By+C=0) y un %punto (x0,y0) dist=abs(A*x0+B*y0+C)/sqrt(A^2+B^2);

4.
function[dist]=distpuntorectapar(x0,x1,x2,y0,y1,y2) %distancia de un punto a una recta expresada en forma paramtrica siendo %(x1,x2),(y1,y2) dos puntos que definen dicha recta. A=(x1-x2)/(y1-y2); B=-1; C=x1-A*y2; dist=distpuntorecta(A,B,C,x0,y0);

5.funcin: parabolico; main: parabolica

function velInic= angInic= numPtos= altInic=

main_parablico input('Velocidad inicial\n'); input('Angulo iniicial\n'); input('Numero de puntos\n'); input('Altura inicial\n');

A = parabolica(velInic, angInic, numPtos,altInic); plot(A(1,:),A(2,:));

title('Tiro parablico'); end function ret = parabolica(velInic, angInic, numPtos,altInic) tvals = linspace(0,(-velInic *sin(angInic)- sqrt (((velInic *sin(angInic)) ^2+4*4.9*altInic)))/-(2*4.9),numPtos); % La ecuacin resuleta para y = 0 dists = velInic * cos(angInic) .* tvals; alts = altInic - (4.9 * tvals.^2 )+ velInic *tvals.* sin(angInic); ret = [dists;alts]; end

6.
function main_angulo () a = cross([0,0,1],[0,1,0]); b = cross([1,0,1], [2,1,0]); angulo = angulo(a,b); fprintf('El angulo es: %g \n',angulo); end function angulo = angulo(a,b) angulo = acos(dot(a,b)/(modulo(a)*modulo(b))); end function vectmodule = modulo(vector) vectmodule = 0; for i = 1:3 vectmodule = vectmodule + vector(i)^2; end vectmodule = sqrt(vectmodule); end

7. y 8.
function [V]= accumulate(v) A=zeros(1,10); A(1:length(v))=[]; b=[A v]; persistent accum; if isempty(accum) accum=zeros(1,10); end accum=accum+b; V=accum;

end function [V]=decrement(v) A=zeros(1,10); A(1:length(v))=[]; B=[A v]; global accum; if isempty(accum) accum=zeros(1,10); end accum=accum-B; V=accum; end

9. 10.

5.- CONTROL DE FLUJO: CONDICIONES Y BIFURCACIONES.

1.peso=input('Tu peso es (kg): '); altura=input('Tu altua es ()m): '); IMC=peso/altura^2; if altura <=0 || peso<=0 fprintf('valores introducidos no vlidos\n') else end if IMC<25 fprintf('Normal\n') elseif (IMC==25)&&(IMC<=30) fprintf('Sobrepeso\n') else fprintf('Obeso!!\n') end

2.function espar(x) a=mod(x,2); if a==0 1 elseif a==1 0 else -1 end

3.x=floor(rand(1,1)*100000); y=floor(rand(1,1)*100); fprintf('el nmero ganador ha sido %g de la serie %g\n', x, y); num=input('introduzca su nmero: '); ser=input('introduza su serie: '); if num==x && ser==y fprintf('Ha ganado el primer premio\n') elseif (num>=(x-5) && num<=(x+5)) && (ser>=(y-1)) fprintf('Ha ganado el segundo premio\n') elseif rem(num,10)==rem(x,10) && ser==y fprintf('Ha ganado el tercer premio\n') else fprintf('el numero introducido no ha sido premiado\n') end

4.function [position]=zone(x,y) if abs(x)>15||abs(y)>10 %fprintf('The point is in the zone E\n'); position='E'; %else %fprintf('The point is in zone A,B,C,D\n'); %position='In the square'; elseif x>0&&y>0 position='A'; elseif x<0&&y>0 position='B'; elseif x<0&&y<0 position='C'; elseif x>0&&y<0 position='D'; else position='F'; end end

5.mes=input('en qu mes nos encontramos? ','s'); switch lower(mes); case{'diciembre', 'enero', 'febrero'} estacion='invierno'; case{'marzo', 'abril', 'mayo'} estacion='primavera'; case{'junio', 'julio', 'agosto'} estacion='verano'; case{'septiembre', 'octubre', 'noviembre'} estacion='otoo'; end fprintf('Estamos en %s\n', estacion)

mes=input('Qu mes es? ','s');

switch mes case {'diciembre','enero','febrero'} fprintf('Invierno\n') case {'marzo','abril','mayo'} fprintf('Primavera\n') case {'julio','agosto','noviembre'} fprintf('verano\n') otherwise fprintf('Ha escrito mal el mes\n') end

6.function[n]=divisible(a); b=[1 2 3 5 7]; for i=1:length(b); m=a./b; if m==0 fprintf('%g es divisible por %g',a,n(i)); else fprintf(' '); end end (Otra versin) div=zeros(1,9); n=input('Number= ') for i=2:9 if mod(n,i)==0 div(1)=1; div(i)=i; else continue; end end div=sort(div); m=div(length(div)); fprintf('El mximo divisor es: %g\n',m)

7.x=input('Coordinate x: '); y=input('Coordinate y: '); fprintf('The point is in zone: %c \n',zone(x,y)); function [q]=quadrant(lon1,lat1,lon2,lat2) cour=course(lon1,lat1,lon2,lat2); if cour==0 q='North'; else if cour==90 q='East'; else if cour==180 q='South';

else if cour==270 q='West'; else if (cour>0)&&(cour<90) q='NE'; else if (cour>90)&&(cour<180) q='SE'; else if (cour>180)&&(cour<270) q='SW'; else q='NW'; end end end end end end end end function [c]=course(lon1,lat1,lon2,lat2) if (lon2>lon1)&&(lat2>lat1) c=(atan((lon2-lon1)/(lat2-lat1)))*(180/pi); else if (lon2>lon1)&&(lat2<lat1) c=90+(atan((lat1-lat2)/(lon2-lon1)))*(180/pi); else if (lon1>lon2)&&(lat2<lat1) c=180+(atan((lon1-lon2)/(lat1-lat2)))*(180/pi); else if (lon1>lon2)&&(lat2>lat1) c=270+(atan((lat2-lat1)/(lon1-lon2)))*(180/pi); else if (lon1==lon2)&&(lat1>lat2) c=180; else if (lon1==lon2)&&(lat2>lat1) c=0; else if (lon1>lon2)&&(lat1==lat2) c=270; else c=90; end end end end end end end end

8.-

6.-BUCLES: ELEMENTALES 1.
numeros=[]; S=0; while S<100 ok=false; while ~ok A=input('Type a number: '); if mod(A,1)==0 ok=true; else fprintf('Only integers are valid\n') end end numeros=[numeros,A]; S=S+A; fprintf('The sum is %g\n',S); disp(' ') end fprintf('The typed numbers are:') l=length(numeros); for i=1:l fprintf('%g,',numeros(i)) end % % % % % % % % % % % % % % % % Otra opcin. clc;clear all; sum=0; v=[]; while sum<=100 n=input('type a number to add up: '); sum=sum+n; v=[v n]; fprintf('the sum is %g\n',sum) end fprintf('The typed numbers are: '); for i=1:length(v) fprintf('%g ',v(i)); end fprintf('\n')

2.
n=input('Nmero del que quieres la tabla: '); for i=1:10 sol=n*i; fprintf('%g x %g = %g\n',n,i,sol) end

3.

c=input('Write: ','s'); n=0; e=0; l=0; for i=1:length(c) switch c(i) case {'0','1','2','3','4','5','6','7','8','9'} n=n+1; case {' '} e=e+1; otherwise l=l+1; end end n e l

4.
SOLUCIN USANDO WHILE: function[posicion,valor]=buscarw(vector,n) valor=-1; posicion=-1; i=1; check=0; while (check==0 && i<=length(vector)) if vector(i)<=n check=0; else check=1; valor=vector(i); posicion=i; end i=i+1; end SOLUCIN CON FOR: function[posicion,valor]=buscar(vector,n) valor=-1; posicion=-1; for i=1:length(vector) if (vector(i)>n) valor=vector(i); posicion=i; break end end MAIN: vector=sort(ceil(100*rand(1,20))); num=input('Introduzca un nmero: '); [posicion,valor]=buscar(vector,num); fprintf('La posicin es: %g\n',posicion);

fprintf('El valor es: %g\n',valor); OTRA FORMA. v=ceil(99*rand(1,20)+1); v=sort(v); fprintf('La cadena es: ') fprintf('%7.f ',v) fprintf('\n') n=input('n= '); l=length(v); posicion=[]; for i=1:l if v(i)>=n posicion(i)=i; end end for i=1:length(posicion) if posicion(i)==0 continue; else indice=i; break; end end indice valor=v(indice); valor

5. Resistencias

ANIDADOS 1.
for i=1:3 for j=1:3 M(i,j)=i*10; end end

for i=1:3 for j=1:3 M(i,j)=j+10*i end end for i=1:3 for j=1:3 M(i,j)=j+10*i; fprintf('M(%g,%g)=%g \n',i,j,M(i,j)) end

end for i=10:10:30 fprintf('%g %g %g\n',i,i,i) end for i=11:10:31 for j=i:1:(i+2) fprintf('%g ',j) end fprintf('\n') end for i=11:10:31 for j=i:1:(i+2) fprintf('M(i,j)=%g\n',j) end end

2.
(versin casi bien) filas=input('Filas: '); columnas=input('Columna: '); for i=1:filas for j=1:columnas if (i==1)||(i==filas) fprintf('*') elseif (j==1) fprintf('*') elseif (j==columnas) fprintf('*\n') else fprintf(' ') end end end

altura=input('Dime el nmero de asteriscos en vertical: '); anchura=input('Dime el nmero de asteriscos en horizontal: '); for i=1:anchura fprintf('*'); end fprintf('\n'); for j=2:altura-1 fprintf('*'); for k=2:anchura-1 fprintf(' '); end fprintf('*'); fprintf('\n'); end for i=1:anchura fprintf('*'); end

fprintf('\n');

3.
function [v]=suma_filas(M) v=size(M); f=v(1); c=v(2); for i=1:f sum=0; for j=1:c sum=sum+M(i,j); end v(i)=sum; end end f=input('Nmero de filas: '); c=input('Nmero de columnas: '); M=ceil(10*rand(f,c)) v=suma_filas(M)

4.
function [T]=transp(A) v=size(A); f=v(1);c=v(2); for i=1:f for j=1:c T(i,j)=A(j,i); end end end

5.
function[C]=prodvec(A,B) x=size(A); y=size(B); if x(2)==y(1) for i=1:x(1) for j=1:y(2) C(i,j)=0; for k=1:y(1) C(i,j)=C(i,j)+A(i,k)*B(k,j); end end end else fprintf('No es posible realizar la multiplicacin'); end

B=round(rand(5,6)*10); [m1,n1]=size(A); [m2,n2]=size(B);

if n1~=m2 fprintf('no se puede hacer la multiplicacin'); break; end [m,n]=size(C); for i=1:m for j=1:n A(i,j)=0; for k=1:n1 C(i,j)=C(i,j)+B(i,k)*A(k,j); end fprintf('(%g,%g)=%g',i,j,C(i,j)); % pause(1); end fprintf('\n'); end

7.- ALGORITMOS: MTODOS NUMRICOS ELEMENTALES: 1.


function[s]=suma_serie(n) c=[]; s=0; for i=1:n c(i)=(1/i^2); c=[c c(i)]; end for j=1:length(c) s=s+c(j); end %Ms simple function suma_serie(n) a=0; for i=1:n a=a+1/i^2; end a end

2.
m=100 a=0 b=4*pi x=linspace(a,b,m); y= sin(x) d=zeros(1,m) n=(4*pi/m) for i=1:m-1 d(i)=(y(i+1)-y(i))/n end plot(x,y,x,d)

3.
m=100; a=0; b=4*pi; x=linspace(a,b,m); y= sin(x); I=zeros(1,m) dx=(b-a)/m; for i=1:m-1 I(i+1)=I(i)+dx*y(i) end plot(x,y,x,I)

4. main:
n=input('Numero de puntos: \n'); x=linspace(0,4*pi,n); y=sin(x)+0.2*rand(1,n)-0.1; z=integral(x,y,-1); plot(x,z,'g'); hold on; plot(x,-cos(x),'r'); hold on; plot(x,sin(x),'b'); hold off

funcin:
function[z]=integral(x,y,z0); z(1)=z0; n=length(x); for i=2:length(x)-1 z(i)=z(i-1)+y(i)*(x(i+1)-x(i)); end z(n)=z(n-1);

5.MTODO DE LA BISECCIN.???????????????

ALGORITMOS avanzados: 1.function[primo]=primos2(n) numeros=zeros(1,n); i=1; while i<n i=i+1; j=1; while (i*j)<n j=j+1; if (i*j)<=n numeros(i*j)=i*j; else break end

end end primo=find(numeros==0) end

2.function vo=burbuja2(v) n=length(v); for liston=n:-1:2 ordenado=true; for i=1:liston-1 if v(i)>v(i+1) temp=v(i); v(i)=v(i+1); v(i+1)=temp; ordenado=false; end end if ordenado break end end vo=v;

3.function[resultado]=b2dec(n,b) ascii=[char(48:57),char(65:70)]; numero=[]; cociente=n; resultado=''; while cociente>0 resto=rem(cociente,b); cociente=floor(cociente/b); numero=[resto numero]; end numero for i=1:length(numero) A=ascii(numero(i)+1); resultado=[resultado A]; end

4.function[resultado]=dec2b(n,b) ascii=[char(48:57),char(65:70)]; numero=[]; cociente=n; resultado=''; while cociente>0 resto=rem(cociente,b); cociente=floor(cociente/b); numero=[resto numero]; end numero for i=1:length(numero) A=ascii(numero(i)+1); resultado=[resultado A]; end

resultado _______________________________ function printm(m,name,mode) [y1,y2]=size(m); if mode==1 for i=1:y1 for j=1:y2 fprintf('%s (%g,%g)=%g\n',name,i,j,m(i,j)); end end elseif mode==2 fprintf('%s=(',name); for i=1:y1 for j=1:y2 fprintf('%g ',m(i,j)); end fprintf('\n'); end fprintf(')\n'); else fprintf('Mode %g is not a valid mode\n',mode); end end

_________________________
Escribir una funcin ComaparaCadenas que retorne true si ambas cadenas son iguales hasta el carcter n-simo y false en caso contrario.
a=input('a: '); b=input('b: '); n=input('n: '); i=1; while (i<n) i=i+1; if a(i)~=b(i) x=0; else x=1; end end x

_________________________________ Escriba una funcin en MATLAB, denominada maxm , que calcule el mximo nmero de una matriz de enteros y retorne el valor del mximo y la posicin (i,j) del array en la que se encuentra dicho mximo.
function [max,posicion] = maxm(M) % Calcula el mximo de una matriz [f c] = size(M); max=0;

for i = 1:f for j=1:c if M(i,j) > max max=M(i,j); mi=i; mj=j; end end end posicion=[mi,mj] end

_________________________________
Escriba un script que pida un nmero (con la funcin input) y muestre por pantalla un cuadrado de asteriscos con el lado ledo. Ejemplo:
n=input('lado?: '); for j=1:n for i=1:n if i==n fprintf('*\n') else fprintf('*') end end end

________________________________
Para evitar este problema la NASA ha diseado un brazo robot con una cmara que revisa la base de la nave para comprobar el estado de las losetas. Las base de la nave forma aproximadamente una matriz de 40 por 1000 losetas. El resultado de la inspeccin del robot es una matriz de 40 por 1000 elementos con los siguientes valores: 0: la loseta est correcta, 1: la loseta est daada y 2: la loseta no existe (se ha desprendido). Los ingenieros de la NASA han evaluado que la nave NO puede soportar la reentrada en la atmsfera con 2 ms placas desprendidas con 5 ms placas daadas. En el caso de que el dao sea elevado los astronautas tendran que sustituir las placas en el espacio. En el ejemplo anterior la nave soportara la reentrada. Escriba una funcin r=ComprobarRecubrimiento(M) que a partir de la matriz obtenida por el brazo robot (M) devuelva un 1 (true) si hay peligro o 0(false) si est correcta.

_______________________________
M=[1 1 1 0;0 1 0 0;0 0 1 0]; [f,c]=size(M); mal=0; des=0; bien=0; for i=1:f for j=1:c if M(i,j)==0 bien=bien+1; elseif M(i,j)==1 mal=mal+1;

else des=des+1; end end end if (des>=2) ||(mal>=5) fprintf('NO\n') else fprintf('A VOLAR\n') end

_____________________
Se denomina cuadrado mgico aquella matriz cuadrada de nmeros (o letras) que satisface la condicin de que la suma de todas las filas, columnas y las dos diagonales principales es siempre el mismo nmero denominado constante mgica. Lo que hay que hacer es una funcin n=Magico(M) a la cual le pasamos una matriz y nos devuelve un 0 si no es un cuadrado mgico y la constante mgica en el caso de que sea un cuadrado mgico. >> DURERO = [16 3 2 13; 5 10 11 8; 9 6 7 12;4 15 14 1]; >> Magico(DURERO) Ans = 34
M=[16 3 2 13; 5 10 11 8; 9 6 7 12;4 15 14 1]; [f,c]=size(M); sum=0; for i=1:f sum=0; for j=1:c sum=sum+M(i,j); end v(i)=[sum]; end for j=1:c sumc=0; for i=1:f sumc=sumc+M(i,j); end v2(j)=[sumc]; end if v==v2 fprintf('MGICA con constante %g\n',v(1)) else fprintf('No es mgica\n') end ___________________________

Realice un programa en MATLAB que imprima por pantalla una tabla con los nmeros del 1 al 10 y la suma acumulada de los valores. Es decir, debe sacar por pantalla lo siguiente:
sum=0; for i=1:10 sum=sum+i; fprintf('%g %g\n',i,sum)

end

______________________
Realizar una funcin B=Trans(A) que devuelva la transpuesta de una matriz. No utilizar el operador de transposicin de Matlab.
function B=Trans(A) [x,y] = size(A) for i = 1:x for j = 1:y B(j,i) = B(i,j); end end

_______________________
Realice una funcin en MATLAB denominada Pendiente que tome como argumento de entrada un array con las ordenadas de una curva en funcin del tiempo y devuelva otro array en el que la posicin n del array ser +1 si la pendiente de la curva entre los valores n y n+1 de la curva es positiva, -1 si es negativa y 0 si la pendiente es nula. La funcin deber representar grficamente el resultado de la funcin Pendiente . Comente brevemente cmo podra obtener de forma numrica aproximada la Derivada de la curva.
y=[1 3 5 2 7 2 3 4 5]; l=length(y); for n=1:length(y)-1 if y(n)==y(n+1) v(n)=0; elseif y(n)<y(n+1) v(n)=1; else v(n)=-1; end end v plot(1:length(y),y)

__________________________________
i=3; for j=2*i:i:20 fprintf('n= %g\n',j); end I.a Saca por pantalla los nmeros 6,9,12,15 y 18 i=3; j = 2*i; while j <= 20 fprintf('n= %g\n',j);

j = j + i; end _____________________________________

Realice un script en MATLAB que solicite dos nmeros por teclado a y b e imprima por pantalla la secuencia a-0*b, a-1*b, a-2*b, a-3*b, ..., nalizando cuando el nmero a imprimir sea negativo.
Ejemplo: a= 20, b=3 Secuencia visualizada: 20 17 14 11 8 5 2
a=input('a: '); b=input('b: '); i=1; v(1)=a; while v(i)>=0 v(i+1)=a-i*b; i=i+1; end if v(length(v))<0 v(length(v))=[]; end v _______________________________

Realice una funcin mult() en MATLAB que tome como argumento de entrada un nmero entero y visualice si es mltiplo de 2, de 3 o de ambos.
Ejemplo: mult(2), mult(9), mult(6), mult(5) V isualizacin: > 2 es mltiplo de 2 > 9 es mltiplo de 3 > 6 es mltiplo de 2 y de 3 > 5 no es mltiplo de 2 ni de 3
function mul(x) if (mod(x,2)==0)&&(mod(x,3)==0) fprintf('%g es mltiplo de 2 y 3\n',x) elseif mod(x,2)==0 fprintf('%g es mltiplo de 2\n',x) elseif mod(x,3)==0 fprintf('%g es mltiplo de 3\n',x) else fprintf('%g no es mltiplo 2 y 3\n',x) end

____________________________

Realice una funcin match() en MATLAB que tome como argumento de entrada un array de enteros X y otro array de enteros Y. La funcin retornar un booleano que tomar el valor verdadero si alguno de los nmeros contenidos en X se encuentra en Y y falso en otro caso.
X=input('X: '); Y=input('Y: '); lX=length(X);

lY=length(Y); i=1; y=0; while (y==0) && (i<=lX) for j=1:lY if X(i)==Y(j) y=1; break; end end i=i+1; end if y==1 fprintf('Verdadero\n') else fprintf('Falso\n') end

You might also like