0% encontró este documento útil (0 votos)
51 vistas24 páginas

Ejercicios Matlab

El documento proporciona cuatro algoritmos para resolver problemas matemáticos utilizando Matlab. El primer algoritmo calcula el índice de masa corporal a partir del peso y la altura. El segundo resuelve ecuaciones de segundo grado. El tercero calcula una nota final a partir de las notas de tres pruebas. El cuarto calcula la velocidad media a partir del tiempo, distancia recorrida y número de vueltas dado.

Cargado por

Jacobo VerduC
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
51 vistas24 páginas

Ejercicios Matlab

El documento proporciona cuatro algoritmos para resolver problemas matemáticos utilizando Matlab. El primer algoritmo calcula el índice de masa corporal a partir del peso y la altura. El segundo resuelve ecuaciones de segundo grado. El tercero calcula una nota final a partir de las notas de tres pruebas. El cuarto calcula la velocidad media a partir del tiempo, distancia recorrida y número de vueltas dado.

Cargado por

Jacobo VerduC
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 24

Ejercicios-Matlab.

pdf

sobreviveUMA

Informática

1º Grado en Ingeniería Química

Facultad de Ciencias
Universidad de Málaga

Reservados todos los derechos.


No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Informática. Ingeniería química Irene Palomo Cantero

Relación de problemas 2.1 Estructuras de control: Secuencia.

1) Herculano acaba de montar su primer gimnasio. Está un poco preocupado porque todo el
mundo le pide que le calcule el IMC (Índice de Masa Corporal). Ayúdale explicándole el
algoritmo para su cálculo a partir de la altura en cm y el peso en kg de una persona. Si tú
tampoco sabes cómo se calcula documéntate antes.
p=input('Ingrese su peso en kg: ');
cm=input('Ingrese su altuta en cm: ');
a=cm/100;
r=p/(a.^2);
disp('Su Indice de Masa Corporal es: ')
disp(r)

2) Herculano está hoy de nuevo preocupado. Ahora es su hijo el que le ha pedido que le
explique cómo resolver una ecuación de segundo grado. Échale una mano y escríbele el
algoritmo para que se lo pueda él contar a su hijo.
a=input('Inserte el coeficiente que acompaña a x^2: ');
b=input('Inserte el coeficiente que acompaña a x: ');
c=input('Inserte el coeficiente independiente: ');
raiz=(b^2)-(4*a*c);
x1=(-b+sqrt(raiz))/(2*a);
x2=(-b-sqrt(raiz))/(2*a);
disp('Las dos soluciones posibles son: ')
disp(x1)
disp(x2)

3) Como no le va muy bien con el gimnasio se quiere presentar a unas oposiciones para
bombero. Se ha enterado de que hay tres pruebas y que la nota final será igual a un 20% de la
prueba teórica, un 30% de la prueba práctica y el resto de la nota corresponderá a las pruebas
físicas. Explícale cómo puede saber su nota final sabiendo la nota de cada parte.
t=input('Inserte su nota del exámen de teoría: ');
p=input('Inserte su nota del exámen práctico: ');
f=input('Inserte su nota de las pruebas físicas: ');
N=0.2*t+0.3*p+0.5*f;
disp('Su nota final es: ');
disp(N)

4) En la prueba física le piden recorrer una distancia a una velocidad mínima en km/h. El
problema es que su cronómetro solo le da tiempo en minutos y segundos. La distancia que
recorre se puede calcular fácilmente contando el número de vueltas que da a una pista de
atletismo (cada vuelta completa son 400m). Descríbele el algoritmo que debe usar para
calcular la velocidad media en km/h que ha logrado al dar un número de vueltas (puede ser
fraccionario) a la pista si además conoce el tiempo que ha marcado su cronómetro.
m=input('Inserte los minutos transcurridos: ');
s=input('Inserte los segundos trascurridos: ');
d=input('Inserte el número de vueltas dadas: ');
h=(m/60)+(s/3600);
km=(d*400)/1000;
v=km/h;
disp('Veloidad media lograda: ');
disp(v);

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Informática. Ingeniería química Irene Palomo Cantero

Relación de problemas 2.2 Estructuras de control: Condicional.

Básicos
1) Completar el problema del cálculo del IMC para que una vez se conozca su valor haga una
recomendación a las personas que estén en zona problemática. Es decir, “Engordar” si su

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
IMC<18.5 y “Adelgazar” si su IMC>25.

p=input('Ingrese su peso en kg: ');


cm=input('Ingrese su altuta en cm: ');
a=cm/100;
r=p/(a.^2);
if (r>25)
disp ('Debe bajar de peso');
else
if (r<18.5)
disp('Debe de subir de peso');
end
end

2) Mejorar el algoritmo para el cálculo de las raíces de un polinomio de segundo grado para
que diga el número de raíces reales que tiene y sus valores.

a=input('Inserte el coeficiente que acompaña a x^2: ');


b=input('Inserte el coeficiente que acompaña a x: ');
c=input('Inserte el coeficiente independiente: ');
raiz=(b^2)-(4*a*c);
if (raiz>0)
disp ('Existen dos raíces reales');
end
if (raiz<0)
disp ('No existe ninguna solución real');
end
if (raiz==0)
disp ('Existe una única solución real');
end

3) Dadas las longitudes de los tres lados de un triángulo, determinar si es “Equilátero” (3 lados
iguales), “Isósceles” (2 lados iguales) o “Escaleno” (los tres lados diferentes).

a=input('Inserte la longitud del lado 1: ');


b=input('Inserte la longitud del lado 2: ');
c=input('Inserte la longitud del lado 3: ');

if (a==b)&(b==c)
disp('Es un triángulo equilátero');
else
if ~(a==b)|(b==c)|(a==c)
disp ('Es un triángulo escaleno');
else
disp('Es un triángulo isósceles');

end
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

4) Escribir el algoritmo para calcular la calificación final de esta asignatura ("Suspenso",


"Aprobado", "Notable" ó "Sobresaliente"), sabiendo la nota (sobre 10) de la parte de teoría y la
nota de la parte de prácticas (simplificar y suponer un 50% de peso para cada parte). Tener en
cuenta que para hacer media se debe sacar una nota superior a 4 en ambas partes; en caso
contrario se estaría "Suspenso", independientemente de la media.
t=input('Inserte su nota del examen de teoría: ');
p=input('Inserte su nota de las prácticas: ');

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
if (t>=4)&(p>=4)
n=0.5*t+0.5*p;
disp('Nota media: ');
disp(n)
if (n<5)
disp('Suspenso');
elseif (n>=5)&(n<7)
disp ('Aprobado')
elseif (n>=7)&(n<9)
disp('Notable')
elseif (n>=9)&(n<10)
disp ('Sobresaliente')
end
else
disp('Suspenso');
end

Intermedios
5) En un parking se cobra a 0.60 euros la hora o fracción de aparcamiento. Dado el tiempo (en
minutos) que ha estado un coche estacionado, calcular el importe total a pagar en euros.
min=input('Tiempo de estacionamiento en minutos :' );
h=min/60;
h=ceil(h);
disp('Debe pagar, en euros, la cantidad de: ');
p=0.60*h;
disp(p)

6) Determinar el mayor de cuatro números a, b, c y d.


a=input('Inserta el número a: ');
b=input('Inserta el número b: ');
c=input('Inserta el número c: ');
d=input('Inserta el número d: ');
% Para cuando los tres números son iguales.
if (a==b)&(b==c)&(c==d)
disp('Los cuatro números son iguales');
end
% Para cuando los tres números son diferentes
if(a>b)&(a>c)&(a>d)
disp('El número mayor es el a')
disp(a)
elseif (b>a)&(b>c)&(b>d)
disp('El número mayor es el b')
disp(b)
elseif (c>a)&(c>b)&(c>d)
disp('El número mayor es el c')
disp(c)
elseif (d>a)&(d>b)&(d>c)
disp('El número mayor es el d')
disp(d)
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

% Cuando hay dos números iguales


% Para cuando a=b, a=c, a=d
if (a==b)&(a>c)&(a>d)
disp('Los números mayores son a y b')
disp(a)
elseif (a==c)&(a>b)&(a>d)
disp('Los números mayores son a y c')
disp(a)

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
elseif (a==d)&(a>c)&(a>b)
disp('Los números mayores son a y d')
disp(a)
end
% Para b=c, b=d
if (b==c)&(b>a)&(b>d)
disp('Los números mayores son b y c')
disp(b)
elseif (b==d)&(b>a)&(b>c)
disp('Los números mayores son b y d')
disp(b)
end
% Para cuando c=d
if (c==d)&(c>a)&(c>b)
disp('Los números mayores son c y d')
disp(c)
end
% Cuando hay tres números iguales
if(a==b)&(a==c)&(a>d)
disp('Los números mayores son a, b y c')
disp(a)
elseif(a==b)&(a==d)&(a>c)
disp('Los números mayores son a, b y d')
disp(a)
elseif(a==d)&(a==c)&(a>b)
disp('Los números mayores son a, c y d')
disp(a)
elseif(b==d)&(b==c)&(b>a)
disp('Los números mayores son b, c y d')
disp(b)

end

7) Clasificar una jugada, resultante de lanzar 3 dados, en función del número de 6 que se hayan
sacado: "Buena" (uno), "Muy Buena" (dos) y "Excelente" (tres).
a=input('Resultado del dado 1: ');
b=input('Resultado del dado 2: ');
c=input('Resultado del dado 3: ');
% Números
x=0;
if (a<=6)&(b<=6)&(c<=6)
if (a==6)
x=x+1;
end
if (b==6)
x=x+1;
end
if (c==6)
x=x+1;
end
else
disp('Ha introducido un número no válido')
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

% Frases
if (x==1)
disp('Jugada Buena')
elseif (x==2)
disp ('Jugada Muy Buena')
elseif (x==3)
disp ('Jugada Excelente')
end

8) El salario semanal que recibe un empleado depende del número de horas que trabaja. Si
trabaja más de 40 horas semanales se le pagarán como horas extras. El precio de la hora extra
es el doble de la hora normal y el triple para las que superan las 48 horas semanales. Calcular
el sueldo semanal de un empleado sabiendo las horas que trabajó durante la semana y el
precio de la hora normal.
h=input('Horas semanales trabajadas: ');
p=input('Precio por hora normal: ');
% s= lo que cobra
if (h<=40)
s=h*p;
disp('Su sueldo es: ');
disp(s)
else
if (h>40)&(h<=48)
x=h-40;
% x= horas extras (p*2)
s=40*p+x*2*p;
disp('Su sueldo es: ');
disp(s)
elseif (h>48)
y=h-48;
% y= horas extras (p*3)
s=40*p+8*2*p+y*3*p;
disp('Su sueldo es: ');
disp(s)
end
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Informática. Ingeniería química Irene Palomo Cantero

Relación de problemas 2.3.2 Estructuras de control: Bucles while.

Basados en contador (conocemos las repeticiones al comenzar)

1) Hacer un algoritmo que busque el máximo de entre los elementos positivos de un vector.

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
% relación de while (1)
%v(i) es el valor de v en la posición i, que va variando a medida que
avanza el bucle.
v=input('Inserta un vector: ');
i=1;
while i<=length(v)
if v(i)>0
if v(i)>max
max=v(i);
end
end
i=i+1;
end
disp('El valor máximo del vector es: ')
disp(max)

2) Calcular por separado la media de los elementos que son pares e impares en un vector.
% relación de while (2)
v=input('Inserta un vector: ');
p=[]; %vector para números pares
i=[]; %vector para números impares
x=1;
while x<=length(v)
a=v(x);
if a/2==fix(a/2)
p=[p,a];%añado ese valor al vector de los pares
else
i=[i,a];%añado ese valor al vector de los impares
end
x=x+1; %le sumo 1 a la posición para que me siga recorriendo el
vector
end

y=mean(p);%media de los valores del vector de los pares


z=mean(i);%media de los valores del vector de los impares

disp('Media de los números pares')


disp(y)
disp('Media de los números impares')
disp(z)

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Basados en eventos (las repeticiones dependerán de los datos de entrada)

3) Dado un vector, decir si algún elemento a partir del segundo es divisible por el primer
elemento del vector, terminando de buscar en cuanto se encuentre el primero que lo cumple.

% relación de while (3)


%lo que me esta preguntando es que busque el primer número del vector

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
a partir del 2º término que se pueda dividir entre el 1er término del
vector y que el resultado de la división me de un número entero

v=input('Inserta un vector: ');


i=2; %para poder empezar el bucle desde el 2º elemento del vector.
a=v(1);%a es el primer elemento del vector.

while i<=length(v)
if v(i)/a==fix(v(i)/a)%si es número es entero
y=v(i);
disp('El número buscado es')
disp(y)
break %con esto salgo del bucle cuando se cumple el if
end
i=i+1;

%si pasa que no hay ningun número que cumpla el if:


if i==length(v)
disp('No hay ningún elemento con las características
requeridas')
end
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Prácticas de Guac. Entrega P1 – Expresiones y Gráficas

1 - Práctica de prueba. Se debe guardar en prueba.m el comando necesario para lo


siguiente. Estando previamente definida la variable N en el entorno matlab, generar en d el
vector de los números pares desde 2 a N.
d=[2:2:N]

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
2 - Escribir la expresión para convertir un vector x con los dígitos de un número binario xn,
xn-1,...,x2,x1,x0 a su valor en base 10 en la variable d.
Recordar que se calcula como Σi=0n xi 2i. La función sum(v) devuelve la suma de los
elementos del vector v.
Entregar el archivo bina2deci.m sin la definición de x.
a= x .* 2 .^ (length(x)-1:-1:0);
d=sum(a)

3 - Escribir el script plots.m para representar gráficamente sobre los mismos ejes las
funciones: y1 = 5 e-x seno(5πx); y2 = ± 5 e-x (usar 2 vectores, y2a e y2b, para la y2).
La y1 debe aparecer en color azul con trazo continuo e y2 en rojo a puntitos. Utilizar en
ambos casos 100 puntos para la representación en el intervalo [0,2] (usar linspace).
Poner como título exactamente "Onda amortiguada", "tiempo" en el eje x y "Amplitud" en
el eje y.
x=linspace (0,2,100);
y1=5*exp(-x).*sin(5*pi*x);
y2a=5*exp(-x);
y2b=-5*exp(-x);

plot(x,y1,'b')
hold on
plot(x,y2a,'r:')
hold on
plot(x,y2b,'r:')
title('Onda amortiguada')
xlabel('tiempo')
ylabel('Amplitud')

4 - Escribir los comandos necesarios para representar gráficamente en tres dimensiones la


superficie:
z = - ( x4 + y4 )
Usar para ello 40 x 40 puntos en el intervalo [-2,2] x [-2,2].
Entregar en el zip el archivo grafica.m
x=linspace(-2,2,40)
y=linspace(-2,2,40)
[X,Y]= meshgrid(x,y)
z =-(X.^4 + Y.^4)
surf(X,Y,z)

5 - Sabiendo que rand devuelve valores aleatorios reales en el intervalo [0,1] con
probabilidad uniforme, generar el vector v con 100.000 valores aleatorios enteros en el
intervalo [1,10]. Tener en cuenta que para que el ejercicio sea correcto deben generarse
aproximadamente el mismo número de valores de cada número.
Entregar el algoritmo necesario en el script alea1a10.m
v= 10*rand(100000,1);
v= floor(v)+1

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Gráficas que deben de aparecer:

En el ejercicio 3:

En el ejercicio 4:

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Informática. Ingeniería química Irene Palomo Cantero

Prácticas de Guac. Entrega P2 – Estadística

1 – Escribir la función [ro] = coefcorr(X,Y) que dados dos vectores X e Y del mismo
tamaño devuelva en ro su coeficiente de correlación calculado según la fórmula que aparece
en el ejercicio 11 de la relación Práctica 2. No se permite el uso de la función de Matlab

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
corrcoef (sí antes del envío para comprobar el resultado).
Entregar el archivo coefcorr.m
function [ro]=coefcorr(X,Y);
% función que calcula el coeficiente de correlación
% ro es el coeficiente de correlación
% X vector de entrada 1
% Y vector de entrada 2

% X-media de X
a=(X-mean(X));
%Y-media de Y
b=(Y-mean(Y));
%numerador
num=sum(a.*b);
%raíz
raiz=(sum(a.^2))*(sum(b.^2));
%denominador
den=sqrt(raiz);

ro=num/den
end

2 – Escribir la funcion [maxi, mini, medi, vari] = estadisticos(A), que dada una matriz A de
cualquier tamaño devuelva sus valores máximo, mínimo, media y varianza en las
respectivas variables de salida.
function [maxi, mini, medi, vari]=estadisticos(A)

%Si A es una matriz, si pongo A(:) en la ventana de comandos, la


matriz se transforma
%en un vector.
% máximo de A
maxi=max(A(:));

%mínimo de A
mini=min(A(:));

%media de A
medi=mean(A(:));

%varianza de A
vari=var(A(:),1);
end

3 – Escribir el script ajuste.m que calcula el polinomio P de grado 2 que mejor ajusta a la
función raíz cuadrada en el intervalo [0,2] con 100 puntos. Calcular el error cuadrático
medio de la aproximación en ecm y representar gráficamente ambas funciones superpuestas
(polinomio en azul continuo y raíz cuadrada en rojo discontínuo -puntitos-).
x=linspace(0,2,100)
y=sqrt(x)

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

%ajusto la ecuacion y a un polinomio de grado 2


P=polyfit(x,y,2)
Y=polyval(P,x)

%Error cuadrático medio


ecm=(sum((Y-y).^2))/100;
disp('Error cuadrático medio')
disp(ecm)

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
%gráfica
plot(x,Y,'b-')
hold on
plot (x,y,'r:')

4 – Hacer la función [vari] = mivarianza(f) que lea el archivo datos.txt (no hay que
mandarlo) y que devuelva la varianza de los datos de la fila f de la tabla que contiene.
Debe enviarse solo el archivo mivarianza.m
Nota: se puede usar la función Matlab dlmread (xlsread en sistemas Windows con Office
para leer archivos de Excel).
function [vari]= mivarianza(f)
%cuando lo ejecute pondré minivarianza(4) por ejemplo, para selecionar
la
%fila 4.

%dmlread es para leer datos de un doc .txt


M=dlmread('datos.txt');

x=M(f,:);
vari=var(x,1);
disp('varianza')
disp(vari)
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Prácticas de Guac. Entrega P3


Primera entrega P1 del libro
You must program the function [f]=fibo(n, a0, a1) that calculates the fibonacci sequence of n
terms with the initial values a0 and a1.
function [f]=fibo(n, a0, a1)

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
%n= numero de elementos
%a0 es el primer elemento de la serie
%a2 es el segundo elemento de la serie
f=[a0 a1];

for i=3:n % porque empieza en el tercer número y tiene n elementos


f(i)=f(i-1)+f(i-2)
end

Página 204, problema 6


function [f,cuenta]=fibo2(N, a0, a1)
[f]=[a0 a1];
cuenta=2; %porque teneos dos elementos
an=f(cuenta)+f(cuenta-1);
while an<=N % condución para que sea menor que N
cuenta=cuenta+1;
f(cuenta)=an;
an=f(cuenta)+f(cuenta-1);
end

Página 205, problema 7


function p=primo(k)
%función resto: rem(numerador, denominador)
i=2;
p=1;
if (k==1)
p=0;
else
while i<k
r=rem(k,i); %resto de las divisiones
i=i+1; %sumo hasta llegar a k
if (r==0);
p=0; %cuando no es primo
end

end

end

Página 205, problema 8. Incluir los ficheros:


primos100=[];

for x=1:100 %me hace los numeros primos del 1 al 100


if primo(x);
primos100=[primos100 x]
end
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Prácticas de Guac. Entrega P4


Página 205, problema 10
function F=permuta(N)
% 1*3*4*5...N
F=1;
for i=1:N
F=F*i;
end

end

Página 205, problema 12


function [M,ind]=dmaxi(v)
%v es un vector de elementos
%M es el valor del elemento máximo de v
%ind es la posicion del elemento en v
M=-inf; ind=1;

for i=1:length(v)
if M<v(i)
M=v(i);
ind=i;
end
end

Página 206, problema 17

matpos.m
function p=matpos(B)
[m,n] = size(B);
p=0;
for i=1:m
for j=1:n
if B(i,j)>=0
p=p+1;
end
end
end
end

matpos1.m
function p=matpos1(B)

[m,n] = size(B);
p=0;
for i=1:m
for j=1:n
if B(i,j)>=0
p=sum(sum(B>=0));
end
end
end
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Informática. Ingeniería química Irene Palomo Cantero

Página 206, problema 19


function g=grande(cad)
l=length(cad);

for i=1:l
if(cad(i)>='A') && (cad(i)<='Z')
cad(i)=cad(i)+32;

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
end
end

g=cad;
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Prácticas de Guac. Entrega P5


Página 207, problema 20
function v=alea(N,vmin,vmax)
v = unidrnd(vmax-vmin +1, N, 1) + vmin - 1
end

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Página 206, problema 16
n=4; m=5;
A=zeros(m,n);
for i = 1:m
for j = 1:n
if i<j
A(i,j) = (-1)^(i+j);
else
A(i,j)=i+j;
end
end
end
surf(A)

Página 206, problema 18


function p=proddig(A)
[f,c]=size(A);
if (f~=c)
disp('Matriz no cuadrada')
end
p=1;
for i=1:f
p=p*A(i,i);
end
end

Página 214, problema 1


function s = nearodd(N)
if N<0
s = NaN;
elseif mod(N,2)==0
s = N+1;
else
s = N;
end

Página 214, problema 3


function B = filacero(A)
[a,b] = size (A);
B=A;
for i = 1:a
for j = 1:b
if A(i,j) == 0
B(i,j)= i+j;
end
end
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Prácticas de Guac. Entrega P6


Página 214, problema 2
function q=eliminaraiz(p)
v=roots(p)
h=v(1:length(v)-1)

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
q=poly(h)
end

Página 218, problema 27


function R=raizpr(P,Q)
v=conv(P,Q)
R=roots(v);
end

Implementar la función matlab [sol] = newtonPoly(x0,iter) que dados como parámetros x0


(valor inicial) e iter (número de iteraciones), calcule la solución de la ecuación: 𝒙𝟑 − 𝟔𝒙𝟐 +
𝟏𝟏𝒙 − 𝟔 = 𝟎 utilizando el método de Newton (ver Pág. 209, problema 7 ).
function [sol]=newtonPoly(x0,iter)
p=[1 -6 11 -6]
sol=[]
d=polyder(p)

for i=1:iter
a=polyval(p,x0)
b=polyval(d,x0)
x0=x0-(a/b)
end
sol=x0

end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Prácticas de Guac. Entrega P7


Página 214, problema 4
function r=p4(v,t)
w=[];
% Para hacer el vector al cuadrado
for i=1:length(v)
a=v(i)^2;
w=[w;a]
end
s=sum(w) %sumatorio
if s>t
r=1 %suma es mayor que t
else
r=0 %suma es menor que t
end
end

Página 214, problema 5


function P=p5a(n) %n está en base 5
%Para ver si algún elemento no cumple las reglas
b=0;
cont=0;
if n==fix(n)
for i=1:length(n)

if n(i)>=5
cont=0;
elseif n(i)<0
cont=0;
else
b=b+1;
cont=b;
end
end
else
cont=0;
end

%respuestas
if cont==length(n)
P=1; %número válido
else
P=0; %número inválido
end

end

function d=p5b(n)

P=p5a(n)
e=[0:length(n)-1]
if P==1
d=sum(n.*(5.^e));
else
d=NaN

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Informática. Ingeniería química Irene Palomo Cantero

end
Página 215, problema 7
function B=p7(A)
[fil,col]=size (A);
if col==fil
for i=1:fil
for j=1:col

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
if A(i,j)<0
B(i,j)=-1;
elseif A(i,j)==0
B(i,j)=0;
elseif A(i,j)>0
B(i,j)=1;
end
end
end
else
B=[];
end

end

Página 215, problema 8


function K=cong7(M,N)

x=M-N;
r=mod(x,7);%resto

if M==fix(M)&&N==fix(N)
if r==0
K=1;
else
K=0;
end
else
K=-1;
end
end

Página 215, problema 10


function rev=alreves(x)
w=[];
for i=length(x):-1:1
w=[w;x(i)];
end
rev=w;

end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Prácticas de Guac. Entrega P8


Página 216, problema 11
function K=mult7(M,N)
v=[];
w=[];

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
if M==fix(M)&&N==fix(N)&&M<=N %naturales y M menor que N
%vector con lo números desde M hasta N
for i=M:N
v=[v;M];
M=M+1;
end
%Vector con los restos de dividir entre 7
for j=1:length(v)
a=mod(v(j),7);
w=[w;a];
end
%si el cont=1 es que hay multiplos de 7
for k=1:length(w)
if w(k)==0
cont=1;
break
else
cont=0;
end
end
%Para decir cuando K es 1 o 0
if cont==1
K=1;
else
K=0;
end
else
K=0;
end
end

Las líneas en negrita en este ejercicio creo que se pueden omitir. Pero no estoy segura. Yo lo
entregué tal cual está así.

Página 216, problema 12


function a=simetria(A)
[fil,col]=size (A);
if fil==col
t=A'; %traspuesta de A
r=A-t; %A menos su traspuesta
n=abs(r(:)) %valor absoluto de r como vector
sn=sum(n) %suma del numerador
d=abs(A(:))%valor absoluto de A como vector
sd=sum(d) %suma del denominador
a=sn/sd %coeficiente de simetría
else
a=NaN
end
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Página 216, problema 14


function P=p14(N)
p=[1 1 1];
P=p;
for i=2:N
P=conv(p,P);
end

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
end

Página 216, problema 15


function Z=p15(v)
a=abs(v)

if isempty(v)
Z=NaN
else
if v==a
Z=0 %si todos son positivos
else
Z=1 %si hay alguno negativo
end
end
end

Página 216, problema 17


function m=p17(x,y)
m=[];
if length(x)==length(y)
for i=1:length(x)
m=[m,x(i)];
m=[m,y(i)];
end
else
m=[];
end
end

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Formación a tu medida ¡Asesoramiento por Whatsapp!


Informática. Ingeniería química Irene Palomo Cantero

Prácticas de Guac. Entrega P9

Página 217, problema 19


function P=natroot(N)
% Vector con las raices
r=[1:N];
% Funcion que genera el polinomio a partir de esas raices.
P=poly(r);
end

Página 217, problema 20


function nequ=noigual(A,B)
a=A(:);
b=B(:);
cont=0;
[f1,c1]=size(A);
[f2,c2]=size(B);

if f1==f2&&c1==c2 %matriz cuadrada


if A==B % A=B
nequ=0;
else
for i=1:length(a) %nº elementos son distintos
if a(i)==b(i)
cont=cont+0;
else
cont=cont+1;
end
end
nequ=cont;
end
else
nequ=-1;

end
end

Página 217, problema 21


V=[];
for i=1:N
f=factorial(i)
V=[V,f];
end

Página 218, problema 23


A=magic(5)
a=A(:);
b=[];
for i=1:length(a)
x=a(i).^2;
b=[b;x];
end
S=sum(b)

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
Informática. Ingeniería química Irene Palomo Cantero

Página 218, problema 24


B=magic(25)
f=B(9,:)
c=B(:,20)

prodB=f*c

Reservados todos los derechos. No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
El producto no es conmutativo, ya que cuando multiplicamos a fila 9 (que es una matriz 1x25)
por la columna 20 (que es una matriz 25x1) obtenemos una matriz 1x1. Si hacemos la
multiplicación al revés (haciendo la columna por la fila) obtenemos una matriz 25x25.

a64b0469ff35958ef4ab887a898bd50bdfbbe91a-4963292

si lees esto me debes un besito

También podría gustarte