error when operating array with java

0

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))));

}

}

    
asked by Barly Espinal 16.06.2018 в 03:20
source

0 answers