Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 27

Программа, рассчитывающая задачу по молекулярной физике

18.01.2015, 10:34. Показов 4751. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, написать программу на языке c#, которая будет вычислять данную задачу.
"Смоделировать движение заряженных частиц в однородном
электрическом поле конденсатора. Вариативными параметрами
являются: величина напряжённости поля; константы конденсатора (площадь пластин и расстояние между пластинами); количество, скорость, заряд и масса каждой частицы. Результатом
работы программы является степень подобия экспериментально найденной электрической постоянной с её теоретическим
значением. Программа должна выдавать траекторию движения
(местонахождение) каждой частицы через установленный промежуток времени."

Наброски физических формул для решения прикреплены. В их правильности не уверена, формул не хватает.
Миниатюры
Программа, рассчитывающая задачу по молекулярной физике  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2015, 10:34
Ответы с готовыми решениями:

Программа, решающая какую-нибудь задачу по физике
может есть у кого-нибудь исходник на С#? программа,решающая какую-нибудь задачу по физике,либо теорему или что-то подобное, с вводом...

Задача по молекулярной физике
Кислород находится в сосуде объёмом 100 л при температуре 20 градусов Цельсия и давлении 107 Па. Найти объем V2, который газ занимал бы в...

Программа, рассчитывающая сдачу
Просьба помочь в написании кода: Составьте алгоритм и напишите программу, рассчитывающую сдачу с 50 рублей, которую необходимо вернуть...

15
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
18.01.2015, 12:08
Вы напишите что вам не понятно с точки зрения программирования, постараюсь ответить. Но вникать в молекулярную физику вряд ли кто то будет.
0
18.01.2015, 12:24

Не по теме:

Цитата Сообщение от tarasalk Посмотреть сообщение
вникать в молекулярную физику вряд ли кто то будет.
tarasalk, 100500. :D

0
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 27
18.01.2015, 15:12  [ТС]
Мне все не понятно.
0
 Аватар для Prog_maker
459 / 403 / 153
Регистрация: 23.01.2011
Сообщений: 1,054
18.01.2015, 15:20
Что то молекулярных физиков я тут не встречал
Вы формулы напишите по понятнее
1
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
18.01.2015, 16:32
чтобы просчитать эти формулы используйте класс Math, например
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
 
class Program
{
    static void Main()
    {
        Console.Write("Введите площадь: ");
        double s = double.Parse(Console.ReadLine());
        Console.Write("Введите расстояние: ");
        double d = double.Parse(Console.ReadLine());
        double c = s / (4 * Math.PI * d);
        Console.Write("Ёмкость конденсатора: {0}", c);
        Console.ReadKey();
    }
}

Не по теме:

ну а разбираться в задаче с молекулярной физикой вряд ли кто-то будет, это форум программистов - где уже готовые задания переводят в компьютерный код.

2
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 27
18.01.2015, 18:02  [ТС]
Что значит понятнее? Эту задачу мне учитель по физике решала вот так. Может так правильнее и понятнее?
Миниатюры
Программа, рассчитывающая задачу по молекулярной физике  
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.01.2015, 18:11
tatata, на этой фотографии эта задача не решена Решением должно быть уравнение движения вида x= x(t), y = y(t). Например для движения по y формула должна быть https://www.cyberforum.ru/cgi-bin/latex.cgi?y = \frac{Eq}{{m}_{e}}t. Но у вас это не выведено
0
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 27
18.01.2015, 18:28  [ТС]
В том то и дело, что решить мне ее не удалось, так же как и учителю по физике. Я показываю лишь наброски.
0
 Аватар для Prog_maker
459 / 403 / 153
Регистрация: 23.01.2011
Сообщений: 1,054
18.01.2015, 18:33
Цитата Сообщение от tatata Посмотреть сообщение
так же как и учителю по физике
Т.е. эту задачу даже учитель по физике решить не может? А вот хотите чтоб ее программисты решили?
0
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 27
18.01.2015, 19:01  [ТС]
Я показала, что нарешал учитель. Просто может кто-то понимает как ее "дорешать".
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
18.01.2015, 19:01
tatata, Длина конденсатора дана? Или пластины считаются квадратными?
Ну допустим смоделируем мы движение внутри конденсатора, как мы получим значение электрической постоянной?
Опиши точно что дано.
0
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 27
18.01.2015, 19:09  [ТС]
Задача описана так, как она дана. Никаких условий, критериев, больше не сказано. Сама не поняла момент с постоянной. Знаете что, если вы хотите помочь с решением задачи, подстройте ее под свои критерии, как вам будет удобнее. В плане, можете взять квадратные пластины и тд. Только отпишите, что вы изменили в задаче.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
18.01.2015, 20:01
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Моделирует движение частиц, считает угол выхода частиц, сравнивает с теоретическим.
Насчет эл. постоянной - я не представляю как в компьютерном моделировании можно найти физические постоянные.
C#
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApplication231
{
    public partial class Form1 : Form
    {
        private Solver solver;
        public float Scale = 10000f;//шкала (пикселей на метр)
        public float dT = 0.0001f;//шаг моделирования (секунд на шаг)
 
        public Form1()
        {
            InitializeComponent();
 
            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
            WindowState = FormWindowState.Maximized;
 
            solver = new Solver();
 
            var bt = new Button() {Parent = this, Text = "Start", Left = 100};
            bt.Click += (o, e) => Start();
 
            Application.Idle += new EventHandler(Application_Idle);
        }
 
        private void Start()
        {
            solver.Capacitor = new Capacitor(0.003, 0.03);//задаем площадь и расст между пластин конденсатора
            solver.E = 0.001;//задаем напряженность эл поля
 
            solver.Particles.Clear();
            solver.Particles.Add(new Particle(1, 0.001, 5));//создаем частицу
            solver.Particles.Add(new Particle(3, 0.002, 3));//создаем частицу
            solver.Particles.Add(new Particle(1.5, 0.0005, -1));//создаем частицу
        }
 
        void Application_Idle(object sender, EventArgs e)
        {
            solver.DoStep(dT);
            Invalidate();
        }
 
        protected override void OnPaint(PaintEventArgs e)
        {
            if (solver == null)
                return;
 
            var center = new Point(ClientRectangle.Left + 20, (ClientRectangle.Top + ClientRectangle.Bottom)/2);
            var gr = e.Graphics;
            gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
 
            using(var pen = new Pen(Color.Gray))
            {
                pen.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
                gr.DrawLine(pen, ClientRectangle.Left, center.Y, ClientRectangle.Right, center.Y);
                gr.DrawLine(pen, center.X, ClientRectangle.Bottom, center.X, ClientRectangle.Top);
            }
 
            if (solver.Particles.Count == 0)
                return;
 
            using (var pen = new Pen(Color.Blue, 3))
                gr.DrawLine(pen, (float)center.X, (float)(center.Y - Scale * solver.Capacitor.D / 2), (float)(center.X + Scale * solver.Capacitor.Width), (float)(center.Y - Scale * solver.Capacitor.D / 2));
 
            using (var pen = new Pen(Color.Red, 3))
                gr.DrawLine(pen, (float)center.X, (float)(center.Y + Scale * solver.Capacitor.D / 2), (float)(center.X + Scale * solver.Capacitor.Width), (float)(center.Y + Scale * solver.Capacitor.D / 2));
 
            foreach (var p in solver.Particles)
            {
                var x = (float) (center.X + Scale*p.X - 1);
                var y = (float) (center.Y - Scale*p.Y - 1);
                gr.FillEllipse(p.Q > 0 ? Brushes.Magenta : Brushes.Blue, x, y, 3, 3);
                if (p.Stop)
                {
                    gr.DrawString(string.Format("tg(a) = {0:0.0000} (теор. {1:0.0000})", p.Vy / p.Vx, solver.GetTheorE(p)), Font, Brushes.Red, x + 5, y + 5);
                }
            }
 
        }
    }
 
    /// Решатель
    class Solver
    {
        public List<Particle> Particles = new List<Particle>();//частицы
        public Capacitor Capacitor;//конденсатор
        public double E;//Напряженность поля
        public const double g = 9.8;//ускорение свободного падения
 
        //Щаг моделирования
        public void DoStep(double dt)
        {
            foreach(var p in Particles)
            if(!p.Stop)
            {
                var fY = p.Q * E;
                var aY = fY / p.M;//без учета силы тяжести, если нужно учитывать - нужно отнять g
                p.Vy += aY * dt;
                p.X += p.Vx * dt;
                p.Y += p.Vy * dt;
 
                if (p.X > Capacitor.Width)
                    p.Stop = true;
            }
        }
 
        /// Теоретический угол выхода частицы из конденсатора
        public double GetTheorE(Particle p)
        {
            return (p.Q/p.M)*Capacitor.Width*E/(p.Vx0*p.Vx0);
        }
    }
 
    /// <summary>
    /// Частица
    /// </summary>
    class Particle
    {
        public double X;//координата X (м)
        public double Y;//координата Y (м)
        public double Vx0;//начальная скорость  по X (м/с)
        public double Vx;//текущая скорость по X (м/с)
        public double Vy;//текущая скорость по Y (м/с)
        public double M;//масса (кг)
        public double Q;//заряд (кулон)
 
        public bool Stop = false;
 
        public Particle(double vx0, double m, double q)
        {
            this.X = 0;
            this.Y = 0;
            this.Vx0 = this.Vx = vx0;
            this.Vy = 0;
            this.M = m;
            this.Q = q;
        }
    }
 
    /// <summary>
    /// Конденсатор
    /// </summary>
    class Capacitor
    {
        public double Square;//площадь (м^2)
        public double D;//расст между пластинами (м)
 
        // Ширина пластин, считая, что конденсатор квадратный
        public double Width
        {
            get { return Math.Sqrt(Square); }
        }
 
        public Capacitor(double square, double d)
        {
            this.Square = square;
            this.D = d;
        }
    }
}
4
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
18.01.2015, 20:08
Цитата Сообщение от Storm23 Посмотреть сообщение
namespace WindowsFormsApplication231
кто-то очень любит винформы хД
1
167 / 106 / 30
Регистрация: 19.01.2013
Сообщений: 847
18.01.2015, 20:51
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Короче я не знаю чё вам там за прогу сделали, но вот мой вклад. Я нашёл решение данной задачи. Если ваш учитель не может решить простую задачу из ЕГЭ, ну это наводит на мысли....
Купите себе нормальный задачник ЕГЭ, покупайте сборники по олимпиадным задачам( если живёте в москве, то в холле любого вуза).
Купите себе хотя бы подержанный задачник рымкевича, эта задача именно от туда.
Могли бы уж хотя бы номер задачи скинуть, тут бы нашли.
Программу я не стану писать, уже сделали.

Не по теме:

Чтобы знать физику надо вкалывать каждый день решать, решать и решать.

Миниатюры
Программа, рассчитывающая задачу по молекулярной физике   Программа, рассчитывающая задачу по молекулярной физике   Программа, рассчитывающая задачу по молекулярной физике  

Программа, рассчитывающая задачу по молекулярной физике   Программа, рассчитывающая задачу по молекулярной физике   Программа, рассчитывающая задачу по молекулярной физике  

Программа, рассчитывающая задачу по молекулярной физике  
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2015, 20:51
Помогаю со студенческими работами здесь

Программа, рассчитывающая факториал числа
Добрый день. Не понимаю как работает код. Суть вот в чем: факториал находится по формуле n! = n ( n -1) * (n -2) ... *1 ( если n &gt;= 1)...

Как выучить все формулы по физике и понять, как их использовать, чтобы привести задачу к виду: нужная величина = формула
Буду скорее всего сдавать ЕГЭ именно по физике чтобы поступить в Харьков (ХНУРЭ) на фак. комп наук, ибо в Украине ЕГЭ по информатике нету ...

Программа по физике! Дипломный проект!
Привет ребята! Такая проблема: Нужно сделать программу по физике для первокурсников и 10-11 классов школ для решения задач по...

Программа по физике, как лучше сделать?
Хочу сделать программу, которая будет вычислять физические явления(Механика по физике). Столкнулся с такой проблемой. Вот что я сделал на...

Таблица, рассчитывающая календарь на любой год
Помогите пожалуйста Задание такое: 1. составить таблицу, которая рассчитывает календарь на любой год, т.е определяет день недели (в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru