Está en la página 1de 7

%Ejercicio 1

A = [1 0 5; 1 1 -1; 0 2 1]

A=

1 0 5

1 1 -1

0 2 1

B = [2 2 9].'

B=

x = inv(A)*B

x=

-1.4615

4.1538

0.6923

A*x

ans =

2.0000

2.0000

9.0000

%Ejercicio 2

%Primera forma

a = [1 2 3 5 7].'

a=

2
3

b = [2 4 6 8 10].'

b=

10

(a.')*b

ans = 138

%Segunda forma

dot(a, b)

ans = 138

%Tercera forma

% Script:

a = [1 2 3 5 7].';

b = [2 4 6 8 10].';

suma = 0;

for i = 1:5

suma = suma + a(i)*b(i);

end

suma %Para mostrar el valor


% Ventana de comandos:

suma

suma = 138

%Cuarta forma

sum(a.*b)

ans = 138

%Ejercicio 3

% Función:

function datos = estudia_vector(v)

datos.valores = v;

datos.max = max(v);

datos.min = min(v);

datos.media = mean(v);

datos.primos = v(isprime(v));

end

%Ventana de comandos:

estudia_vector(a)

ans =

struct with fields:

valores: [5×1 double]

max: 7

min: 1

media: 3.6000

primos: [4×1 double]


%Ejercicio 4

%1

x = -pi:0.01:pi;

plot(x, tan(x))

%2

x = -pi:0.01*pi:pi;

%3

axis([-pi pi -30 30])

%Ejercicio 5

load puntos.dat

resultados(:, 1) = puntos(:, 1) + 1.5;

resultados(:, 2) = puntos(:, 2) - 6;

save('resultados.out', 'resultados', '-ascii')

%Ejercicio 6

x = 0:0.01:max(resultados(:, 1));

y = 0.5*x + 2*sin(0.15*x.^2).*exp(0.1*x);

plot(resultados(:, 1), resultados(:, 2), '.', x, y)

%Ejercicio 7

%Script:

fichero = fopen('quiensoy.dat', 'r');

nPuntos = fscanf(fichero, "%d", 1)

for i = 1:nPuntos

coordX(i) = fscanf(fichero, "%f", 1);

coordY(i) = fscanf(fichero, "%f", 1);

end
nLineas = fscanf(fichero, "%d", 1)

for i = 1:nLineas

inicial = fscanf(fichero, "%f", 1);

final = fscanf(fichero, "%f", 1);

line([coordX(inicial) coordX(final)], [coordY(inicial) coordY(final)])

end

%Ejercicio 8

%Función:

function letra = letra_nif(NIF)

letras = ['T' 'R' 'W' 'A' 'G' 'M' 'Y' 'F' 'P' 'D' 'X' 'B' 'N' 'J' 'Z' 'S' 'Q' 'V' 'H' 'L' 'C' 'K' 'E'];

letra = letras(mod(NIF, 23) + 1);

end

%Ejercicio 9

%Función

function prob = varios_cumples(numeroPersonas, numeroIteraciones)

casosPositivos = 0;

for i = 1:numeroIteraciones

suma = 0;

fechasCumple = randi([1 365], numeroPersonas, 1);

for i = 1:numeroPersonas

suma = suma + sum(fechasCumple==fechasCumple(i)) - 1;

if (suma >=2)

casosPositivos = casosPositivos + 1;

break

end

end

end

prob = casosPositivos/numeroIteraciones;
x = 1:100;

for i = x

prob(i) = varios_cumples(i, 100000);

end

plot(x, prob)

%Ejercicio 9

%Función

function sol = rayleigh(v)

%Se halla el primer tanteo del método Newton-Raphson mediante una expresión aproximada.

rInicial = 256/293 + v*(60/307 - v*(4/125 + v*(5/84 + 4*v/237)));

%Tolerancia máxima.

errorMax = 1E-9;

%Se declara "r" como una variable simbólica para poder declarar funciones en función de "r" y
poder derivar frente a esta variable.

syms r

%Función cuya raíz se desea obtener numéricamente.

f(r) = (2 - r^2)^2 - 4*sqrt(1- (1 - 2*v)*r^2/(2*(1 - v)))*sqrt(1 - r^2);

%Derivada de dicha función respecto a "r".

df(r) = diff(f, r);

%En este bucle se aplica el método de Newton-Raphson de forma iterativa:

% x_(n+1) = x_n - f(x_n)/f'(x_n)

%El bucle se ejecuta indefinidas veces; únicamente se sale del mismo cuando se detecta que la
diferencia entre los resultados de dos iteraciones consecutivas es inferior a la tolerancia
definida.

%Una vez obtenido un nuevo valor de "r" en la variable "rFinal", se vuelca su valor a "rInicial"
para ser empleado en la siguiente iteración.

while 1

% Dado que "f(r)" y "df(r)" devuelven expresiones simbólicas al ser llamadas, empleo
"double" para convertir sus salidas a valores de precisión doble y no gastar tiempo de
procesamiento en evaluar dichas expresiones simbólicamente.

rFinal = rInicial - double(f(rInicial))/double(df(rInicial));


if (abs(rFinal - rInicial) < errorMax)

break

end

rInicial = rFinal;

end

%Se devuelve el valor de "rFinal" que cumple con la especificación de tolerancia.

sol = rFinal;

end

rayleigh(0.2)

ans = 0.9110

rayleigh(0.3)

ans = 0.9274

rayleigh(0.49)

ans = 0.9541

También podría gustarte