Hellos, ask if I had to open a new post for a new question I have about this code and inform me that if it is the same code, I can edit, tons, now I have a little problem under this part of the code // now we obtain the scalar multiplication data, specifically here
suma2 +=(valv6*valv7);
vecP[i6] = suma2*valv6;
If you put as data in the arrays A = {3,4} and B = {5,6} in the part where it says The projection vector of A in B is, it gives me this data [1.2295081967213117, 3.836065573770492] and I I should give like that [3.197, 3.836], as you can see, it works for me in the second data of the array, but, the first one does not give me T_T, and I do not know why.
import java.util.Arrays;
import java.util.Scanner;
public class VectorInnerProduct{
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
//Variables k seran el tamaño de los vectores
int v1,v2,v3;
double total1=0.0, suma = 0.0, m1=0.0, m2=0.0, m3=0.0, total2=0.0, suma2=0.0;
System.out.print("Ingrese el tamaño del vector 1: ");
v1=sc.nextInt();
//creamos el primer vector con el tamaño de v1
double vec1[]=new double[v1];
//recorremos el vector v1 para llenarlo
for(int i1=0;i1<vec1.length;i1++){
System.out.print("\n ingrese el numero de la posicion "+i1+":");
vec1[i1]=sc.nextDouble();
}
System.out.print("\n Ingrese el tamaño del vector 2: ");
v2=sc.nextInt();
//Creamos el primer vector con el tamaño de v1
double vec2[]=new double[v2];
//recorremos el vector v2 para llenarlo
for(int i2=0; i2<vec2.length;i2++){
System.out.print("ingrese el numero de la posicion "+i2+":");
vec2[i2]=sc.nextDouble();
}
// Determinar la magnitud del primer vector
for(int i4=0;i4<vec1.length;i4++){
double valv4=0.0;
if (vec1.length > i4){
valv4 = vec1[i4];
total1 += Math.pow(valv4, 2);
}
m1 = Math.sqrt(total1);
}
System.out.println("La magnitud del vector A es "+m1);
// Determinar la magnitud del segundo vector
for(int i5=0; i5<vec2.length; i5++){
double valv5=0.0;
if (vec2.length > i5){
valv5 = vec2[i5];
total2 += Math.pow(valv5, 2);
}
m2 = Math.sqrt(total2);
}
System.out.println("La magnitud del vector B es "+m2);
/*Determinamos cual de los dos vectores es mas grande,
para k el vector 3 tenga el tamaño del mas grande*/
v3=v1;
if (v2 > v1)
v3=v2;
//Determinar el vector unitario del segundo vector y el vector proyeccion de A en B
//Declaramos el vector unitario y el vector proyeccion
double vec2U[] = new double[v2];
double vecP[]=new double[v2];
//se recorre el vector B y se divide entre la magnitud del vector B para encontrar el vector unitario de B
for (int i6=0; i6<vec2.length; i6++){
double valv6 = 0.0;
if (vec2.length > i6){
valv6 = vec2[i6]/m2;
vec2U[i6] = vec2[i6]/m2;
}
// ahora obtenemos los datos de la multiplicacion escalar
double valv7=0.0;
if (vec2.length > i6){
valv7 = vec1[i6];
}
suma2 +=(valv6*valv7);
vecP[i6] = suma2*valv6;
// System.out.println("El vector unitario del segundo vector es "+valv6);
}
System.out.println("El vector unitario del vector B es "+Arrays.toString(vec2U));
//Declaramos el vector 3
double vec3[]=new double[v3];
//recorremos el vector 3 para hacer la suma
for(int i3=0;i3<vec3.length;i3++){
double valv1=0.0;
if (vec1.length > i3){
valv1 = vec1[i3];
}
double valv2=0.0;
if(vec2.length > i3){
valv2=vec2[i3];
}
suma +=(valv1*valv2);
}
System.out.println("La suma de la multiplicacion de los vectores A y B es "+suma);
System.out.println("La multiplicacion escalar de la proyeccion de A sobre B es "+suma2);
System.out.println("El vector proyeccion de A en B es "+Arrays.toString(vecP));
// System.out.println("El resultado sin el angulo es "+suma/(m1*m2));
System.out.println("El inner product en radianes es "+Math.acos(suma/(m1*m2)));
System.out.println("El inner product en grados es "+Math.toDegrees(Math.acos(suma/(m1*m2))));
}
}