¿Como hacer un producto escalar en c++?

Hola, soy nuevo en c++ y quisiera saber como puedo hacer : α=cos−1(a*b/||a||||b||) donde a y b pertenecen a R^n gracias de antemano.

2 respuestas

Calificación
  • hace 5 años
    Respuesta preferida

    Ahí te va el código:

    #include <iostream>

    #include<cstdlib>

    #include <cmath>

    using namespace std;

    //prototipo de la funcion producto escalar

    float productoescalar(float);

    //Funcion main

    int main(){

    int n{0},m{0};

    float ps{0};

    cout<<"ingrese la dimension de los vectores: ";

    cin>>n;

    if (n<1){std::cout<<"La dimension de los vectores tiene que ser mayor o igual a 1\n";

    }

    else{system("cls");

    ps=productoescalar(n);

    std::cout<<"\nel angulo es: "<<acos(ps)<<std::endl;

    }

    return 0;

    }

    //desfinicion de la funcion producto escalar

    float productoescalar(float n){

    float a[10]={0},b[10]={0};

    float punto[10]={0};

    float pp{0},mag1{0},mag2{0},mag3{0},mag4{0};

    float r1{0},r2{0},ang{0};

    std::cout<<"Ingrese las componentes del primer vector \n";

    for(size_t i=0;i<n;i++){

    std::cout<<"componente "<<i+1<<": ";std::cin>>a[i];

    mag1=pow(a[i],2);

    mag2+=mag1;}

    std::cout<<"\nIngrese las componentes del segundo vector \n";

    for(size_t j=0;j<n;j++){

    std::cout<<"componente "<<j+1<<": ";std::cin>>b[j];

    mag3=pow(b[j],2);

    mag4+=mag3;}

    for(size_t l=0; l<n;l++){

    punto[l]=a[l]*b[l];

    pp+=punto[l];}

    r1=sqrt(mag2);

    r2=sqrt(mag4);

    std::cout<<"\nEl producto punto es: "<<pp<<std::endl;

    std::cout<<"\nLa magnitud de el primer vector es: "<<r1<<"\n";

    std::cout<<"\nLa magnitud de el segundo vector es: "<<r2<<"\n";

    ang=pp/(r1*r2);

    return ang;

    }

    En la librería <cmath> encontraras la función del coseno inverso que es acos(), para retornar el calculo de el producto punto sobre las magnitudes utilice la función producto escalar, como los vectores son de dimensión r^n entonces se le debe pedir al usuario que ingrese la dimensiones y luego las componentes de cada vector.

    Espero que te halla sido de ayuda suerte.

    Fuente(s): Estudiante de ingeniería informática.
  • hace 5 años

    Busca en la librería math.h alguna función de senos, bien, ve su sintaxis y no se si sean valores absolutos o simples "o" pero si son o tu crea tu propia función para hacerla funcionar por ejemplo getch()=a;

    If (a=a); ...

    Ya sabes lo demás.

    Si son valores absolutos, u otra cosa que yo desconozca viendo las instrucciones de math.h te ayudaras.

    Siento no ser de más ayuda, pero solo programó por hobit.

    P.D. Si tus problemas son como hacer que funcionen con las equivalencias o como se llamen.

    Primero ve si en math.h lo respetan, de no ser así tu crea tu propia función, que sería lo ideal.

¿Aún tienes preguntas? Pregunta ahora para obtener respuestas.