Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2010, 02:15   #1
ruslan_khatipov
Новичок
Джуниор
 
Регистрация: 23.05.2010
Сообщений: 1
По умолчанию Моделирование частицы в магнитном поле

Господа!

Есть однородное поле, направленное вдоль оси z величиной 0.2 Тл. Надо посчитать, как будет двигаться электрон в этом поле, то есть его траекторию в 3х-мерном пространстве. Уравнение движения имеет вид диффура второго порядка, которое сводится к диффуру 1го порядка, то есть к задаче Коши. Надо использовать метод Рунге-Кутты. Скорость выберается так, чтобы ларморовский радиус движения был например 1 см (то есть там винтовая линия - в её проекции это окружность с этим радиусом). Координаты не важно какие, все равно поле однородное. Результаты лучше выводить в файл, чтобы потом можно было построить график в какой-нибудь программе (для отладки удобно использовать gnuplot). Входные данные надо читать из файла типа ini. С гарфическим интерфейсом заморачиваться не стоит. Каждая строка ini файла должна иметь формат name = value. Например me = 1.6e-19 //electron charge.

1) Как реализоавть метод Рунге-Кутты здесь? Например - 4го порядка.

2) Как оперировать с вводом/выводом в/из ini файла?


Я составил примерный код, но он не по методу Рунге-Кутты:

#include <iostream.h>
#include <conio.h>
#include <fstream.h>

int v0, alpha, vperp, vparal, rlarm, pi, H, me, e, x, y, z, t, T;
main ()
{
ifsteam input("input.txt");
ofstream output("output.txt");

while (!input.eof()){
input>>rlarm>>alpha>>H>>me>>e;
}

pi=3.14;
v0=(e*H*rlarm)/(m*sine(alpha));
vperp=v0*sine(alpha);
vparal=v0*cosine(alpha);
T=(2*pi*rlarm)/vperp;

for (t=0; t<100; t++)
{

x=rlarm*cosine(2*pi*t/T);
y=rlarm*sine(2*pi*t/T);
z=vparal*t;

output<<t<<x<<y<<z<<endl;
}

input.close();
output.close();
return 0;

}

Последний раз редактировалось ruslan_khatipov; 23.05.2010 в 02:24.
ruslan_khatipov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
моделирование voron.kz Помощь студентам 0 15.12.2009 02:07
После ввода в поле по Enter нужно перейти на другое поле! •ScReam•™ Помощь студентам 2 16.06.2009 08:47
Как проверить наличие частицы в каждой строке memo? zotox Помощь студентам 13 24.03.2009 12:56
Как проверить на наличее частицы в Edit1 zotox Помощь студентам 3 18.09.2008 15:49