- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
namespace ParticleAccelSim
{
public class Particle
{
public double X { get; set; } // координата частицы по оси x
public double Y { get; set; } // координата частицы по оси y
public double VX { get; set; } // скорость частицы по оси x
public double VY { get; set; } // скорость частицы по оси y
public double Mass { get; set; } // масса частицы
public double Charge { get; set; } // заряд частицы
public Particle(double x, double y, double vx, double vy, double mass, double charge)
{
X = x;
Y = y;
VX = vx;
VY = vy;
Mass = mass;
Charge = charge;
}
}
public class ParticleAccelerator
{
private List<Particle> particles = new List<Particle>(); // список всех частиц
private double timeStep = 0.01; // размер шага при моделировании
public void AddParticle(Particle p)
{
particles.Add(p);
}
public void RunSimulation(int numSteps)
{
for (int i = 0; i < numSteps; i++)
{
foreach (Particle p in particles)
{
// вычисляем силы, действующие на частицу
double ax = 0;
double ay = 0;
foreach (Particle other in particles)
{
if (other != p)
{
double dx = other.X - p.X;
double dy = other.Y - p.Y;
double r = Math.Sqrt(dx * dx + dy * dy);
double f = (p.Charge * other.Charge) / (r * r); // закон Кулона
ax += f * dx / r;
ay += f * dy / r;
}
}
// вычисляем новое положение и скорость частицы
p.VX += ax * timeStep / p.Mass;
p.VY += ay * timeStep / p.Mass;
p.X += p.VX * timeStep;
p.Y += p.VY * timeStep;
}
}
}
}
}
Исходный код симулятора ускорителя частиц, например "Большой адронный коллайдер". Просьба не запускать этот код, т.к. я уже пару дней назад запустил, а сегодня уже не могу понять правильно говорить "Возможность этого резиста крайне мала" или "Вероятность этого резиста крайне мала"... ТАК ЧТО БУДЬТЕ ОСТОРОЖНЫ! Можно сломать нашу реальность!
DartPower 19.03.2023 15:18 # 0
```
static void Main(string[] args)
{
Particle p1 = new Particle(0, 0, 0, 0, 1, 1);
Particle p2 = new Particle(1, 0, 0, 0, 1, -1);
ParticleAccelerator accelerator = new ParticleAccelerator();
accelerator.AddParticle(p1);
accelerator.AddParticle(p2);
accelerator.RunSimulation(100);
Console.WriteLine("p1: ({0}, {1})", p1.X, p1.Y);
Console.WriteLine("p2: ({0}, {1})", p2.X, p2.Y);
Console.ReadKey();
}
```
AnimeGovno 19.03.2023 15:41 # +1