2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Анимация в Maple
Сообщение11.05.2019, 10:55 


03/02/16
19
Добрый день!
Возникла следующая проблема с построением анимации в пакете Maple. Эта проблема возникла при создании графических материалов для одного из учебных курсов. Рассмотрим следующий пример (взятый со справки)
Код:
with(plots):
ball := proc(x,y) plots[pointplot]([[x,y]],color=blue,symbol=solidcircle,symbolsize=40) end proc:
animate(ball, [t, sin(t)], t = 0 .. 4*Pi, scaling = constrained, frames = 100);

В этом примере создается круг заданного размера (ball), а потом с помощью команды animate() создается анимация движения этого круга по обычному синусу. В принципе, в команде animate(), можно указать любую кривую.
Теперь собственно проблема. Если кривая, вдоль которой строится движение этого круга, задана аналитически (формулами), то никаких проблем нет. Но у меня эта кривая задана таблично (численное решение дифференциального уравнения) и я не могу придумать, как реализовать анимацию в данном случае.
В общем, я могу сделать аппроксимацию или интерполяцию для полученной таблицы значений функции, но меня интересует, можно ли сделать это сразу для табличной функции. Буду благодарен за помощь или наводку где об этом можно почитать.

 Профиль  
                  
 
 Re: Анимация в Maple
Сообщение11.05.2019, 12:21 


11/07/16
686
Вопрос нечеко сформулирован: какими средствами численно решается ОДУ? как представлена таблица? Пожалуйста, ответьте для модельного примера $y''(x)=-y(x),\, y(0)=0,\,y'(0)=1$.

 Профиль  
                  
 
 Re: Анимация в Maple
Сообщение11.05.2019, 22:25 


03/02/16
19
Markiyan Hirnyk
Markiyan Hirnyk в сообщении #1392304 писал(а):
какими средствами численно решается ОДУ?

Я думаю, что в данном случае это не важно. Это может быть, например, метод Ейлера или его модификации, или любой другой. Встроенные решатели Maple не используются.
Markiyan Hirnyk в сообщении #1392304 писал(а):
как представлена таблица?

Результат - это матрица размера $n \times 2$, где $n$ - это количество шагов. Ниже привожу код для вашего примера. Уравнение заменяем системой
Код:
with(linalg):
with(plots):
a := 0: b := 1: n := 100: dx := (b-a)/n: Rez := matrix(n+1, 2, []): z := 1:
Rez[1, 1] := 0: Rez[1, 2] := 0:
for i from 2 to n+1 do
Rez[i, 1] := evalf(Rez[i-1, 1]+dx):
Rez[i, 2] := evalf(Rez[i-1, 2]+dx*z):
z := evalf(z-dx*Rez[i-1, 2]):
end do:

В коде введены переменные: $[a;b]$ - отрезок, на котором ищем решение, $dx$ - шаг, $Rez$ - матрица, в которой будет записан результат.

 Профиль  
                  
 
 Re: Анимация в Maple
Сообщение12.05.2019, 07:26 


11/07/16
686
Увы,
Код:
Rez;
Rez

 Профиль  
                  
 
 Re: Анимация в Maple
Сообщение12.05.2019, 12:04 


03/02/16
19
Markiyan Hirnyk
Не понял?

 Профиль  
                  
 
 Re: Анимация в Maple
Сообщение12.05.2019, 13:36 


11/07/16
686
Ваш код не производит матрицу, только печатает ее элементы. С таким результатом неудобно работать.

 Профиль  
                  
 
 Re: Анимация в Maple
Сообщение12.05.2019, 17:34 
Заслуженный участник


12/07/07
4134
Донецк, Украина
NVV в сообщении #1392299 писал(а):
но меня интересует, можно ли сделать это сразу для табличной функции.
В этом случае (как описано в справке Maple) параметр анимации t должен быть списком значений:
    animate(plotcommand, plotargs, t=L, options)
    Parameters:
    plotcommand — Maple procedure that generates a 2-D or 3-D plot;
    plotargs — list of arguments to the plot command;
    t — name of parameter on which the animation is made;
    a, b — real constants giving the range of the animation;
    L — list of values;
    options — (optional) equation(s) of the form option=value; specify options for the animate command or the plot command.

NVV в сообщении #1392425 писал(а):
Результат - это матрица размера $n \times 2$, где $n$ - это количество шагов...
Код:
> animate(ball, [Rez[t, 1], Rez[t, 2]], t = [seq(i, i=1..n+1)], scaling = constrained, frames = 100, view=[0..1, 0..0.9]);
[В Classic Worksheet Maple 15 анимация выполняется. Maple 7 такой синтаксис не поддерживает. В Maple 15 пакет linalg и тип matrix считаются устаревшими (deprecated). Вместо linalgLinearAlgebra; вместо matrixMatrix. С устаревшими пакетами в 15 все работает, но заставляет гадать: зачем это в современном учебном курсе.]

 Профиль  
                  
 
 Re: Анимация в Maple
Сообщение12.05.2019, 22:30 


03/02/16
19
Markiyan Hirnyk в сообщении #1392513 писал(а):
Ваш код не производит матрицу, только печатает ее элементы. С таким результатом неудобно работать.

Я не понял, что значит "не производит матрицу". Результатом работы указанного кода будет матрица Rez. Или я неправильно понял ваше сообщение.
GAA
Спасибо. Ваш код сработал даже в новом Maple 2018.
GAA в сообщении #1392567 писал(а):
В Maple 15 пакет linalg и тип matrix считаются устаревшими (deprecated). Вместо linalg — LinearAlgebra; вместо matrix — Matrix.

А это мой недосмотр. Старая привычка дает о себе знать. Спасибо за замечание.
GAA в сообщении #1392567 писал(а):
С устаревшими пакетами в 15 все работает, но заставляет гадать: зачем это в современном учебном курсе.

Так этот курс не рассчитан на использование именно Maple. Я Maple использую для создания вспомогательных материалов к курсу (на лекции красивые анимашки показать).

 Профиль  
                  
 
 Re: Анимация в Maple
Сообщение12.05.2019, 23:15 
Заслуженный участник


12/07/07
4134
Донецк, Украина
NVV в сообщении #1392642 писал(а):
Я не понял, что значит "не производит матрицу". Результатом работы указанного кода будет матрица Rez. Или я неправильно понял ваше сообщение.
Чтобы посмотреть матрицу нужно ввести eval(Rez) или print(Rez). Если использовать тип Matrix, то краткую информацию можно получить, просто набрав
> Rez;
Вложение:
Комментарий к файлу: Maple 15
Matrix.PNG
Matrix.PNG [ 2.12 Кб | Просмотров: 1182 ]
А при использовании типа matrix возвращаемый результат (см. сообщение Markiyan Hirnyk) будет выглядеть так же, как и в случае неинициализированной матрицы переменной.
(В общем, это всё небрежности в формулировках. У всех в этой ветке их хватает.)


NVV, по теме есть вопросы/дополнения?

 Профиль  
                  
 
 Re: Анимация в Maple
Сообщение13.05.2019, 07:31 


03/02/16
19
GAA
Спасибо за пояснения. Никогда не задумывался над этим аспектом работы с матрицами в Maple.
GAA в сообщении #1392655 писал(а):
NVV, по теме есть вопросы/дополнения?

Да, вопрос есть, но он не связан с предыдущим, но связан с созданием анимации. Собственно вопрос такой, можно ли сделать покадровую анимацию в Maple? То есть, вот есть у меня последовательность (список?, массив?) графиков. Можно ли из этого набора сделать анимацию?

 Профиль  
                  
 
 Re: Анимация в Maple
Сообщение13.05.2019, 09:22 


11/07/16
686
Вот один из вариантов
Код:
restart; with(plots); a := 0; b := 1; n := 100; dx := (b-a)/n; Rez := matrix(n+1, 2, []); z := 1; Rez[1, 1] := 0; Rez[1, 2] := 0; for i from 2 to n+1 do Rez[i, 1] := evalf(Rez[i-1, 1]+dx); Rez[i, 2] := evalf(dx*z+Rez[i-1, 2]); z := evalf(-dx*Rez[i-1, 2]+z) end do:
A:=[seq(pointplot([Rez[i, 1], Rez[i, 2]], view = [0 .. 1, 0 .. 1]), i = 1 .. 101)]:
display(A, insequence = true);

При выполнении анимации нажимаете правую кнопку (NextFrame).

 Профиль  
                  
 
 Анимация в Maple
Сообщение14.05.2019, 23:14 


03/02/16
19
Markiyan Hirnyk
Спасибо. Все работает.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: maxal, Toucan, PAV, Karan, Супермодераторы



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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group