Está en la página 1de 8

Fundamentos de la informática:

funciones exponenciales y logarítmicas


3,16x10^2
e => 3.16e +2
>>e e^x ->exp(x)
>>exp(1)
ans=2.7182
>>exp(2)
ans=7.3890
>>log7(x) no existe
Hay que cambiar de base.

a+bi i=raiz de -1
parte imaginaria, números complejos

“ans” es una variable

-Una variable tiene asociado un nombre o identificador. Límite de 63 símbolos, combinación


de letras, números y “_”. Sensible a mayús y mín. Existen “palabras reservadas”. Ej: “Ans”

>>texto= ‘Hola que tal’ (no se pueden poner espacios en las variables, hay que poner comillas)
texto=’-----------’

1 Byte= 8 bit

>>5*2=x NO

Regla de asignación: y=x+1 ERROR LÓGICO, no le has dado un valor a la X, por tanto es
impredecible.

PROBLEMA DE PRÁCTICAS:
Intercambiar las variables:
>>a=3
l a=3
>>b=5
b=5
1. >>a=b
2. >>b=a
Haciendo lo anterior solo consigues cambiar una de las variables.
3. Guardamos el valor de la a >>aux=a
4. >>a=b
5. >>b=aux
—------------------------------------------------------------------------------------------------------------------------
EJERCICIOS:
1) 3,5,6 NO válidos
2) 1.Asignar valor 2.incrementar 1 al valor de la variable 3.result
3) Para intercambiar el valor de dos variables…
4) Convertir las fórmulas a expresiones en Matlab:
>>C=20;
>>F=9/5 *C - 32 (no hacen falta los () por el orden de pref)

—--------------------------------------------------------------------------------------------------------------
>>help sin
>>who
>>whos

EJERCICIOS USANDO SCRIPTS


- El área A de un triángulo de lados a,b y c está dada por
A= raiz(s(s-a)(s-b)(s-c)
donde s=(a+b+c)/2. Dados a,b,c particulares, calcule el valor de A.

a b

script

a=3;
b=5;
c=4;
s=(a+b+c)/2;
A=sqrt(s*(s-a)*(s-b)*(s-c))

Funciones elementales:
sqrt(x) calcula la raíz cuadrada de x
abs(x) devuelve el valor absoluto de x
mod(x, y) ) devuelve el resto de dividir x entre y
round(x) devuelve el número entero más cercano a x (“redondeo” de x)
floor(x) devuelve el número entero más cercano e inferior a x (“suelo” de x)
ceil(x) devuelve el número entero más cercano y superior a x (“techo” de x)

Ejercicios (usando scripts):


Dados cuatro valores que representan dos puntos en el plano, (x1, y1) , (x2, y2), calcula los
coeficientes (a, b, c) de la ecuación general de la recta ax+by+c=0 que los une. El cálculo de los
coeficientes se realiza mediante las expresiones: a=y2−y1, b=x1−x2, c=y1 x2−y2 x1.

recta.m
x1=5;
x2=8;
y1=-3;
y2=0.15;
a=y2-y1;
b=x1-x2;
c=y1*x2 - y2*x1;
a
b
c

Convierta las siguientes fórmulas a expresiones en Matlab

fracciones.m

x=3;
y=0.25;
frac1=((5*x)-(4*y))/(3*x^2+6*y^4);
frac2=(sqrt(3*x^2-28))/(123-y);
Z= frac1-frac2

La velocidad v y la distancia d en función del tiempo t, de un coche que posee una


aceleración constante a desde un estado de reposo, se calculan como: v(t) = at d(t) = ½ at2
Determina la velocidad y la distancia recorrida por un coche a los 5 y a los 10 segundos,
cuya aceleración es a = 1.55 m/s^2.

coche.m

a=1.55;
t1=5;
t2=10;
v_t1= a*t1
d_t1=0.5*a*t1^2
v_t2= a*t2
d_t2=(a*t2^2)/2

TEMA 3

Continuación ejerc recta.m


fprintf(`El coeficiente a de la recta es %f, el b es %f y el c es %f.\n´,a,b,c);

una act inventada:


val=input(‘ ‘);
pos= 0
n=length(v);

i=1;
while i<=n && pos==0
if v(i)==val
pos=i ,
end
i=i+1; si no estuviese esto, el bucle sería infinito
end

if pos==0
fprintf(‘no encontrado’)
else …

________
for i= 1:n
if v(i)==val
pos=i
end
________

PROBLEMA DEL EXAMEN


Desarrolle un script en Matlab que pida al usuario una secuencia de números en el rango de
1 a 99 uno a uno y los almacene en un vector llamado ‘v’. La petición terminará cuando el
usuario introduzca un número mayor que 100 o menor o igual que 0, o se introduzca un
máximo de 20 valores. Una vez completado el vector ‘v’, lo dividiremos en subvectores ‘v1’ y
‘v2’. ‘v1’ contendrá todos los elementos que ocupaban una posición impar en ‘v’ y ‘v2’
contendrá los valores que ocupaban una posición par. Finalmente se construirá un vector
‘w’ que contenga ‘v1’ y ‘v2’(los elementos que están en ambos vectores a la vez, sin
repetición).

v=zeros (1:20);
n_datos= 0

val= input (‘...’);

while n_datos<20 && val>0 && val<100


n_datos=n_datos+1;
v(n_datos)=val;

val=input(‘...’);

end

v1=zeros(1,10);
v2=zeros(1,10);

index1=1;
index2=1;

for i=1:n_datos
if mod(i,2)==0 (estoy en el índice par, va al v2)
/rem
v2(index2)=v(i),
index2=index2+1

else

v1(index1)=v(i);
index1=index1+1;

end
end

n_w=0;
for i=1:tam2
if v1(i)==v2(i)
n_w=n_w+1; k=1;
w(n_w)=v1(i); find=0; (Ahora hace falta saber que no está
repetido) while k<n_w && find==0
if w(k)==v1(i)
end find=k;
end if find==0
end n_w=n_w+1;
w(n_w)=v1(i);
end
end
end
end
ej;

entrada: 23 23 7 45 73 72 71 7 9 100

salida: v=(23,23,7,45,73,72,71,7,9,0,0,0,0,0,0,0,0,0,0,0)
v1=(23,7,45,73,71,9,0,0,0,0)
v2=(23,45,45,72,7,0,0,0,0,0)
w=(23,7,45,0,0,0,0,0,0,0)

EJERCICIO EXAMEN
Implementa una función en matlab llamada sumadiagonalsd que reciba una matriz cuadrada
(nxn) de números llamada M y devuelva la suma de la diagonal superior derecha de la
misma. Crea un script donde se usa la función anterior. Ejemplo para una matriz de 3 x 3.
En negrita lo que debe sumarse: a+b+c+e+f+i

a b c
d e f
g h i

[ nfil=ncol ]=size (M); (1,1) (1,2) (1,3)


suma=0; (2,2) (2,3)
for i = 1:nfil (3,1) (3,3)
for j= 1:ncol
suma+M(i,j);
end
end

EJERCICIO EXAMEN
Implemente un script en Matlab que permita leer 10 enteros por teclado (todos deben ser
positivos). Si se introduce un número real, éste debe redondearse. Después de esto el script
debe mostrar, usando la instrucción fprintf, la suma de los valores pares una vez
redondeados.
Los valores leídos NO pueden almacenarse en un vector.

EJERCICIO INVENTADO
Ordenar v incremental v=[ 8 , 5 ,3 , 9 ,−5 ,0 , 3.14 ] → [−5 , 0 , 3 ,3.14 ,5 , 8 , 9 ]
n=length(v);
for i=1:n-1
min=v(i)
pos=i;

for j=i+1:n
if v(j)<min
min=v(j);
pos=j;

end
end

aux=v(i) ; v(i)=v(pos); v(pos)=aux;

end

Actividad 4 trabajo autónomo:


triangular=false;
t=input ('Introduzca un número natural ')
n=1;
while n<t & triangular==false
suma=0;
for i=1:n
suma=suma+1;
end

If t==suma
triangular=true;
end

n=n+1;
end

if triangular==true
disp('es triangular ')
else
disp('no es triangular ')
end

Actividad 3 trabajo autónomo:


v = [];
suma = 0;
total_num = 0;
num_positivo= input('inserte un número positivo ');

while num_positivo~=0

if num_positivo <0
disp('valor no válido');

elseif num_positivo > 0


suma = suma+num_positivo;
total_num = total_num +1;
v =[v num_positivo ];
end

num_positivo = input('inserte un número positivo ');


end
fprintf('la media es %f',suma/total_num)

media = suma/total_num;
suma2=0;
for i=length(v)
suma2 = suma2 + (v(i)^2 - media^2);
end

varianza = suma2/total_num;
fprintf('la varianza es %f\n',varianza)

También podría gustarte