You are on page 1of 6

1.

Realizar un programa en Matlab que calcule el centro de masas de un sistema de partculas en 3D Inters: Sumatorios y medias
SOLUCION:
% Script para calcular y representar el centro de masas de un % sistema de partculas n = input('Nmero de partculas: '); mt = 0; mx = 0; my = 0; mz = 0; for i=1:n fprintf(1,'Partcula %d\n',i); x (i)= input ('Coordenada x: '); y (i)= input ('Coordenada y: '); z (i)= input ('Coordenada z: '); m (i)= input ('Masa: '); mt = mt + m(i); mx = mx + x(i)*m(i); my = my + y(i)*m(i); mz = mz + z(i)*m(i); end xcm = mx / mt; ycm = my / mt; zcm = mz / mt; % Dibuja la posicin de las partculas y su centro de masas figure(1) clf hold on for i = 1:n plot3 (x(i),y(i),z(i),'bo'); text (x(i)+.1,y(i)+.1,z(i)+.1,num2str(m(i))); end plot3 (xcm,ycm,zcm,'rx'); text (xcm+.1,ycm+.1,zcm+.1,num2str(mt)); grid on hold off

2. Realizar un programa en Matlab que calcule la solucin de una ecuacin de forma iterativa utilizando el mtodo de Newton-Raphson Inters: Uso de funciones y clculos iterativos SOLUCION:
% Script para aplicar Newton-Raphson a mifuncion % Lectura de datos % Tengo que leer la cota de error 'cota', el nmero de iteraciones mximo 'n'

% y el valor inicial 'xi' cota = input ('Cota de error objetivo: '); n = input ('N mximo de iteraciones: '); xi = input ('Valor inicial de la x: '); xanterior = xi; x = xanterior; eanterior = inf; e = eanterior; i = 1; % contador de iteraciones % Voy a dibujar las tangentes mientras calculo figure(1) clf hold on fplot('mifuncion(x)',[-2 2],'b'); grid % Debo realizar un procedimiento iterativo mientras el error sea mayor que la cota % y el nmero de iteracin sea menor que n while (e>cota) & (i<n) y = mifuncion (xanterior); yd = mifuncion_derivada (xanterior); x = xanterior - y/yd; % Para dibujar yant=mifuncion(xanterior); plot ([xanterior x],[yant 0],'r') e = abs (x - xanterior); xanterior = x; eanterior = e; i=i+1; end hold off % Comprobacin de por cual de las dos (tres) condiciones sali if (e<cota) disp ('Se encontr la solucin'); disp ('La solucin hallada es: '); x disp ('La cota de error es: '); e disp ('El nmero de iteraciones utilizado es: '); i disp ('Y el valor de la funcin en dicho punto es: '); mifuncion(x) else disp ('Se super el nmero de iteraciones'); end **function y = mifuncion (x) y = x*x+0.5-exp(-x); ***function y = mifuncion_derivada (x) y = 2*x+exp(-x);

3. Realizar un programa en Matlab que calcule el producto escalar y vectorial de dos vectores en 3D Inters: Manipulacin y operacin con vectores SOLUCION:

% Producto escalar y vectorial de vectores clear u=input('Introduce un vector u de dimensin 3: '); v=input('Introduce el otro vector v: '); disp('La longitud de los vectores es, respectivamente: '); norm(u) norm(v) disp('El producto escalar es: '); u'*v disp('El ngulo entre los vectores en grados es: '); 180/pi*subspace(u,v) disp ('El producto vectorial es: '); p=pvect(u,v) clf % Ahora dibujamos el producto vectorial hold on plot3 ([0 u(1)],[0 u(2)],[0 u(3)],'b'); text (u(1)+.1,u(2)+.1,u(3)+.1,'u'); plot3 ([0 v(1)],[0 v(2)],[0 v(3)],'b'); text (v(1)+.1,v(2)+.1,v(3)+.1,'v'); plot3 ([0 p(1)],[0 p(2)],[0 p(3)],'k'); text (p(1)+.1,p(2)+.1,p(3)+.1,'p'); hold off grid view(3) **% Producto vectorial para vectores de 3D function producto = pvect (u,v) if length(u)~=3 | length(v)~=3 disp('Error en las dimensiones de los vectores'); return else producto(1,1)=u(2)*v(3)-u(3)*v(2); producto(2,1)=u(3)*v(1)-u(1)*v(3); producto(3,1)=u(1)*v(2)-u(2)*v(1); end

4. Realizar un programa en Matlab que resuelva un sistema de ecuaciones lineales para el caso de 3 ecuaciones con 3 incgnitas. Utilizar por una parte las facilidades de matlab (operador \) as como la programacin directa del mtodo de Cramer Inters: Bucles anidados y manipulacin de matrices SOLUCION:
% Script para calcular la solucin de un sistema de ecuaciones % En primer lugar, utilizando las facilidades de Matlab A = input ('Matriz de coeficientes: '); b = input ('Vector de trminos independientes: '); disp ('Solucin') x = A\b % Ahora utilizando la regla de Cramer para matriz de 3 x 3 if det(A)==0 disp ('No es posible obtener la solucin'); else for i=1:3 for j=1:3 for k=1:3 if j==i d(k,j)=b(k,1); else d(k,j)=A(k,j); end end end detd=det(d); xc(i,1)=detd/det(A) end end

5. Realizar un programa que lea 10 nmeros y determine cules y cuntos de ellos son mltiplos de 7. El programa, primero pedir los 10 nmeros, y a continuacin mostrar slo aquellos que son mltiplos de 7 as como cuntos son.
SOLUCION:
% Hacer un programa que lea 10 numeros y determine cuales y cuantos de ellos % son multiplos de 7 for i=1:10 a(i) = input (['Numero ' num2str(i) ' :']); end disp('Multiplos de 7: ');

m=0; for i=1:10 if rem(a(i),7)==0 disp(a(i)) m=m+1; end end if m==0 disp('No hay.'); else disp(['Son en total ' num2str(m)]); end

6. Realizar una funcin recursiva para encontrar el mximo comn divisor (mcd) de dos enteros utilizando la siguiente definicin: mcd(x,y) =

mcd(y,x) si x<y x si y=0 mcd(y,x mod y) en caso contrario SOLUCION:

% % % % % %

Maximo Comun Divisor utilizando funcion recursiva z = mcd (x,y) x,y : numeros enteros z : Maximo Comun Divisor de x e y

function z = mcd (x,y) if (x<y) z = mcd (y,x); elseif y==0 z = x; else z = mcd (y, rem (x,y) ); end

% Evaluacion de un polinomio en puntos dados por el usuario n = input ('Grado del polinomio: '); for j=n:-1:0 fprintf(1,'Coeficiente de x^%d : ',j); coef(n-j+1)=input (''); end while 1 x = input ('Punto a evaluar: '); if x == -999 break; end fprintf(1,'p(%f) = %f\n',x,polyval(coef,x)); end

You might also like