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

Рассуждения на различные темы
Insider
Пользователь
Сообщения: 2491
https://www.youtube.com/watch?v=pOfik9PN3Rw
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

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

Сообщение Insider »

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

Это одно и то же!
В любом случае у вас r0/m = const
Выражаем r0 через эту константу и m, подставляем в вашу формулу, как я делал выше.
depths
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

Давайте ещё подробнее распишу эти ряды:
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
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

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

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

Сообщение Insider »

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

Только этот угол не обязательно будет увеличиваться с n. Угол с увеличением n будет обязательно меняться но не обязательно увеличиваться. Иногда угол будет уменьшаться с увеличением n.
А в общем и целом вы правы. Но только это ничего не доказывает.
depths
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

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

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

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

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

Сообщение depths »

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

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
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

К сожалению, формулу подсчёта количества лучей вывести не удалось. Необходимо вычислять количество делителей числа, а такой формулы, кажется, нет.
Тем не менее есть некоторые наработки.
Во-первых известно сколько лучей даёт ряд с номером 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
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

Вытащим на сцену ряд рассмотренный ранее:
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
Пользователь
Сообщения: 2491
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

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

Сообщение Insider »

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
Пользователь
Сообщения: 501
Зарегистрирован: 02 май 2015, 09:55
Репутация: 147

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

Сообщение Kroll »

[offtopic]
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.

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

[align=center]Изображение[/align]

Конструируете формулу в поле редактора, а под ним обновляется картинка, ссылку на которую вы копируете и вставляете сюда в сообщение.[/offtopic]
depths
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

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

Тут я описался, как говорится, пардон.
Инсайдер, спасибо что заметили ошибку. Должно быть:
Вложения
1.gif
1.gif (571 байт) 1730 просмотров
Insider
Пользователь
Сообщения: 2491
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

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

Сообщение Insider »

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
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

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

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

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

Сообщение depths »

Думал все провели самостоятельные расчёт. Раз нет, то продолжу пояснения.
Итак, для пирамиды (плоской) имеем какое-то количество лучей 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 байт) 1717 просмотров
Аватара пользователя
Kroll
Пользователь
Сообщения: 501
Зарегистрирован: 02 май 2015, 09:55
Репутация: 147

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

Сообщение Kroll »

[offtopic]
depths писал(а):Изображение

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


А вообще, господа админы, вы бы не хотели прикрутить формульный плугин к текстовому редактору форума? По хорошему это нужно latex бинарник и гифкорисовалку на сервере держать, но можно и просто внешний редактор забубенить вот такой http://www.codecogs.com/pages/forums/pagegen.php?id=1682.[/offtopic]
Insider
Пользователь
Сообщения: 2491
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

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

Сообщение Insider »

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

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

Ну не знаю. У меня что-то m не сократился. Выше написал.
Insider
Пользователь
Сообщения: 2491
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

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

Сообщение Insider »

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

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

Разве не так будет?
r0 = n*3^1/2
depths
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

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
Пользователь
Сообщения: 2491
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

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

Сообщение Insider »

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

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

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

Хорошо. Это понятно.
Но пока мне совсем непонятна ваша конечная формула?
Как вы её получили?
Откуда 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
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

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

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

Я не считаю силу от каждого шара. Идея в том чтобы считать силу от луча, от каждого луча. Нам известно, что круги в лучах располагаются равномерно, и расстояние от круга к кругу задается расположением первого(следующего) от вершины круга.
Anrie01
Пользователь
Сообщения: 952
Зарегистрирован: 16 янв 2017, 23:26
Репутация: 404
Настоящее имя: Андрей
Откуда: Тольятти

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

Сообщение Anrie01 »

Вот расчет сил от ролупериметра сферы, состоящей из 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 КБ) 1622 просмотра
Insider
Пользователь
Сообщения: 2491
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

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

Сообщение Insider »

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

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

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

То есть, ряд - это один слой шаров в полусферической оболочке. Так?
Anrie01
Пользователь
Сообщения: 952
Зарегистрирован: 16 янв 2017, 23:26
Репутация: 404
Настоящее имя: Андрей
Откуда: Тольятти

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

Сообщение Anrie01 »

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

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

да, только не для плоской упаковки, а для сферы с двухслойной решеткой заполнения АВ, и расположением рядов вертикально, так сила больше чем при горизонтальной упаковке
Вложения
Решетка заполнения АВ и АВС.png
Решетка заполнения АВ и АВС.png (55.29 КБ) 1620 просмотров
периметр полу круга 31 по вертикали.JPG
периметр полу круга 31 по вертикали.JPG (127.08 КБ) 1620 просмотров
Insider
Пользователь
Сообщения: 2491
Зарегистрирован: 08 окт 2016, 11:47
Репутация: 576

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

Сообщение Insider »

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

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

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

То, что вначале сила "скачет", это нормально. Вначале сферичность оболочек малая.
С ростом номера оболочки её сферичность всё более проявляется (оболочка всё более и более становится близка к сфере) и сила выравнивается.
depths
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

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

Можете представить алгоритм расчёта? Как координаты каждого шара считаете?
Anrie01
Пользователь
Сообщения: 952
Зарегистрирован: 16 янв 2017, 23:26
Репутация: 404
Настоящее имя: Андрей
Откуда: Тольятти

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

Сообщение Anrie01 »

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

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

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

Сообщение Anrie01 »

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
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

Работу вы проделали огромную. Восхищаюсь!
Поясните вот эти формулы:
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
Пользователь
Сообщения: 952
Зарегистрирован: 16 янв 2017, 23:26
Репутация: 404
Настоящее имя: Андрей
Откуда: Тольятти

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

Сообщение Anrie01 »

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°)
depths
Пользователь
Сообщения: 1239
Зарегистрирован: 30 апр 2015, 22:17
Репутация: 74
Настоящее имя: Алексей Лебедев
Откуда: Екатеринбург
Контактная информация:

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

Сообщение depths »

Вы не пробовали сделать проверку формул?
Например можно по этим формулам построить сферу и посмотреть все ли шарики на своих местах.
Ответить

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

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