#include #include using namespace std; //declaration + initialisation des constantes globales const double mu0 = 4.*M_PI*10e-7; int main() { //declaration des donnees du probleme double R = 1; //rayon de l'anneau double I = 1000.; //intensite du courant //sesie du nombre de divisions de l'anneau double N = 1000; //nombre de suosdivisions de l'anneau cout << "Entrez le nombre de division de l'anneau: " << endl; cout << "N = "; cin >> N; //sesie du cuorant cout << "Entrez le courant en A: " << endl; cout << "I = "; cin >> I; //sesie de la position aquelle calculer le champ double px, py, pz; //coordonnees du point choisi cout << "Entrez la position ou calculer le champ magnetique : " << endl; cout << "x = "; cin >> px; cout << "y = "; cin >> py; cout << "z = "; cin >> pz; //on verifie que le point ne se situe pas sur l'anneau //(pas vraiment necessaire) if (pz == 0) { if ((px*px + py*py) == R*R) { cout << "Le point est sur l'anneau, entrez d'autres valeurs : " << endl; cout << "x = "; cin >> px; cout << "y = "; cin >> py; cout << "z = "; cin >> pz; while ((px*px + py*py) == R*R) { cout << "Le point est toujours sur l'anneau, " << "entrez d'autres valeurs : " << endl; cout << "x = "; cin >> px; cout << "y = "; cin >> py; cout << "z = "; cin >> pz; } } } //le champ total est calcule avec une boucle sur les segments de l'anneau //on initialise les composantes a zero en-dehors de la boucle principale double dBx, dBy, dBz; //champ genere par le segment double Bx, By, Bz; //champ total Bx =0.; By = 0.; Bz = 0.; double rx, ry, rz; //vecteur du segment au point choisi double norme; //norme du vecteur double theta; //coordonnee polaire du segment de l'anneau double dtheta; dtheta = 2.*M_PI/N; //incrementation de l'angle double dlx, dly, dlz; //composante du segment //boucle sur les segments de l'anneau for (int i=0; i