Professional Documents
Culture Documents
NOMBRE:
DNI:
Ejercicio
1
(2
puntos)
El
nmero
PI
puede
calcularse
de
forma
iterativa
utilizando
diferentes
expresiones.
Una
de
ellas
es
la
frmula
de
Leibniz,
que
se
muestra
a
continuacin.
Implemente
una
funcin
piLeibniz
con
la
siguiente
cabecera:
public static float piLeibniz(long n)
que
toma
como
argumento
el
valor
mximo
de
iteraciones
n
y
retorna
el
valor
de
pi
correspondiente.
Si
el
nmero
de
iteraciones
es
menor
que
cero,
la
funcin
retornar
-1.
Ejercicio
4
(3
puntos)
Para
realizar
operaciones
de
lgebra
vectorial,
se
quieren
modelar
los
vectores
de
tres
dimensiones
mediante
la
clase
Vector.
As,
para
el
vector
A
=
A1
i
+
A2
j
+
A3
k,
A1,
A2
y
A3
son
nmeros
reales
que
representan
las
coordenadas
x,
y,
z
del
extremo
del
vector
de
origen
cero.
Implemente
la
clase
Vector.
Para
ello,
Utilice
un
array
de
nmeros
reales
para
almacenar
las
coordenadas
del
vector.
Proporcione
un
constructor.
Incluya
mtodos
de
acceso
a
las
diferentes
coordenadas.
Incluya
un
mtodo
que
devuelva
el
mdulo
del
vector
al
que
se
le
enva
el
mensaje.
Incluya
un
mtodo
que
devuelva
el
producto
escalar
del
vector
al
que
se
le
enva
el
mensaje
con
otro
pasado
como
argumento.
Implemente
un
main
que
haga
uso
de
la
clase
Vector.
Deber
crear
dos
vectores,
mostrar
sus
mdulos
y
su
producto
escalar.
//Ejercicio 1
public static float piLeibniz(long n){
if (n<0) return -1;
float pi = 0;
for (int k = 0; k <= n; k++){
int signo = (k%2 == 0)?1:-1;
pi += (signo /((2.0*k)+1));
}
return pi*4;
}
//Ejercicio 2
public static int [] concatenar (int [] a, int [] b){
if (a==null || b==null || a.length==0 || b.length==0) return null;
int [] resultado = new int[a.length+b.length];
for (int i=0; i<a.length; i++) resultado[i]=a[i];
for (int i=a.length; i<resultado.length; i++)
resultado[i]=b[i-a.length];
for (int i=0; i< resultado.length; i++)
System.out.print(resultado[i]+" ");
return resultado;
}
//Ejercicio 3
public static boolean EsCuadrada(double[][] m){
if (m == null) return false;
for (int i=0;i<m.length;i++)
if (m.length != m[i].length) return false;
return true;
}
public static double determinante2(double [][]m){
if (EsCuadrada(m) && m.length == 2)
return m[0][0] * m [1][1] - m[0][1] * m[1][0];
return 0;
}
//Ejercicio4
public class Vector{
private double [] coordenadas = new double[3];
// creacin de un vector a partir de tres coordenadas del extremo
public Vector (double x, double y, double z) {
coordenadas[0] = x;
coordenadas[1] = y;
coordenadas[2] = z;
} ;
// mtodo para calcular el mdulo del vector
public double modulo () {
double modulo = 0.0;
for (int i = 0; i < coordenadas.length; i++)
modulo += coordenadas[i]*coordenadas[i];
return (Math.sqrt(modulo));
};
// devuelve la coordenada en la direccin x
public double get_coordenada_x() {return coordenadas[0];};
// devuelve la coordenada en la direccin y
public double get_coordenada_y() {return coordenadas[1];};
// devuelve la coordenada en la direccin z
public double get_coordenada_z() {return coordenadas[2];};
// devuelve un escalar producto de l mismo con otro vector
// no es necesario utilizar los mtodos get puesto que el
// argumento es de la misma clase
public double ProductoEscalar (Vector n) {
return (coordenadas[0]*n.get_coordenada_x() +
coordenadas[1]*n.get_coordenada_y() +
coordenadas[2]*n.get_coordenada_z());
};
public static void main(String[] args) {
Vector vector1 = new Vector(1,1,1);
Vector vector2 = new Vector(2,2,2);
System.out.println("Mdulo 1:"+ vector1.modulo());
System.out.println("Mdulo 2:"+ vector2.modulo());
System.out.println("Producto escalar: " +
vector1.ProductoEscalar(vector2));
}
}