Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
чм и maple эф.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.02 Mб
Скачать

Практическое задание 4.

Построить естественный кубический сплайн для точек

x:=[1,2,3,4,5,6,7,8,9,10,11];

y:=[1008,1010,1010,1014,1016,1020,1020,1022,1020,1018,1018];

План решения:

  1. Задать точки в виде списков x и y.

  2. С помощью команды Spline пакета CurveFitting построить кубический сплайн по этим точкам, обозначить его f.

  3. Для построения точек на графике необходимо задать их в виде списка [[x1,y1],[x2,y2],…,[xN,yN]]. Для этого можно использовать команду seq или $: xy:=[[x[i],y[i]]$i=1..nops(x)];

  4. Построить сплайн и точки в одних осях.

Занятие 4. Численное дифференцирование Приближение производной

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

Формула центральной разности порядка :

Предположим, что и что , тогда

При этом существует такое число , что

Ниже приведены несколько формул порядка

Другой способ нахождения производной:

Исходная функция аппроксимируется полином Лагранжа или Ньютона, и производная находится уже от интерполяционного полинома.

Анимация

в пакет plots включены команды создания анимационной графики на плоскости и пространстве: animate() и animate3d().Для "запуска" анимации следует выделить график, отображаемый после выполнения команд анимационной графики и воспользоваться кнопками управления из контекстной панели инструментов анимации.

Двумерная анимация

Двумерная анимация создается командой animate(), имеющей следующий синтаксис:

animate(y-expr, х=диапазон1, time=диалазон2);

Здесь первый параметр y-expr представляет выражение, зависящее от переменной х и параметра time, изменяемых в соответствующих диапазонах. В примере 4.31 создается анимационное отображение функции cos(x), которое представляет зависимость этой функции от параметра phi, являющегося фазой тригонометрической функции.

Пример. Двумерная анимация

> animate(cos(x+phi),x=0..2*Pi,phi=0..2*Pi, color=black, thickness=2);

Можно создавать анимацию и для параметрически заданной кривой, а также для кривой, заданной в системе координат, отличной от декартовой. Пример 4.32 демонстрирует создание анимации для параметрически заданного эллипса и для разворачивающейся спирали в полярной системе координат.

Пример. Анимации параметрической кривой и кривой в полярной системе координат

> animate([a*cos(t)^3,sin(t)^3,t=0..2*Pi] ,a=0..2);

animate(phi*t,phi=0..8*Pi,t=1..4,coords=polar,numpoints=200);

Трехмерная анимация

В пространстве анимация создается командой animate3d(), имеющей синтаксис, аналогичный синтаксису команды двумерной анимации animate():

animate3d(F(x,y,t),x=a..b,y=c..d,t=p..q,опции)

Здесь первый параметр F(x,y,t) представляет выражение от трех переменных или функцию двух первых независимых переменных, зависящую от параметра t. Остальные параметры задают диапазоны изменения независимых переменных и параметра. Опции, представленные параметром опции, как всегда задаются в виде уравнений и определяют вид отображаемого анимационного графика: оси, толщины линий и т. п.

Пример. Пространственная анимация

> F:=(x,y)->cos(t*x)*sin(t*y);

> animate3d(F(x,y),x=-1..1,y=-1..1, t=1..2,

axes=BOXED,shading=ZGRAYSCALE);

По умолчанию для представления пространственной анимации создается 8 кадров. Опцией frame всегда можно увеличить их число для получения более плавной картинки смены кадров.

Команда animate3d() может одновременно отображать изменение нескольких функций. В этом случае все они должны зависеть от одинаковых независимых переменных и одного и того же параметра и задаваться в виде списка.

Команда трехмерной анимации может создавать анимационные отображения и параметрически заданной поверхности. Пример 4.35 демонстрирует построение анимации параметрически заданной поверхности.

Пример. Пространственная анимация параметрически заданной кривой

> animate3d([x*u,t-u,x*cos(t*u)],x=1..3,t=1..4,u=2..4,

axes=BOXED,orientation=[-45,70]);