Расчёт значения БГП: методы и ошибки.

Рассуждения на различные темы

Модератор: AnLik

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #571 depths » 15 янв 2018, 12:19

Insider писал(а):
► Show Spoiler


depths писал(а):1/(m*n*r0)^2


r0 у вас кратно m.

k = r0/m = const - коэффициент кратности r0 к m
r0 = k*m
Подставляем вместо r0:
1/(m*n*k*m)^2 = 1/(k*n*m^2)^2 = 1/k^2 * 1/(n*m^2)^2

1/k^2 = const её убираем.
Остаетcя:
1/(n*m^2)^2

Извиняюсь я неправильно выразился.
r0 не кратно m, а расстояние между соседями пропорционально r0. Т.е. l=m*r0.
depths писал(а):1/(1*n*r0)^2 - одна штука,
1/(2*n*r0)^2 - две штука,
1/(3*n*r0)^2 - три штука,
....................
1/(m*n*r0)^2 - m штук.



Insider
Пользователь
Сообщения: 2550
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #572 Insider » 15 янв 2018, 18:46

depths писал(а):r0 не кратно m, а расстояние между соседями пропорционально r0. Т.е. l=m*r0.

Это одно и то же!
В любом случае у вас r0/m = const
Выражаем r0 через эту константу и m, подставляем в вашу формулу, как я делал выше.

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #573 depths » 15 янв 2018, 19:37

Давайте ещё подробнее распишу эти ряды:
depths писал(а):1/(1*n*r0)^2 - одна штука,
1/(2*n*r0)^2 - две штука,
1/(3*n*r0)^2 - три штука,
....................
1/(m*n*r0)^2 - m штук,

Первый ряд l=1*r0, сходится к пи^2/6 *1/r0^2.
Два вторых ряда (1/(n^2)*(2*r0)^2 ), (l=2*r0) их сумма = пи^2/6 *2/4*r0^2.
...........
Ряд 1/((n^2)*(m*r0)^2), l=m*r0. сумма = пи^2/6 *m/m^2*n^2*r0^2.
m меняется от единицы до беск.
Соответственно, общая сумма этих рядов расходится.

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #574 depths » 17 янв 2018, 15:01

А теперь рассмотрим пирамиду (плоскую).
Введем нумерацию рядов: вершина пирамиды это ноль, ниже два шара - один, три шара - два, ... и т.д. Обозначим нумерацию рядов через n. Кроме горизонтальных рядов есть ряды-лучи начинающиеся от вершины и проходящие последовательно через всю пирамиду. Первый от вершины круг определяет расстояние между соседями в луче. Это хорошо видно на раскрашенной цветными кружочками, Инсайдером, пирамиде. Проходя через всю пирамиду луч "выбивает" в следующих горизонтальных рядах круги. Например четвёртый ряд даёт начало только двум новым симметрично расположенным лучам (центральный луч и два крайних боковых ряда образовались ранее и в расчётах фигурируют только один раз, это и есть "выбивание"), круги из каждого луча будут лежать в 8, 12, 16, и т.д. рядах. Если в ряду есть свободные, не лежащие в ранее учтеных лучах круги, то такие круги дадут начало новым лучам, и расстояние между соседями в луче будет определяться номером этого ряда и углом наклона луча.
Нехитрая геометрия показывает, что расстояние между соседями в луче будет увеличиваться при увеличении номера ряда n. Повторюсь, что оно ещё и увеличивается при увеличении угла между центральной осью и лучом. Таким образом чем дальше мы спускаемся по рядам от вершины, тем больше становится расстояние между соседями в луче.

Insider
Пользователь
Сообщения: 2550
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #575 Insider » 17 янв 2018, 18:23

depths писал(а):Повторюсь, что оно ещё и увеличивается при увеличении угла между центральной осью и лучом.

Только этот угол не обязательно будет увеличиваться с n. Угол с увеличением n будет обязательно меняться но не обязательно увеличиваться. Иногда угол будет уменьшаться с увеличением n.
А в общем и целом вы правы. Но только это ничего не доказывает.

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #576 depths » 17 янв 2018, 20:08

Insider писал(а):
depths писал(а):Повторюсь, что оно ещё и увеличивается при увеличении угла между центральной осью и лучом.

Только этот угол не обязательно будет увеличиваться с n. Угол с увеличением n будет обязательно меняться но не обязательно увеличиваться. Иногда угол будет уменьшаться с увеличением n.
А в общем и целом вы правы. Но только это ничего не доказывает.

Доказательство чуть позже. Но если интересно самостоятельно кому-то подумать, присмотритесь к подсчёту количества лучей...

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #577 depths » 18 янв 2018, 07:41

Ещё раз заострю ваше внимание на лучах в пирамиде.
Вот графическое изображение:

0----0----0----0..... 1 шт.

0---0---0---0---0..... 2 шт.

0-----0-----0-----0...…. 2шт.

0----------0----------0----------0..... 2шт.

0-------------0-------------0-------------0..... 3шт.

0---------------0---------------0---------------0..... 4шт.
......................

0--------------------0--------------------0--------------------0..... 7шт.

И так далее.

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #578 depths » 18 янв 2018, 10:39

К сожалению, формулу подсчёта количества лучей вывести не удалось. Необходимо вычислять количество делителей числа, а такой формулы, кажется, нет.
Тем не менее есть некоторые наработки.
Во-первых известно сколько лучей даёт ряд с номером n (напомню n меняется от ноля до бесконечности):
Если номер ряда не является простым числом, то:
m = n-2 для чётных n;
m = n-1 для нечётных n.
Дополнительно надо вычитать ранее учтенные лучи.
Пример n=12: m=12-2-(2(3)-2(4)-(4(6)-2(3)=2(6)))=4. В скобочках как раз ранее учтенные лучи. Двенадцатый ряд даст начало всего четырем новым лучам. Пропорциональная зависимость от номера ряда очень сильно отсутствует.
Если номер ряда - простое число (делится только на себя и единицу), то все круги в таком ряду дадут начало новым лучам в соответствии с формулой m = n-1.

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #579 depths » 18 янв 2018, 13:21

Вытащим на сцену ряд рассмотренный ранее:
depths писал(а):...........
Ряд 1/((n^2)*(m*r0)^2), l=m*r0. сумма = пи^2/6 *m/m^2*n^2*r0^2.
m меняется от единицы до беск.
Соответственно, общая сумма этих рядов расходится.

Перепишу в более понятном виде общий член:

______ m_______
(m*r0)^2*n^2

r0 это радиус круга.
Правда напоминает наши лучи в пирамиде?

Но к лучам в пирамиде нужно добавить ещё и косинус угла между лучом и осью.

Мы поступим так. Угол добавим один и тот же, скажем равный нулю, тогда косинус будет единица. Все лучи как-бы сместим в центральную ось и просуммируем. Получится так:

______ k_______
(m*r0)^2*n^2

где k<m, причём k также пробегает значения от единицы до бесконечности. При таком условии (k<m) ряд сходящийся. Стало быть мы довольно строго доказали что сила от плоской пирамиды сходится?

Insider
Пользователь
Сообщения: 2550
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #580 Insider » 18 янв 2018, 13:35

depths писал(а):Стало быть мы довольно строго доказали что сила от плоской пирамиды сходится?

Я абсолютно не вижу никаких доказательств. Даже близко.

Начиная с этой писанины:
depths писал(а):Ряд 1/((n^2)*(m*r0)^2), l=m*r0. сумма = пи^2/6 *m/m^2*n^2*r0^2.

1/((n^2)*(m*r0)^2) = 1/(n^2) * 1/(m*r0)^2
Зеленая часть даст пи^2/6
Таким образом получится:
пи^2/6 * 1/(m*r0)^2
Как у вас получилась такая каша:
пи^2/6 *m/m^2*n^2*r0^2
Я так и не понял.
О том, что r0 - просто лишняя сущность, которая выражается через m и тут на хрен не нужна, я писал выше.
Тут вы ещё и l зачем-то впендюрили.
Пока я не понял ваших выводов, мягко выражаясь.

Kroll
Пользователь
Сообщения: 433
Зарегистрирован: 02 май 2015, 09:55
Репутация: 121

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #581 Kroll » 18 янв 2018, 18:04

Off Topic
depths писал(а):Вытащим на сцену ряд рассмотренный ранее:
...........
Ряд 1/((n^2)*(m*r0)^2), l=m*r0. сумма = пи^2/6 *m/m^2*n^2*r0^2.
m меняется от единицы до беск.
Соответственно, общая сумма этих рядов расходится.
Перепишу в более понятном виде общий член:

______ m_______
(m*r0)^2*n^2



Я на такую адовую дичь без слёз смотреть не могу. Ну пользуйте вы на конец уже этот ресурс: http://www.codecogs.com/eqneditor.

И делайте вот такие красивые формулки:

Изображение

Конструируете формулу в поле редактора, а под ним обновляется картинка, ссылку на которую вы копируете и вставляете сюда в сообщение.

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #582 depths » 19 янв 2018, 07:53

depths писал(а):Ряд 1/((n^2)*(m*r0)^2), l=m*r0. сумма = пи^2/6 *m/m^2*n^2*r0^2.

Тут я описался, как говорится, пардон.
Инсайдер, спасибо что заметили ошибку. Должно быть:
Вложения
1.gif
1.gif (571 байт) 717 просмотров

Insider
Пользователь
Сообщения: 2550
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #583 Insider » 19 янв 2018, 09:55

depths писал(а):Инсайдер, спасибо что заметили ошибку. Должно быть:

А куда исчез квадрат у m?

Вот ваш ряд:
1/((n^2)*(m*r0)^2)
У меня получается:
1/n^2 * 1/(m*r0)^2 = пи^2/6 * 1/(m*r0)^2 = пи^2/6 * 1/(m^2*r0^2)

И потом.
m меняется от 1 до бесконечности.
А вот как меняется ваше r0 не понятно.
Только не надо опять "на пальцах" рассказывать.
Все должно быть описано математически.

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #584 depths » 19 янв 2018, 10:46

Insider писал(а):А куда исчез квадрат у m?

Он сократился. По условиям задачи у нас m рядов суммируются.

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #585 depths » 19 янв 2018, 11:09

Думал все провели самостоятельные расчёт. Раз нет, то продолжу пояснения.
Итак, для пирамиды (плоской) имеем какое-то количество лучей k. Расстояния между соседними кругами в любом луче равны между собой, но меняются от луча к лучу. Я вывел формулу как считать это расстояние, но сейчас этого подсчета нам не надо. Для анализа достаточно знать что это расстояние увеличивается при увеличении номера горизонтального ряда в котором лежит первый от начала луча круг. Для каждого ряда мы получим несколько лучей с разными расстояниями между соседями. Чем дальше ряд от вершины пирамиды, тем больший пучок лучей будет получаться от этого ряда. Далее, для анализа, мы проведем упрощение. Заменим разные Ri для одного пучка одним Rn=n*r0*3^1/2, где n это номер ряда. Мы можем так сделать потому что сумма по всем лучам с фиксированными R для каждого n-го ряда будет больше чем с не фиксированным R. При таком Rn=n*r0*3^1/2 косинус угла будет в районе единицы. Другими словами, мы во всех лучах пучка расстояние между соседями привели к одной для этого пучка величине - уменьшили до наименее возможного расстояния. Это даст увеличение от расчётной суммарной силы от всех лучей пирамиды. Поэтому если докажем что такая сумма сходится, то значит сходится сумма с переменными расстояниями.
Для k лучей с расстояниями между соседями Rn=n*r0*3^(1/2), где n - это номер горизонтального ряда в пирамиде (n=0, 1, 2, 3....), а r0 - это радиус круга, имеем:
2.gif
2.gif (852 байт) 704 просмотра

Kroll
Пользователь
Сообщения: 433
Зарегистрирован: 02 май 2015, 09:55
Репутация: 121

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #586 Kroll » 19 янв 2018, 16:19

Off Topic
depths писал(а):Изображение

Вместо звёздочки умножения там есть точка в математических символах а блоке с пиктограммками ±∩∪⋅, ну или можно руками набрать "\cdot" . Индекс пишется просто как r_0, степень так же как r^0. А если вдруг в степени или индексе нужно больше чем один символ, то их все нужно заключить в фигурные скобки: r^{25} .


А вообще, господа админы, вы бы не хотели прикрутить формульный плугин к текстовому редактору форума? По хорошему это нужно latex бинарник и гифкорисовалку на сервере держать, но можно и просто внешний редактор забубенить вот такой http://www.codecogs.com/pages/forums/pagegen.php?id=1682.

Insider
Пользователь
Сообщения: 2550
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #587 Insider » 19 янв 2018, 18:43

depths писал(а):
Insider писал(а):А куда исчез квадрат у m?

Он сократился. По условиям задачи у нас m рядов суммируются.

Ну не знаю. У меня что-то m не сократился. Выше написал.

Insider
Пользователь
Сообщения: 2550
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #588 Insider » 19 янв 2018, 18:49

Из вашего описания мне не все понятно.
Но пока такой вопрос:
depths писал(а):Rn=n*r0*3^1/2

Что-то тут масло масляное, по моему скромному пониманию.
Rn - расстояние между соседями и
r0 - тоже расстояние между соседями.
Итого получается, расстояние между соседями равно расстоянию между соседями умноженному на некоторую величину.
Ну это насколько я вас понял.

Разве не так будет?
r0 = n*3^1/2

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #589 depths » 20 янв 2018, 12:10

Insider писал(а):Что-то тут масло масляное, по моему скромному пониманию.
Rn - расстояние между соседями и
r0 - тоже расстояние между соседями.
Итого получается, расстояние между соседями равно расстоянию между соседями умноженному на некоторую величину.
Ну это насколько я вас понял.

Не поняли.
depths писал(а):Для k лучей с расстояниями между соседями Rn=n*r0*3^(1/2), где n - это номер горизонтального ряда в пирамиде (n=0, 1, 2, 3....), а r0 - это радиус круга, имеем:

Вообще Rn=n*r0*3^(1/2) это расстояние между между горизонтальными рядами.

Insider
Пользователь
Сообщения: 2550
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #590 Insider » 20 янв 2018, 12:47

depths писал(а):
► Show Spoiler

Хорошо. Это понятно.
Но пока мне совсем непонятна ваша конечная формула?
Как вы её получили?
Откуда k в числителе?
Должно быть 1 по-моему.
Распишите формулу силы от каждого отдельного шара.
По-моему, она должна быть такова:
1/Rn^2 Учитывая ваши упрощения.
= 1/(n*r0*3^(1/2))^2 = 1/n^2 * 1/(r0*3^(1/2))^2 = Пи^2/6 * 1/(r0^2 * 3) = Пи^2/6 * 1/r0^2 * 1/3
Где 1/r0^2 * 1/3 - константа

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #591 depths » 20 янв 2018, 21:15

Insider писал(а):Откуда k в числителе?

k - это общее количество лучей в пирамиде. Каждый горизонтальный ряд кругов даёт начало какому-то количеству лучей. Каждый луч пронизывая всю пирамиду исключает из других рядов часть кругов, которые могли бы дать дополнительные лучи. Из-за этого общее количество лучей в пирамиде k недостаточно для образования бесконечной суммы.
Insider писал(а):Распишите формулу силы от каждого отдельного шара.

Я не считаю силу от каждого шара. Идея в том чтобы считать силу от луча, от каждого луча. Нам известно, что круги в лучах располагаются равномерно, и расстояние от круга к кругу задается расположением первого(следующего) от вершины круга.

Anrie01
Пользователь
Сообщения: 537
Зарегистрирован: 16 янв 2017, 23:26
Репутация: 231
Настоящее имя: Андрей
Откуда: Тольятти

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #592 Anrie01 » 21 янв 2018, 21:22

Вот расчет сил от ролупериметра сферы, состоящей из 816 рядов (больше места в памяти не хватает, а использовать винчестер пока не охота)
1. радиус сферы,
2. m - кол-во шаров, составляющих полупериметр сферы данного ряда
3. F - сила взаимодействия всех шаров с полупериметра на центральный шар

ряд 0, m = 0, F = 0
ряд 1, m = 5, F = 0.750005657356823
ряд 2, m = 19, F = 0.877221091704963
ряд 3, m = 43, F = 0.903067124907383
ряд 4, m = 109, F = 1.21579438039882
ряд 5, m = 175, F = 1.1053777320385
ряд 6, m = 239, F = 1.02079638482882
ряд 7, m = 375, F = 1.15390309800352
ряд 8, m = 505, F = 1.14920298713759
ряд 9, m = 601, F = 1.06282551760465
ряд 10, m = 789, F = 1.12145178572813
ряд 11, m = 961, F = 1.11437620143651
ряд 12, m = 1153, F = 1.11141872976036
ряд 13, m = 1337, F = 1.09103379061834
...
ряд 95, m = 78929, F = 1.10729010286965
ряд 96, m = 80991, F = 1.11320723125721
ряд 97, m = 82637, F = 1.1119505815588
ряд 98, m = 84181, F = 1.11069928975301
ряд 99, m = 86165, F = 1.11286743143575
ряд 100, m = 87847, F = 1.11124735772895
...
ряд 192, m = 324961, F = 1.10879352598618
ряд 193, m = 328939, F = 1.1112742592037
ряд 194, m = 332645, F = 1.11199097437695
ряд 195, m = 336329, F = 1.11295395922932
ряд 196, m = 338741, F = 1.10897822418951
...
ряд 810, m = 5820789, F = 1.11079382536902
ряд 811, m = 5831931, F = 1.10998359941206
ряд 812, m = 5851173, F = 1.11115101920457
ряд 813, m = 5866331, F = 1.11104834055481
ряд 814, m = 5874601, F = 1.11000442993769
ряд 815, m = 5895715, F = 1.11118660830308
ряд 816, m = 5909379, F = 1.11097174676072

Каждый полупериметр состоит из разного кол-ва шаров, поэтому сила не стабильна и все время меняется.
Вложения
График силы от полупериметра сферы до 816.JPG
График силы от полупериметра сферы до 816.JPG (52.58 КБ) 609 просмотров

Insider
Пользователь
Сообщения: 2550
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #593 Insider » 21 янв 2018, 22:15

Anrie01 писал(а):Вот расчет сил от ролупериметра сферы

Хотелось бы уточнить.
Полупериметр - это полусферическая оболочка из одного слоя шаров. Так?

Anrie01 писал(а):из 816 рядов

То есть, ряд - это один слой шаров в полусферической оболочке. Так?

Anrie01
Пользователь
Сообщения: 537
Зарегистрирован: 16 янв 2017, 23:26
Репутация: 231
Настоящее имя: Андрей
Откуда: Тольятти

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #594 Anrie01 » 21 янв 2018, 23:49

Insider писал(а):Полупериметр - это полусферическая оболочка из одного слоя шаров. Так?

да
Insider писал(а):То есть, ряд - это один слой шаров в полусферической оболочке. Так?

да, только не для плоской упаковки, а для сферы с двухслойной решеткой заполнения АВ, и расположением рядов вертикально, так сила больше чем при горизонтальной упаковке
Вложения
Решетка заполнения АВ и АВС.png
Решетка заполнения АВ и АВС.png (55.29 КБ) 607 просмотров
периметр полу круга 31 по вертикали.JPG
периметр полу круга 31 по вертикали.JPG (127.08 КБ) 607 просмотров

Insider
Пользователь
Сообщения: 2550
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #595 Insider » 22 янв 2018, 00:27

► Show Spoiler

В таком случае ваш результат соответствует моим ожиданиям - от каждой оболочки одинаковая сила.
То есть получаем расходящийся ряд 1+1+1+1... (прямая линия).
Это означает, что суммарная сила от бесконечной полусферы будет бесконечной, а не константой.

То, что вначале сила "скачет", это нормально. Вначале сферичность оболочек малая.
С ростом номера оболочки её сферичность всё более проявляется (оболочка всё более и более становится близка к сфере) и сила выравнивается.

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #596 depths » 22 янв 2018, 05:00

Anrie01 писал(а):Вот расчет сил от ролупериметра сферы, состоящей из 816 рядов (больше места в памяти не хватает, а использовать винчестер пока не охота)
1. радиус сферы,
2. m - кол-во шаров, составляющих полупериметр сферы данного ряда
3. F - сила взаимодействия всех шаров с полупериметра на центральный шар

Можете представить алгоритм расчёта? Как координаты каждого шара считаете?

Anrie01
Пользователь
Сообщения: 537
Зарегистрирован: 16 янв 2017, 23:26
Репутация: 231
Настоящее имя: Андрей
Откуда: Тольятти

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #597 Anrie01 » 22 янв 2018, 07:28

depths писал(а):Можете представить алгоритм расчёта? Как координаты каждого шара считаете?

Вечером скину

Anrie01
Пользователь
Сообщения: 537
Зарегистрирован: 16 янв 2017, 23:26
Репутация: 231
Настоящее имя: Андрей
Откуда: Тольятти

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #598 Anrie01 » 23 янв 2018, 01:30

Open "c:\1.txt" For Output As 1
- создаем на диске файл для сохранения результатов расчета

Dim p(1000, 2000)
- задаем таблицу для работы с полупериметром сферы

Let k = 816
- максимальное кол-во рядов для нашей сферы

Let st = 2
- расстояние между шарами

Let stx = st
Let sty = st * Cos(3.1415927 / 180 * 35.265)
Let stz = st * Cos(3.1415927 / 180 * 30)
- шаг перемещения по осям X, Y, Z

Let smxz = st / 2
- смещения координаты шара X для не четного ряда по оси Z

Let smxy = st / 2
- смещения координаты шара X для не четного ряда по оси Y

Let smzy = stz - st * Sin(3.1415927 / 180 * 35.265)
- смещения координаты шара Z для не четного ряда по оси Y

For a = 0 To k
- рассмотрим все ряды от 0 до 816

Let ky = Int(a * stx / sty) + 1
Let kz = Int(a * stx / stz) + 1
- из-за того что перемещения по всем осям имеют разные шаги, найдем максимальные ряды для осей Y и Z по отношению к оси X, для работы со сферой правильной формы

Let f = 0
Let m1 = 0
- обнулим силу и массу для нового расчета, формирующего полупериметр

Let x = st * a
Let s = 4 / 3 * 3.1415927 * x ^ 3
- вычислим радиус сферы, и её обьем

For rowy = 0 To ky
- рассмотрим все шары от центрального до границ сферы по оси Y (вертикальные слои), рассматриваем только половину сферы, потому что слои симметричные относительно плоскости XZ

Let Y1 = rowy * sty
- координата Y1 для шара равна номеру слоя, умноженному на шаг перемещения по оси Y

Let b = Y1 * Y1
- заранее вычислим квадрат координаты Y1 для всех шаров этого слоя

If rowy / 2 <> Int(rowy / 2) Then Let fly = 1 Else Let fly = 0
- если слой не четный, то установим метку FLY = 1 для дальнейших вычислений координат шара X1 и Z1 со смещением

For rowz = -kz To kz
- рассмотрим все шары в рядах по оси Z от одного края сферы, до противоположного. Ряды не являются симметричными относительно плоскости XY, поэтому просматриваем каждый ряд индивидуально

If rowz / 2 <> Int(rowz / 2) Then flz = 1 Else flz = 0
- если ряд не четный, то установим метку FLZ = 1 для дальнейших вычислений координат шара X1 со смещением

Let X1 = p(rowy, rowz + 1000) * stx + smxy * fly - smxz * flz
- координату шара X1 вычисляем используюя нашу таблицу, указав слой и ряд, умножаем ее на шаг перемещения по оси X, добавляем к ней смещения из-за не четности слоя Y и не четности ряда Z

Let z1 = rowz * stz + smzy * fly
- координата шара Z1 вычисляется умножением ряда на шаг перемещения по оси Z, добаляем к ней смещение из-за нечетности слоя Y

Let c = b + z1 * z1
- вычислим квадрат для координаты шара Z1, добавив к нему ранее расчитаный квадрат Y1

1 Let r = Sqr(X1 * X1 + c)
- находим расстояние от рассматриваемого шара (X1,Y1,Z1) до шара в центре сферы

If r <= x And X1 >= -1 Then
- если расстояние до шара меньше или равно радиусу сферы, то продолжаем расчет, в противном случае шар находится за периметром нашей сферы и нас пока не интересует

If X1 > 0 Then
- вторая проверка - нас интересуют только те шары, которые лежат правее от вертикальной плоскости нашей сферы

If Y1 > 0 Then Let m = 2 Else Let m = 1
- если шар находится выше оси X, то массу удваиваем, потому что сфера симметричная относительно плоскости XZ, и силу создают два одинаковых шара в верхней и нижней половинах полусфер

If r > 0 Then Let f = f + m * X1 / r / (r * r)
- если данный шар не является нашим центральным шаром в сфере, то вычисляем силу взаимодействия с ним, добаляем ее в общую копилку сил от полупериметра

Let m1 = m1 + m
- увеличиваем массу полупериметра на взаимодествующий шар (или 2 шара для слоев выше оси X)

End If
- окончание блока второй проверки

Let p(rowy, rowz + 1000) = p(rowy, rowz + 1000) + 1
- поскольку данный шар в таблице слоев и рядов только что нами был рассмотрен, то увеличиваем его на 1 для следующего расчета

Let X1 = X1 + stx
- увеличиваем координату X1 на шаг перемещения по оси X

GoTo 1
- и переходим к рассмотрению следующего шара в этом слое и в этом ряду до тех пор, пока встретившийся нам шар не выйдет за полупериметр нашей сферы

End If
- окончание блока проверки шаров на нахождение в радиусе сферы

Next rowz, rowy
- переходим к рассмотрению следующего ряда, а после следующего слоя сферы

Print #1, Str(a), Str(m1), Str(f)
- полученный результат вычислений сохраняем в файл - ряд(a), масса(m1), сила(f)

Next a
- переходим к расчету для следующего полупериметра сферы

Close
- закрываем файл с результатами

depths
Пользователь
Сообщения: 1202
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 71
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #599 depths » 23 янв 2018, 11:28

Работу вы проделали огромную. Восхищаюсь!
Поясните вот эти формулы:
Anrie01 писал(а):Let stx = st
Let sty = st * Cos(3.1415927 / 180 * 35.265)
Let stz = st * Cos(3.1415927 / 180 * 30)
- шаг перемещения по осям X, Y, Z

Anrie01
Пользователь
Сообщения: 537
Зарегистрирован: 16 янв 2017, 23:26
Репутация: 231
Настоящее имя: Андрей
Откуда: Тольятти

Re: Расчёт значения БГП: методы и ошибки.

Сообщение #600 Anrie01 » 23 янв 2018, 15:45

St - это расстояние между шарами
Stx - расстояние между шарами для оси X (горизонтальная ось)
Sty - расстояние между шарами в слоях Y (вертикальная ось)
Stz - расстояние между шарами в рядах Z (ось уходящая от нас в глубь экрана)

В каждом слое Y (в плоскости XZ), три шара образуют равносторонний треугольник со сторонами St = 2, и углом между ними 60°. Поэтому Stx = St, а Stz = St * Cos (30°). И эти шаги одинаковые для каждого ряда для всей сферы.
Шарик в следующем слое (верхнем) провалиться в ямку, образованную телами этих трёх шаров. Его высота над нижним рядом будет Sty = St * Cos (35.265°) и этот шаг для каждого слоя одинаковый для всей сферы.
Поскольку решетка заполнения двухслойная, то третий слой так же провалиться в ямку между трёх шаров, но при этом его координаты по X и Z вернутся на свои мести.
То есть смещение по осям X и Z происходит только для нечетных слоёв по оси Y.
Вычислим это смещение.
Для оси X оно равно половине шага Smxy = St \ 2
А вот для координаты Z смещение будет равно Smzy = Stz - St * Sin (35.265°)


Вернуться в «Рассуждения»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость

Вход  •  Регистрация