1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #include<iostream>
#include <ctime>
#include<cstdlib>
#include<cmath>
using namespace std;
int main()
{
srand(time(0));
int N = 10; //Nombre particules
int threshold = 5;
int P=5; //ordre du dévelopement
double x[N],y[N],m[N],p_dir[N];
// Création d'une distribution de 10 Particules au sein du cube [0,1]x[0,1]
for( int i=0; i<N; i++ )
{
x[i] = rand()/(1.+RAND_MAX);
y[i] = rand()/(1.+RAND_MAX);
m[i] = 1.0/N;
cout<<x[i]<<" "<<m[i]<<endl;
}
//Calcul directe du potentiel en la cible y_j: $\phi(y_j)=\sup_{i=1}^n 1/\|y-x_i\|$
double dx,dy,dz;//Représente la distance entre le centre et la particule concernée
double r;
for( int j=0; j<N; j++ )
{
for( int i=0; i<N; i++ )
{
if (i==j) continue;
dx = x[i]-x[j];
dy = y[i]-y[j];
r = sqrt(dx*dx+dy*dy+dz*dz);
p_dir[j] += m[i] / r;
}
cout<<"Le potentiel par calcul directe est p["<<j<<"]: "<<p_dir[j]<<endl;
} |
Partager