Warning: include(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include_once(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82

Warning: include_once(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82
Сравнение времен вычислений | Учебники

Главная > Maple 15 > Сравнение времен вычислений


Сравнение времен вычислений

Сравнение времен вычислений
Теперь определим время, необходимое для вычисления функции/(л:) в 1000 точек, используя первоначальное интегральное определение, и сравним его с временем, требующимся для схемы MinimaxApprox в виде непрерывной дроби. Так как наше приближение будет давать только 6 точных цифр, мы также потребуем 6 точных цифр и от интегрального представления функции:
> Digits :=б: St :=time():
> seq( evalf(f(i/250.0)), i = 1..1000 ):
> oldtime := time() — st;
oldtime-81.805
В процессе вычислений с использованием представления рациональной функции в виде непрерывной дроби иногда требуется внести несколько дополнительных цифр точности для страховки. В данном случае достаточно внести две дополнительные цифры. Итак, новое время вычислений:
> Digits := 8: st := tirae():
> seq( MinimaxApprox(i/250.0), i = 1..1000 ):
> newtime :» time()- st;
newtime:= .694 
Ускорение вычисления при аппроксимации есть:
> SpeedUp := oldtime/newtime;
SpeedUp:=U7.S7464
Мы видим, что процедура вычислений, основанная на MinimaxApprox, выполняется почти в 120 раз быстрее процедуры с использованием исходного интегрального определения. Это просто феноменальный успех, полностью оправдывающий время, потерянное на предварительные эксперименты по аппроксимации и ее оптимизации! Разумеется, при условии, что вы будете применять эту аппроксимацию многократно.

Преобразование в код Фортрана или С
Один из поводов разработки эффективной аппроксимации для вычисления математической функции заключается в создании библиотек подпрограмм для популярных языков программирования высокого уровня, таких как Фортран или С. В Maple имеются функции преобразования на любой из этих языков. Например, мы можем преобразовывать формулу для минимаксной аппроксимации в код Фортрана.

Итак, нами показано, что правильный выбор аппроксимации для сложной функции обеспечивает уменьшение времени ее вычисления более чем на два порядка (!) при весьма приличной точности в б верных знаков и при использовании для вычислений минимального числа арифметических операций. Применение при этом средств системы Maple 15 позволяет генерировать разложения в различные ряды, быстро вычислять рациональные аппроксимации функций и выполнять преобразования в различные специальные формы, сочетая это с мощными средствами интерактивной работы и графической визуализации, в частности с построением графиков функции и кривых ошибок при разных видах аппроксимации. Все это обеспечивает идеальную среду для решения таких задач.
Моделирование физических явлений
Расчет траектории камня с учетом сопротивления воздуха
Вы хотите метнуть камень в огород вашего вредного соседа? Разумеется, во время его отсутствия. Давайте промоделируем эту ситуацию, предположив два актуальных случая: дело происходит на Луне и на Земле. В первом случае сопротивления воздуха (как и его самого) нет, а в другом — сопротивление воздуха есть и его надо учитывать. Иначе камень упадет в ваш огород, а не в огород соседа!
Итак, пусть подвернувшиеся под руку камни с массой 500 и 100 г брошены под углом 45° к горизонту со скоростью Vo = 20 м/с. Найдем их баллистические траектории, если сила сопротивления воздуха Fтр=А*V, где А=0,1 Н*с/м. Сравним их с траекториями, получающимися без учета сопротивления воздуха.
Начнем с подключения пакета plots, нужного для визуализации данной задачи:
> restart;
> with(plots):
Warning, the name changecoords has been redefined
Составим параметрические уравнения для проекций скорости на оси координат:
> Vox:=Vo*cos(a1pha):Voy:=Vo*sin(alpha):
Vox:= Focos(a)
Voy :=Vo sin(a)
Мы рассматриваем два случая: камень массой 500 г и камень массой 100 г. Поскольку для каждого случая мы предусматриваем расчет в двух вариантах (с учетом сопротивления воздуха и без такого учета), то мы должны составить 4 системы дифференциальных уравнений (ДУ). Каждая система состоит из двух ДУ второго порядка и вид этих систем известен из курса физики. Ниже представлено задание этих систем ДУ (для первой системы дан вывод ее вида):

Зададим исходные числовые безразмерные данные для расчета:

Выполним решение заданных систем ДУ:

Создадим графические объекты — результаты решения систем ДУ:

Построим графики траекторий для первого случая:

Графики траекторий полета камня с массой 500 г представлены.
Теперь построим графики траекторий для второго случая:
> display({a3,a4,t1},title=’Tpaeкт. полета тела массой 100 г, labels=[x.у], labelfont=[TIMES.ROMAN,14]):
Они представлены.

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

Статьи по теме

Комментарии запрещены.