Primero algunas cuestiones del álgebra.
No podés realizar un producto escalar entre 2 vectores de diferente dimensión (tamaño), por ende, podés simplificar el programa pidiendo una sola vez el tamaño y pedir los valores con el mismo tamaño para ambos vectores.
En tu code, lo siguiente no está bien:
producto_escalar (s=s+v1[i]*v2[i]; ){
cout<<"el producto escalar es"<<s<<endl;}
Como parámetro deben ir los vectores como bien declaras al principio:
double producto_escalar(vector<double>v1,vector<double>v2)
Lo que debes hacer es:
s = producto_escalar (v1,v2);
cout<<"el producto escalar es"<<s<<endl;
Por último, dentro de la función "producto_escalar", la condición en el for no es correcta. Esto:
for(i=0;i<v1.size and i<v2.size ();i=i+1)
No compila, porque el compilador no entiende el "and". Las relaciones lógicas, se reemplazan por ciertos caracteres, por ejemplo, para AND y OR:
AND = &&
OR = ||
Además, utiliza paréntesis siempre que las uses, para evitar confusiones:
for(i=0;(i<v1.size()) && (i<v2.size());i=i+1)
Corrige esto y avisanos como te fue.