Анализ движения материальной точки в гравитационном поле с помощью программы Microsoft Excel Текст научной статьи по специальности «Физика»
Analysis of the Mass point Motion in the Gravitational Field by means of Microsoft Excel Program
The article explore a case of using Microsoft Excel program for solving the task of the mass point motion in the gravitational feld .
Текст научной работы на тему «Анализ движения материальной точки в гравитационном поле с помощью программы Microsoft Excel»
Информационные технологии в естествознании
Анализ движения материальной точки в гравитационном поле с помощью программы Microsoft Excel
В статье разобран случай применения программы Microsoft Excel для анализа задачи движения материальной точки в поле силы тяжести.
Ключевые слова: поле; сила тяжести; материальная точка; движение; постоянное ускорение; двухмерное движение.
Постановка задачи о движении материальной точки общеизвестна [1]. Сущность ее заключается в следующем: над «плоской» поверхностью Земли задано ускорение свободного падения g, а из точки с некоторыми начальными координатами (х0, у0) в начальный момент времени t = 0 приводится в движение материальная точка с заданной начальной скоростью g, направленной под углом а к горизонту.
Обычно в таких задачах требуется найти параметры траектории движения точки и положение точки на траектории в любой момент времени. Решение задачи обычно ищется в прямоугольной системе координат (х, у), в которой движение материальной точки раскладывается на два движения — вдоль оси х, как зависимость координаты х от времени (т.е. х (t)), так и по оси у — как у (t). При этом предполагается, что действие гравитационной силы выражается через ускорение свободного падения g, которое направлено вертикально вниз.
В такой постановке указанные функции х = х (t) и у = у (t) имеют следующий вид [1]:
х (t) = x0 + v01 cos a,
Обычно данную задачу в рамках указанных формул решают при конкретных значениях параметров, входящих в (1), что является довольно ограниченным анализом характера движения материальной точки. Однако формулы (1) можно считать как функциями всех величин х0, у0, v0, t, а, g и исследовать эти функции методами математического анализа. При этом удобно и наглядно указанный ана-
лиз можно проводить с использованием вычислительных и графических средств Microsoft Excel.
Действительно, исследуем траекторию движения материальной точки в зависимости от а и у0 при фиксированных отдельных из указанных параметров. Для этого из уравнения (1) необходимо исключить время, после чего получим функциональную зависимость у = у (х) следующего вида:
У = Уо + (Х — Х0) t g а — g (Х Х(2 . (2)
Для проведения расчетов в программе Microsoft Excel необходимо для задаваемых параметров х0, у v0, а, g выделить ячейки, а именно А1 для х А2 дляу0, A3 для v0, A4 для а, А5 для g и рассчитать траекторию. Все численные расчеты будем проводить в системе СИ, поэтому размерности в таблицах Microsoft Excel не будем указывать. Углы будем измерять в градусах.
Для того чтобы построить траекторию, надо найти наибольшую дальность полета х . Чтобы найти х можно аналитически решить уравнение (2), а можно
max max А J А \ s?
найти его численно, используя программу «Поиск решения» в Microsoft Excel. Положим, х0 = 0, так как согласно виду уравнения (2) это приведсг только к сдвигу траектории по оси х на величину х0. Внетем конкретные величины х0 = 0 метрам, у0 = 10 метрам, v0 = 15 м/с, а = 30° и g = 9,8 м/с2 в соответствующие ячейки Microsoft Excel. Теперь продемонстрируем расчсг численный х Для численно-
го решения (2) при у = 0 (высота точки падения) введeм в ячейку D3 формулу (2), а в ячейку F1 — начальное приближение х . Его можно выбрать любым положи-
тельным числом больше нуля.
D1 £ =A2+F1*TAN(A4*3,14/180)-A5 *F1A2/(2*A3A2*COS(A4*3,14/180)A2)
А В с D Е F G H 1
Рис. 1. Ввод данных в программу «Поиск решения».
Далее воспользуемся программой «Поиск решения» из вкладки «Данные».
Данные Рецензирование Вид Разработчик Надстройки
Iг] Анализ данных Поиск решения
Рис. 2. Запуск программы поиск решения.
Запустив программу «Поиск решения» нажатием вкладки «Поиск решения», вызовем меню возможных вариантов решения задачи, выберем вариант, когда ищется решение при условии, что выражение в ячейке D3 равно нулю, то есть высота точки падения равна нулю, а в ячейке F1 будет найдено значе-
Установить целевую ячейку:
Равной: 0 максимальному значению
Многопотоковый пересчет в Excel
Многопотоковый пересчет листов впервые появился в Microsoft Office Excel 2007. Вы можете настроить до 1024 одновременных потоков, которые Excel будет использовать при пересчете, независимо от количества процессоров или ядер на компьютере.
С каждым потоком связаны затраты ресурсов операционной системы, поэтому не настраивайте больше потоков, чем нужно.
Если компьютер имеет несколько процессоров или ядер, за эффективное распределение потоков между процессорами отвечает операционная система.
Обзор многопотокового пересчета листов в Excel
Excel пытается определить части цепочки вычисления, которые можно пересчитывать одновременно в разных потоках. Ниже в качестве примера приведено очень простое дерево (где «x ← y» означает, что y зависит только от x).
Рис. 1. Параллельные вычисления в разных потоках
Когда выполнено вычисление для ячейки A1, можно последовательно выполнить вычисление для ячеек A2 и A3 в одном потоке, в то время как в другом потоке последовательно выполняются вычисления для B1 и C1. Это возможно при условии, что все ячейки потокобезопасны.
Термин «Потокобезопасная ячейка» обозначает ячейку, содержащую только потокобезопасные функции. Список потоконебезопасных елементов см. в Какие элементы в Excel считаются потокобезопасными, а какие — нет.
Большинство используемых на практике книг содержат гораздо более сложные деревья зависимостей, чем этот пример. Кроме того, время пересчета ячейки не известно до завершения вычисления и может варьироваться в широких пределах в зависимости от аргументов функции. Чтобы получить наилучшие результаты, Excel пытается улучшить порядок вычисления после каждого вычисления, пока это возможно.
Excel использует один основной поток, чтобы запускать или выполнять:
- встроенные команды;
- команды XLL;
- функции интерфейса диспетчера надстроек XLL (функция xlAutoOpen и т. д.)
- пользовательские команды Microsoft Visual Basic для приложений (Microsoft Visual Basic for Applications, VBA), часто именуемые макросами;
- пользовательские функции VBA;
- встроенные потоконебезопасные функции листа (см. список в следующем разделе);
- пользовательские команды и функции листа макросов XLM;
- функции и команды надстроек COM;
- функции и операторов в выражениях условного форматирования;
- функции и операторы в определениях определенных имен, используемых в формулах листа;
- принудительную оценку выражения в поле редактирования формулы с помощью клавиши F9.
Вычисления по всем формулам листа, независимо от того, потокобезопасны функции или нет, выполняются в основном потоке, если не настроено использование нескольких потоков в Excel. Когда пользователь указывает, что следует использовать несколько потоков, дополнительные потоки используются для потокобезопасных ячеек. Обратите внимание, что основной поток также может использоваться для потокобезопасных ячеек, когда это целесообразно для балансировки нагрузки.
Стоит отметить, что Excel не выполняет более одной команды за раз, поэтому необязательно применять те же меры предосторожности, что и при написании потокобезопасных функций, например использовать локальную память потока и критические секции.
Какие элементы в Excel считаются потокобезопасными, а какие — нет
Excel считает покобезопасными только следующие элементы:
- Все унарные и двоичные операторы в Excel.
- Почти все встроенные функции листа, начиная с Excel 2007 (см. список исключений).
- Функции надстроек XLL, которые явным образом зарегистрированы как потокобезопасные.
Потоконебезопасные встроенные функции листа:
Указанные ниже действия считаются небезопасными:
- пользовательские функции VBA;
- пользовательские функции надстроек COM;
- пользовательские функции листа макросов XLM;
- функции надстроек XLL, не зарегистрированные как потокобезопасные.
Вывод: следующие операции и функции потоконебезопасны и дают сбой при вызове из функции XLL, зарегистрированной как потокобезопасная.
- Вызов информационных функций XLM, например xlfGetCell (GET.CELL).
- Вызов xlfSetName (SET.NAME) для определения или удаления внутренних имен XLL.
- Вызов потоконебезопасных пользовательских функций с помощью xlUDF.
- Вызов функции xlfEvaluate для выражений, содержащих потоконебезопасные функции или определенные имена, определения которых содержат потоконебезопасные функции.
- Вызов функции xlAbort для сброса условия останова.
- Вызов функции xlCoerce для получения значения невычисленной ссылки на ячейку.
Функции листа XLL не могут вызывать команды C API, например xlcSave, независимо от того, зарегистрированы они как потокобезопасные или нет.
Если функции XLL, объявленные потокобезопасными, не могут вызывать информационные функции XLM или ссылаться на невычисленные ячейки, Excel не допускает регистрацию функций XLL, зарегистрированных в качестве эквивалентов листа макросов, как потокобезопасных. Поэтому получить значение невычисленной ссылки на ячейку с помощью xlCoerce не удастся из-за ошибки xlretUncalced. Вызов информационной функции XLM приведет к ошибке xlretFailed. Другие указанные ранее точки завершают работу с кодом ошибки, упомянутым в C API Excel: xlretNotThreadSafe.
Функции обратного вызова для C API — потокобезопасные:
Единственное исключение — функция xlSet, которая является эквивалентом команды и, поэтому, не может вызываться из функций листа.
Функцию листа XLL можно зарегистрировать в Excel как потокобезопасную. Это говорит Excel о том, что функция может вызываться безопасно и одновременно в нескольких потоках, хотя необходимо убедиться, что это действительно так. Вы можете дестабилизировать Excel, если функция, зарегистрированная как потокобезопасная, ведет себя небезопасно.
Регистрация функций XLL как потокобезопасных
Ниже приведены правила, которые необходимо соблюдать разработчикам при создании потокобезопасных функций.
- Не вызывайте ресурсы в других библиотеках DLL, которые могут быть потоконебезопасными.
- Не осуществляйте потоконебезопасные вызовы с помощью C API или COM.
- Защищайте ресурсы, которые могут использоваться одновременно несколькими потоками, с помощью критических секций.
- Используйте локальную память потока для хранения данных потока и заменяйте статические переменные в функциях локальными переменными потока.
В Excel действует дополнительное ограничение: потокобезопасные функции невозможно зарегистрировать как эквивалентные функциям листа макросов, поэтому они не могут вызывать информационные функции XLM и получать значения непересчитанных ячеек.
Состязание за память
Многопоковые системы должны решать две основные проблемы:
- Как защитить память, с которой выполняется чтение или на которую выполняется запись, с помощью нескольких потоков.
- Как создать память, связанную с выполняемым потоком и доступную только ему, и получить к ней доступ.
В операционной системе Windows и пакете Windows SDK есть средства для их решения: критические секции и API для локального хранилища потока (TLS) соответственно. Дополнительные сведения см. в статье Управление памятью в Excel.
Первая проблема может возникнуть, например, когда двум функциям листа (или двум параллельно выполняемым экземплярам одной функции) нужен доступ к глобальной переменной в проекте DLL (например, для ее изменения). Помните, что эта переменная может быть скрыта в глобально доступном экземпляре объекта класса.
Вторая проблема может возникнуть, например, когда функция листа объявляет статическую переменную или объект в коде функции. Компилятор C/C++ создает только одну копию, которую используют все потоки. Это означает, что один экземпляр функции может изменить значение, а другой (в другом потоке) может использовать ранее заданное значение.
Примеры применения MTR
Любой XLL-модуль, который экспортирует функции листа, может использовать многопотоковый пересчет (MTR) в Excel, если эти функции не должны выполнять потоконебезопасные действия. Это позволяет Excel максимально быстро выполнять пересчет в книгах, в которых они используются, и поэтому MTR рекомендуется применять всегда.
В частности, MTR имеет большое влияние на время пересчета книг, которые вызывают пользовательские функции (UDF), которые в свою очередь вызывают внешние процессы для получения желаемых результатов. Рассмотрим функцию UDF, вызывающую удаленный сервер, который может обрабатывать большое количество запросов одновременно, и книгу, содержащую большое количество вызовов такой функции. Если пересчет книги однопотоковый, следующий вызов UDF и удаленного сервера не может начаться, пока не завершится предыдущий. В результате возможность сервера обрабатывать сразу несколько вызовов не используется. Если пересчет книги многопотоковый, Excel может совершать несколько вызовов одновременно или в быстрой последовательности.
Если в Excel и на сервере настроено использование одинакового количества потоков (N), при этом топология дерева зависимостей книги позволяет это, общее время пересчета можно сократить до значения, которое стремится к 1/N. Это возможно, даже если у клиентского компьютера (на котором обрабатывается книга) всего один процессор, особенно если время вызова сервера невелико по сравнению с временем обработки вызова сервером.
С каждым дополнительным потоком связаны затраты ресурсов операционной системы. Поэтому оптимальное количество потоков, которое должно использовать приложение Excel, для каждой книги, сервера и клиентского компьютера определяется опытным путем.
Например, рассмотрим однопроцессорный компьютер под управлением Excel и книгу, содержащую 1000 ячеек. Он вызывает определяемую пользователем функцию, которая, в свою очередь, вызывает один или несколько удаленных серверов. Предположим, что 1000 ячеек не зависят друг от друга, поэтому Excel не нужно ждать завершения одного вызова перед вызовом следующего. (Некоторое ослабление этого ограничения возможно, не затрагивая этот пример.) Если серверы могут обрабатывать 100 запросов одновременно, а Excel настроен на использование 100 потоков, время выполнения может быть сокращено до 1/100, где используется только один поток. Накладные расходы, связанные с выделением вызовов в Excel для каждого потока и операционной системой, которая управляет 100 потоками, означает, что на практике сокращение будет не столь велико. Здесь также существует неявное предположение, что сервер хорошо масштабируется, и запрос на обработку 100 задач одновременно не повлияет на время выполнения отдельных задач.
Пример практического применения, при котором этот способ дает отличные результаты, — использование методов Монте-Карло, а также выполнение других ресурсоемких задач, которые можно разделить на более мелкие подзадачи и обработать на серверах.
Рекомендации по использованию служб Excel
Службы Excel поддерживают загрузку, вычисление и обработку электронных таблиц Excel на сервере. Пользователи могут получить доступ к электронным таблицам и работать с ними, используя стандартные средства браузера.
Пользовательские функции служб Excel созданы с использованием управляемого кода Microsoft .NET Framework и доступны благодаря сборке .NET. XLL-модули не поддерживаются в службах Excel. Ресурс UDF сервера управляемого кода может вызывать XLL-модуль для доступа к его функциональности, что обеспечивает одинаковую функциональность при работе с книгами, загруженными на сервер и локальный компьютер.
Чтобы функции XLL были доступны, необходимо упаковать их в сборку .NET, преобразующую аргументы и возвращаемые значения из собственных типов данных в управляемые типы данных .NET Framework, и вызывающую функции XLL. Программа-оболочка .NET экспортирует один ресурс UDF сервера для каждой функции XLL, к которой обращается сборка. Дополнительное требование: все вызываемые таким образом функции XLL должны быть потокобезопасными. Так как функции XLL не регистрируются так, как в клиенте Excel, сервер и программа-оболочка .NET не могут обеспечить их потокобезопасность. За это несет ответственность разработчик XLL.
См. также
- Пересчет в Excel
- Управление памятью в Excel
- Доступ к коду XLL в Excel
- Понятия, связанные с программированием для Excel
- Справочник по функциям API SDK XLL для Excel
Изменение пересчета формулы, итерации или точности в Excel
Для эффективного использования формул необходимо ознакомиться с тремя ключевыми понятиями.
Вычисление — это процесс расчета по формулам и последующего отображения значений результатов в ячейках, содержащих формулы. Во избежание ненужных вычислений, которые забрать время и замедлить работу компьютера, Microsoft Office Excel автоматически пересчитывает формулы только при изменении влияющих на формулу ячеек. Это является стандартной процедурой при первом открытии книги и ее редактировании. Однако тем, как и когда Excel будет пересчитывать формулы, можно управлять.
Итерации — это повторяющийся пересчет листа до тех пор, пока не будет выполнено определенное числовое условие. Excel не может автоматически вычислить формулу, которая прямо или косвенно ссылается на ячейку, содержащую формулу. Это называется циклической ссылкой. Если формула ссылается на одну из собственных ячеек, необходимо определить, сколько раз она должна пересчитываться. Циклические ссылки могут выполняться бесконечно. Тем не менее, вы можете сами задать предельное число итераций и относительную погрешность.
Точность — это показатель степени сходимости вычислений. Excel хранит и выполняет вычисления с точностью 15 значащих цифр. Однако существует возможность изменить точность вычислений, так что Excel при пересчете формул будет использовать для вычислений не хранимое, а отображаемое значение.
Изменение при пересчете листа или книги
Во время вычислений можно выбирать команды и выполнять ввод чисел или формул. Для выполнения команд или других действий вычисления прерываются, а затем возобновляются снова. Если книга содержит большое число формул либо листы содержат таблицы данных или функции, автоматически пересчитываемые при каждом пересчете книги, процесс вычислений может занять значительное время. Он также может быть длительным, если листы содержат связи с другими листами или книгами. Можно изменить способ выполнения вычислений, установив параметр пересчета вручную.
Важно: Изменение любого из этих параметров влияет на все открытые книги.
- На вкладке Файл нажмите кнопку Параметры и выберите категорию Формулы. В Excel 2007 нажмите кнопку Microsoft Office, выберите пункт Параметры Excel, а затем выберите категорию Формулы .
- Выполните одно из указанных ниже действий.
- Для пересчета всех зависимых формул при каждом изменении значения, формулы или имени в разделе Параметры вычислений в группе Вычисления в книге выберите пункт Автоматически. Это — способ вычислений по умолчанию.
- Чтобы пересчитать все зависимые формулы, кроме таблиц данных , каждый раз, когда вы вносите изменения в значение, формулу или имя, в разделе Параметры вычисления в разделе Вычисление книги щелкните Автоматически, кроме таблиц данных.
- Для отключения автоматического пересчета и выполнения пересчета открытых книг только при явном требовании (с помощью клавиши F9) в разделе Параметры вычислений в группе Вычисления в книге выберите параметр Вручную.
Примечание: При выборе параметра Вручную Excel автоматически устанавливает флажок Пересчитывать книгу перед сохранением. Если сохранение книги занимает много времени, для его экономии снимите флажок Пересчитывать книгу перед сохранением.
Для ручного пересчета всех открытых книг, включая таблицы данных, и обновления всех открытых листов диаграмм на вкладке Формулы в группе Вычисление нажмите кнопку Пересчет.
Совет: Многие из этих параметров можно изменять и вне диалогового окна Параметры Excel. Откройте вкладку Формулы и в группе Вычисления щелкните элемент Параметры вычислений, а затем — Выполнять автоматически.
Примечание: Если лист содержит формулу, связанную с непересчитанным листом, и эта связь обновляется, появится сообщение о том, что исходный лист полностью не пересчитан. Для обновления связи с текущим значением, записанном в исходном листе, даже если оно неверно, нажмите кнопку ОК. Для прекращения обновления связи и использования предыдущего значения, полученного из исходного листа, нажмите кнопку Отмена.
Вычисление потоков в эксель как отключить
Argument ‘Topic id’ is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
ООО «Планета Эксел» ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |