Education

Teaching and learning about math, Maple and MapleSim

 

Now in English   KozlovaAV.PDF

 

In Russian

Авторский опыт использования математической системы Maple и других компьютерных инструментов в школьном научном обществе

 Арина Козлова

E-mail: k_arina99@mail.ru; МБОУ «Школа  № 57» Кировского района г.Казани, 10 класс

 Научный руководитель –

Гибадуллина Алсу, учитель математики МБОУ «Школа  № 57» Кировского района г.Казани;

е-mail: gialid@mail.ru

 Аннотация. Рассмотрен авторский опыт использования математической системы Maple и других компьютерных инструментов для создания научно-популярных проектов физико-математического направления в рамках школьного научного общества.

 

На протяжении более 10 лет наша школа наряду с различными информационными технологиями работает с системой компьютерной математики Maple. Один из аспектов этой деятельности  –  научное общество учащихся «ГЕОДРОМчик», научным руководителем которого является учитель математики Гибадуллина А.И. Направления деятельности ученического научного общества – знакомство с пакетом Maple; освоение компьютерных инструментов, позволяющих работать с графикой, видео, создавать интерактивные меню; работа над индивидуальными научно-популярными проектами и создание авторских тематических электронных журналов, содержащих элементы научного исследования и математического моделирования. Компьютерная математика находит все более широкое применение – от научных исследований до продукции масскультур. Математическое моделирование проникло и в сферу создания рисунка, и в киноиндустрию. Изучение и использование учащимися нашего школьного общества символьных систем, в частности Maple, – это попытка приобщиться к современной мировой культуре компьютерного математического моделирования.

В данной статье описывается личный опыт автора, как одного из членов школьного НОУ.  

Знакомство с математической системой Maple началось с работы над проектом «Построение анимированной математической 3D-модели открывающейся книги» в 6-ом классе. Этот проект представляет собой создание пространственного анимированного изображения открывающейся книги средствами аналитической геометрии. В среде Maple была построена поэтапная программа получения этого изображения (таблицы 1 и 2). 

Таблица 1. Фрагмент программы получения анимированного изображения. 

> restart:

Подключение к дополнительным библиотекам

> with(plots):

> with(plottools):

Построение одной из страниц:

s1:= polygon([[0,0.01,0],[1,0.01,0],[1,1,0],[0,1,0]], thickness=1,color=orange):

Визуализация совокупных элементов книги:

display(k11,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,k0,k27, title="KNIGA",scaling=constrained);

Поворот и анимация открывания обложки:

r_k11:=rotate(k11,10*Pi/9,[[0,0,0.29],[1,0,0.29]]):

plots[display](r_k11,kn_1,k0,scaling=constrained);

> anm:=seq(rotate(k11,t*Pi/9,[[0,0,0.29],[1,0,0.29]]),t=0..10):

> anim:=plots[display](anm,insequence=true):

> plots[display](kn_1,anim,scaling=constrained);

 

a)    

c)   

 

e)   

b)   

d)   

f)   

 Рис. 1. Кадры анимации книги

Следующий проект, выполненный в среде Maple совместно с Нигометзяновой Эльзой в 7-ом классе, – короткометражный мультфильм «Колобок в лесу».

a)      b)   

 Рис. 2. Кадры анимации мультфильма

В 8-ом классе велась работа по техническому переводу сайта компании Waterloo Maple Inc. [3]. Как известно, такой перевод имеет свои особенности, которые не предусмотрены в школьной программе по изучению английского языка, поэтому опыт такой работы способствует совершенствованию владения английским языком.

В 9-ом классе началась работа над электронным журналом по космологии «Вселенная: теория и факты». Черные дыры Вселенной – один из самых загадочных и любопытных для человека объектов. Их изучение привело к интересу к астрофизике вообще. Знакомство с понятием черной дыры неизбежно вынудило изучать строение Вселенной и ее геометрии [9, 10, 11, 12]. Пришлось осмысливать сложнейшие фундаментальные понятия, теории, а также элементы высшей математики [1, 5, 6, 7, 8]. Чтобы хотя бы попытаться понять огромный объем, казалось бы, беспорядочной информации, нужно было ее анализировать и систематизировать. И тогда возникла идея проекта – авторского электронного журнала. Тем более складывается парадоксальная ситуация: астрофизика бурно развивается, проникая практически во все сферы нашей жизни, а предмета астрономии в школе нет. Поэтому такой проект мог бы восполнить этот досадный пробел и помочь школьникам – и не только – в познании Вселенной. Журнал имеет следующие разделы: Вселенная, черные дыры, белые дыры, глоссарий, теории, неевклидовы геометрии, видео-опыты, интересные факты, ссылки, использованные ресурсы. Один из разделов журнала составляют Maple-разработки, в частности, визуализированная модель искривления пространства.

Далее приводится Maple-программа (табл. 2) построения визуализации деформации плоскости под шаром определенного размера. Используются библиотеки <plots> и <plottools> пакета.

 Таблица 2.  Maple–программа визуализации деформации плоскости. 

Комментарий

Команда и результат

Функция глубины "ямы"

( a - ширина "ямы", b - глубина )

f:=(x,a,b)->(-b*exp(-x^2/a^2));

 

Вводим параметры:

h - влияет на размеры тела-шарика и связывает их с шириной "ямы" ;

 k - влияет на диапазон площади вокруг "ямы"

h:=1:  k:=1:

 

Задание параметрическое прямой на поверхности (плоскости)

L0:=(m,n)->plot3d([0,r,f(r,m,n)], phi = -2*Pi ..2*Pi, r = -10k*h..10+k*h, scaling=CONSTRAINED,

numpoints=10000, color=blue,thickness=4):

Задание параметрическое поверхности (плоскости) путем кручения прямой

P0:=(m,n)->plot3d([r*cos(phi),r*sin(phi),f(r,m,n)], phi= 0..2*Pi,r=-8k*h..8+k*h, scaling=CONSTRAINED, numpoints=3000, style=POINT, color=blue):

Задание анимации искривления прямой

L:=plots[display](seq(L0(h,i),i=0..10+k*h), insequence=true):                    l:=plots[display](L,insequence=true):

Задание анимации искривления плоскости

p:=plots[display](seq(P0(h,i),i=0..10+k*h), insequence=true):

 p:=plots[display](P,insequence=true):

Задание анимация шарика ( тела, обладающего массой )

 

with(plottools):sp:=seq(sphere([0,0,-i-1.5*f(h,h,h)], f(h,h,h), style=HIDDEN,color=red),i=0..10+k*h):     

s:=plots[display](sp,insequence=true,

scaling=CONSTRAINED):

Совмещение всех компонентов модели визуализации

plots[display](p,s,l,scaling=CONSTRAINED);

 При h:=1:  k:=1:

 1)      2)      3)   

4)      5)      6)   

 

При h:=5:  k:=1:

7)      8)      9)   

Рис. 3. Кадры анимации при заданных параметрах.

Долго подбиралась функция глубины "ямы". Наконец, была найдена – это стало понятно после просмотра лекции А.Линде, где говорится об экспоненциальных процессах [13].

Меняя только параметры h и k (задающие размеры шара и ширины «ямы») и прокручивая программу снова, меняется и визуализация. Надо заметить, что построена всего лишь математическая модель визуализации, а не самого процесса.

Этот раздел предполагается пополнять новыми разработками, выполненными в среде Maple.

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

 Заключение.

В течение 4-х лет занятий в научном обществе авторские проекты были представлены на различных сайтах, конкурсах, конференциях, форумах федерального и международного уровней:

  • сайт еxponenta.ru в разделе студенческих работ [4];
  • Конкурс исследовательских и творческих работ «Нобелевские надежды КНИТУ»
  • Республиканский конкурс «Арт-дебют»
  • V Международная ассамблея школьников (участие и публикация) [2]
  • Всероссийский Горчаковский форум в г.Санкт-Петербург
  • Поволжская научной конференция учащихся им. Н.И.Лобачевского
  • Всероссийский фестиваль «Нескучная наука» в г.Санкт-Петербург
  • Пост н.р. Гибадуллиной А.И. на сайте компании Maplesoft  http://www.mapleprimes.com/users/Alsu

  Использованная литература

 [1] Матросов А.В. Maple 6: Решение задач высшей математики и механики: Практическое руководство. – СПб.: БХВ – Петербург, 2001 г. – 528 с.

[2] V Международная Интеллектуальная Ассамблея школьников: сборник научно-исследовательских работ / Отв. ред. М. В. Волкова – Чебоксары: НИИ педагогики и психологии, 2012 – 136с. (с. 44–45)

[3] Сайт компании Maplesoft. – Режим доступа:  http://www.maplesoft.com

[4] Сайт <exponenta.ru> / Архив студенческих работ – Режим доступа:

http://www.exponenta.ru/educat/referat/XXIVkonkurs/5/index.asp

[5] Высшая математика: Учеб. Пособие для студентов пед. ин-тов по спец. 2120 «Общетехн. дисциплины и труд» / Г. Луканкин, Н. Мартынов, Г. Шадрин, Г. Яковлев; Под. ред. Г.Н. Яковлева. – М.: Просвещение, 1988. – 431 с.: ил.

[6] Справочник по высшей математике / М. Я. Выгодский. – М.: ООО «Издательство Астрель»: ООО «Издательство АСТ», 2002. – 992 с.: ил.

[7] Математический словарь высшей школы: Общ. часть/В. Т. Воднев, А. Ф. Наумович, Н.Ф. Наумович; Под ред. Ю.С. Богданова. – 2-е изд. – М.:Изд-во МПИ, 1988 – 527 с., ил.

[8] Толковый математический словарь. Основные термины: около 2500 терминов. – М.: Рус. яз., 1989. – 244 с., 186 ил.

[9] Открываем неевклидову геометрию. Кн. для внеклас. чтения учащихся 9-10 кл. сред. шк. – М.: Просвещение, 1988. – 126 с.: ил. – (Мир Знаний).

[10] Геометрия: Учебник для вузов. – СПб.: Издательство «Лань», 2003. – 416 с., ил. – (Учебники для вузов. Специальная литература)

[11] Основания геометрии: Учебн. пособие для вузов. – М.: Наука. Гл. ред. физ.-мат. лит., 1987. – 288 с.

[12] Обзорные лекции по геометрии к государственному экзамену по математике, Х семестр, курс лекций с примерами решений задач (в помощь выпускнику), проф. Ю.Г. Игнатьева. Программный продукт BIBLIO профессора Ю.Г. Игнатьева, Казань 2002 г.

[13] Видеозапись лекции Андрея Дмитриевича Линде, Стэнфордский университет (США), профессор «Многоликая Вселенная», прямая ссылка: http://elementy.ru/lib/430484

Ibragimova Evelina, 6 class,
school № 57, Kazan

The manual with examples
( templates for the solution of )

The solution of problems on simple interest

 

> restart:
> with(finance);

[amortization, annuity, blackscholes, cashflows, effectiverate,

futurevalue, growingannuity, growingperpetuity, levelcoupon,

perpetuity, presentvalue, yieldtomaturity]

Team futurevalue (the first installment, rate, period) - the total calculation for a given down payment, interest rate, payments and number of periods.

Example 1. To the Bank account, the income of which is 15% per annum, has made 24 thousand rubles. How many thousands of rubles will be in this account after a year if no transactions on the account will not be carried out? (The answer: 27.60 thousand rubles.)

> futurevalue(260,0.40,1);

364.00

> evalf(1000/216);

> 364*3;

1092

> u:=fsolve(presentvalue(1e6,x,1250)=950,x)*950;

u := 5.303626495

>

Team presentvalue (future amount, rate, period) - the calculation of the initial input to obtain a specified final amount at an interest rate of charges and the number of periods.

Example 2. How much you need to put money in the Bank today, so that when the rate of 27% per annum have in the account after 10 years 100000 thousand rubles? (The answer: 9161.419934 rubles.)

> presentvalue(680,-0.20,1);

850.0000000

 

The solution of problems in compound interest

The solution of problems 
Using commands <futurevalue> и <presentvalue >
> restart;
> with(finance):
Direct task
> futurevalue(,0.,);
`,` unexpected
The inverse problem
> presentvalue(,0.,);
`,` unexpected

I. Case with the same interest rate every period

Using the universal formula F = P*(1+r)^n; , where:
F - the future value (final amount).
P - the initial payment (current amount).
r - the interest rate period.
n - the number of periods.
This formula for the case with the same interest rate every period

> restart:
The task of the formula
> y:=F=P*((1+r)^n):
> y;

n
F = P (1 + r)

The job parameters are known quantities
The interest rate

> r:=;
`;` unexpected
The number of years (periods)
> n:=3;

n := 3

The initial payment (present value)
> P:=;
`;` unexpected
The final amount
> F:=2.16;

F := 2.16

The solution of the equation - the calculation of unknown values (in decimal form)
> `Unknown`;fsolve(y);

Unknown


0

>


II. The case of different interest rates for each period

Formula An = A*(1+1/100*p1)*(1+1/100*p2)*(1+1/100*p3); ... %?(1+1/100*pn); , where
An - the final amount
A - the initial payment (current amount at the moment)
p1, p2, p3, .... pn - interest rate periods
n - the number of periods

> restart:
The task of the formula (need to be adjusted based on the number of periods)
> y:=An=A*(1+1/100*p1)*(1+1/100*p2)*(1+1/100*p3):
> y;

An = A (1 + 1/100 p1) (1 + 1/100 p2) (1 + 1/100 p3)

The task of the parameters of the known values
The initial payment (present value)
> A:=;
`;` unexpected
Interest rate periods
p1:=0.30;
p2:=0.10;
p3:=0.15;


p1 := .30


p2 := .10


p3 := .15

The final amount
> An:=;
`;` unexpected
The solution of the equation - the calculation of unknown values (in decimal form)
> `Unknown`;fsolve(y);

Unknown


0

>

 angl.FINANCE.mws

Ibragimova Evelina, 6th form,
school № 57, Kazan

 

     Matreshka.mws 

 

 

 

 Ibragimova Evelina, the 6th form

 school # 57, Kazan, Russia

The Units Converter

restart:
`Conversion formula`;
d:=l=n*m:
d;

                    Conversion formula
                    l = n m

m - shows how many minor units in one major one (coefficient)
`Coefficient`;
m:=1000;
                   Coefficient
                   m:=1000

n - the number of major units
n:=7/3;
                   n := 7/3

l - the number of minor units
l:=;

The result (the desired value)
solve(d);
                   7000/3
evalf(solve(d));
                   2333.333333

That is : there are 2333.3 (or 7000/3 ) minor units in 7/3 major units .

 

Other example

m - shows how many minor units in one major one (coefficient) 
`Coefficient`;
m:=4200;
                   Coefficient
                   m:=4200

n - the number of major units 
n:=;
                 
l - the number of minor units
l:=100;

                  l:=100

The result (the desired value)
solve(d);
                   1/42
evalf(solve(d));
                   0.02380952381

That is : there are 0.02 (or 1/42) major units in 100 minor units .

 

Another example

m - shows how many minor units in one major one (coefficient) 
`Coefficient`;
m:=;
                   Coefficient

n - the number of major units 
n:=2;

                    n := 2
                 
l - the number of minor units
l:=200;

                  l:=200

The result (the desired value)
solve(d);
                   100
evalf(solve(d));
                  100

That is : Coefficient is 100 .

  The geometry of the triangle
  Romanova Elena,  8 class,  school 57, Kazan, Russia

       Construction of triangle and calculation its angles

       Construction of  bisectors
      
       Construction of medians
      
       Construction of altitudes


> restart:with(geometry):      

The setting of the height of the triandle and let's call it "Т"
> triangle(T,[point(A,4,6),point(B,-3,-5),point(C,-4,8)]);

                                  T

        Construction of the triangle
> draw(T,axes=normal,view=[-8..8,-8..8]);

Construction of the triangle АВС

> draw({T(color=gold,thickness=3)},printtext=true,axes=NONE);     
Calculation of the distance between heights А and В - the length of a side АВ

> d1:=distance(A,B);

                           d1 := sqrt(170)

        
        Calculation of the distance between heights В and С - the length of a side ВС
> d2:=distance(B,C);

                           d2 := sqrt(170)

       The setting of line which passes through two points А and В
> line(l1,[A,B]);

                                  l1

       Display the equation of line l1
> Equation(l1);
> x;
> y;

                         -2 + 11 x - 7 y = 0

        The setting of line which passes through two points А and С
> line(l2,[A,C]);

                                  l2

       Display the equation of line l2
> Equation(l2);
> x;
> y;

                          56 - 2 x - 8 y = 0

         The setting of line which passes through two points В and С
> line(l3,[B,C]);

                                  l3

        Display the equation of line l3
> Equation(l3);
> x;
> y;

                          -44 - 13 x - y = 0

        Check the point А lies on line l1
> IsOnLine(A,l1);

                                 true

        Check the point А lies on line l1
> IsOnLine(B,l1);

                                 true

        Calculation of the andle between lines l1 and l2
> FindAngle(l1,l2);

                              arctan(3)

        The conversion of result to degrees
> b1:=convert(arctan(97/14),degrees);

                                      97
                               arctan(--) degrees
                                      14
                     b1 := 180 ------------------
                                       Pi

        Calculation of decimal value of this angle
> b2:=evalf(b1);

                      b2 := 81.78721981 degrees

        Calculation of the andle between lines l1 and l3
> FindAngle(l1,l3);

                             arctan(3/4)

       The conversion of result to degrees
> b3:=convert(arctan(97/99),degrees);

                                      97
                               arctan(--) degrees
                                      99
                     b3 := 180 ------------------
                                       Pi

        Calculation of decimal value of this angle
> b4:=evalf(b3);

                      b4 := 44.41536947 degrees

       Calculation of the angle between lines l2 and l3
> FindAngle(l2,l3);

                              arctan(3)

       The conversion of  result to degrees
> b5:=convert(arctan(97/71),degrees);

                                      97
                               arctan(--) degrees
                                      71
                     b5 := 180 ------------------
                                       Pi

        Calculation of decimal value of  this angle
> b6:=evalf(b5);

                      b6 := 53.79741070 degrees

        Check the sum of all the angles of the triangle
> b2+b4+b6;

                         180.0000000 degrees

        Analytical information about the point А
> detail(A);
   name of the object: A
   form of the object: point2d
   coordinates of the point: [4, 6]
          Analytical information about the point В
> detail(B);
   name of the object: B
   form of the object: point2d
   coordinates of the point: [-3, -5]
          Analytical information about the point С
> detail(C);
   name of the object: C
   form of the object: point2d
   coordinates of the point: [-4, 8]

   The setting of heights of the triangle points A,B,C and let's call it "Т"

   with(geometry):
> triangle(ABC, [point(A,7,8), point(B,6,-7), point(C,-6,7)]):
        The setting of the bisector of angle А in triandle АВС
> bisector(bA, A, ABC);

                                  bA

        Analytical information about the bisector of angle А in the triandle
> detail(bA);
   name of the object: bA
   form of the object: line2d
   assume that the name of the horizonal and vertical                    axis are _x and _y
   equation of the line: (15*170^(1/2)+226^(1/2))*_x+(-13*226^(1/2)-170^(1/2))*_y+97*226^(1/2)-97*170^(1/2) = 0

        Construction of the triangle
> draw(ABC,axes=normal,view=[-8..8,-8..8]);

 Construction of the triangle ABC

> draw({ABC(color=gold,thickness=3)},printtext=true,axes=NONE);     

 Construction of the bisector of angle А

> draw({ABC(color=gold,thickness=3),bA(color=green,thickness=3)},printtext=true,axes=NONE);    

The setting of the bisector of angle В in the triangle АВС

> bisector(bB, B, ABC);

                                  bB

       Analytical information about the bisector of angle B in the triandle
> detail(bB);
   name of the object: bB
   form of the object: line2d
   assume that the name of the horizonal and vertical                    axis are _x and _y
   equation of the line: (-15*340^(1/2)-14*226^(1/2))*_x+(-12*226^(1/2)+340^(1/2))*_y+97*340^(1/2) = 0

         Construction of the bisector of angle В
>draw({ABC(color=gold,thickness=3),bA(color=green,thickness=3),bB(color=red,thickness=3)},printtext=true,axes=NONE);    



    The setting of the bisector of angle С in the triangle АВС

> bisector(bC, C, ABC);

                                  bC

        Analytical information about the bisector of angle С in the triangle
> detail(bC);
   name of the object: bC
   form of the object: line2d
   assume that the name of the horizonal and vertical                    axis are _x and _y
   equation of the line: (14*170^(1/2)-340^(1/2))*_x+(13*340^(1/2)+12*170^(1/2))*_y-97*340^(1/2) = 0

        Construction of the bisector of angle С
>draw({ABC(color=gold,thickness=3),bA(color=green,thickness=3),bB(color=red,thickness=3),bC(color=blue,thickness=3)},printtext=true,axes=NONE);  

 Calculation of the point of intersection of the bisectors and let's call it "О"

> intersection(O,bA,bB,bC);coordinates(O);

                                  O


     7 sqrt(85) - 3 sqrt(2) sqrt(113) + 3 sqrt(85) sqrt(2)
  [2 -----------------------------------------------------,
       sqrt(85) sqrt(2) + sqrt(2) sqrt(113) + 2 sqrt(85)

          -16 sqrt(85) - 7 sqrt(2) sqrt(113) + 7 sqrt(85) sqrt(2)
        - -------------------------------------------------------]
             sqrt(85) sqrt(2) + sqrt(2) sqrt(113) + 2 sqrt(85)

       Construction of the bisectors and  marking of the point of intersection  "О" in the triandle
>draw({ABC(color=gold,thickness=3),bA(color=green,thickness=3),bB(color=red,thickness=3),bC(color=blue,thickness=3),O},printtext=true,axes=NONE);
> restart:
> with(geometry):
       The setting of the heights of the triangle points A,B,C and let's call it "Т"
> point(A,7,8),point(B,6,-7),point(C,-6,7);

                               A, B, C

        Let's call "Т1"
> triangle(T1,[A,B,C]);

                                  T1

        Construction of "Т1"
> draw(T1(color=gold,thickness=3),axes=NONE,printtext=true);
  The setting of the median from the point В in the trianglemedian(mB,B,T1,B1);
> median(mb,B,T1);

                                  mB


                                  mb

        Construction of the median from the point В
> draw({T1(color=gold,thickness=3),mB(color=green,thickness=3),mb},printtext=true,axes=NONE);

The setting of the median from the point А in the trianglemedian(mA,A,T1,A1);
> median(ma,A,T1);

                                  mA


                                  ma

        Construction of the median from the point А
>draw({T1(color=gold,thickness=3),mB(color=green,thickness=3),mA(color=magenta,thickness=3),ma},printtext=true,axes=NONE);
The setting of the median from the point С in the trianglemedian(mC,C,T1,C1);
> median(mc,C,T1);

                                  mC


                                  mc

        Costruction of the median from the point С
>draw({T1(color=gold,thickness=3),mB(color=green,thickness=3),mA(color=magenta,thickness=3),mA,mC(color=maroon,thickness=3)},printtext=true,axes=NONE);




Calculation of the point of  intersection of the median and let's call it "О"

>intersection(O,ma,mb,mC);coordinates(O);

                                  O


                              [7/3, 8/3]

        Construction of medians and marking of the point of  intersection "О" in the triangle
>draw({T1(color=gold,thickness=3),mB(color=green,thickness=3),mA(color=magenta,thickness=3),mA,mC(color=violet,thickness=3),O},printtext=true,axes=NONE);
> restart:with(geometry):
> _EnvHorizontalName:=x:_EnvVerticalName=y:       The setting of the heights of the triangle points A, B, C  and let's call it "Т"
> triangle(T,[point(A,7,8),point(B,6,-7),point(C,-6,7)]);

                                  T

       Construction of the triangle
> draw(T,axes=normal,view=[-8..8,-8..8]);


The setting of the altitude in the triangle from the point Сaltitude(hC1,C,T,C1);
> altitude(hC,C,T);

                                 hC1


                                  hC

        Analytical information about the altitude hC from the point С in the triangle
> detail(hC);
   name of the object: hC
   form of the object: line2d
   assume that the name of the horizonal and vertical                    axis are _x and _y
   equation of the line: -99+_x+15*_y = 0

        Construction of the altitude from the point С
> draw({T(color=gold,thickness=3),hC1(color=green,thickness=3),hC},printtext=true,axes=NONE);     

  The setting of the altitude in the triangle from the point Аaltitude(hA1,A,T,A1);
> altitude(hA,A,T);

                                 hA1


                                  hA

        Analytical information about the altitude hA from the point А in the triangle
> detail(hA);
   name of the object: hA
   form of the object: line2d
   assume that the name of the horizonal and vertical                    axis are _x and _y
   equation of the line: -28-12*_x+14*_y = 0

        Construction of the altitude from the point А
>draw({T(color=gold,thickness=3),hC1(color=green,thickness=3),hA1(color=red,thickness=3),hA1},printtext=true,axes=NONE);       The setting of the altitude from the point В

> altitude(hB1,B,T,B1);
> altitude(hB,B,T);

                                 hB1


                                  hB

        Analytical information about the altitude hB from the point В in the triangle
> detail(hB);
   name of the object: hB
   form of the object: line2d
   assume that the name of the horizonal and vertical                    axis are _x and _y
   equation of the line: -71+13*_x+_y = 0

        Consruction of the altitude from the point В
>draw({T(color=gold,thickness=3),hC1(color=green,thickness=3),hA1(color=red,thickness=3),hB1(color=blue,thickness=3),hB1},printtext=true,axes=NONE);     
 Calculation of the point of intersection of altitudes and let's call it "О"

>intersection(O,hB,hA,hC);coordinates(O);

                                  O


                               483  608
                              [---, ---]
                               97   97

        Construction of altitudes and marking of the point of intersection "О" in the triangle
>draw({T(color=gold,thickness=3),hC1(color=green,thickness=3),hA1(color=red,thickness=3),hB1(color=blue,thickness=3),hB1,O},printtext=true,axes=NONE);




 

 

 

 

 

 

 

 

 

 

 

 

 

Maple T.A. MAA Placement Test Suite  2016 is now available. It leverages all the improvements found in Maple T.A. 2016, including:

  • A redesigned authoring workflow that makes it faster and easier to create and modify questions and assignments
  • A new content repository that makes it substantially easier to manage and search for content
  • New built-in connectivity options for integration with course management systems

To learn more, visit What’s New in Maple T.A. MAA Placement Test Suite 2016.

Jonny
Maplesoft Product Manager, Online Education Products

  Elena, Liya

  "Researching turkish song: the selection of the main element and its graphic transformations",

   Russia, Kazan, school #57

The setting and visualization of the melodic line of the song
> restart:
> with(plots):with(plottools):
> p0:=plot([[0.5,9],[1,7],[2,9],[4,11],[6,9],[7,11],[8,7],[10,9],[12,9],[14,9],[16,7],[16.5,9],[17,7],[18,9]],color=magenta):p1:=plot([[18,9],[20,11],[22,9],[23,11],[24,9],[26,11],[28,11],[29.5,8],[30,11],[32,9],[33.5,8],[34,9],[36,7],[37.5,5],[38,9],[40,7],[42,5],[44,5],[46,4],[47,5],[48,2],[50,4],[51,5],[51.5,4],[52,2],[54,4],[56,4],[56.5,5],[57,4],[58,5],[60,7],[62,5],[64,7],[66,5]],color=cyan):
> p2:=plot([[66,5],[68,5],[69,5],[70,4],[71,5],[71.5,4],[72,2],[73,4],[74,5],[75,7],[76,5],[78,4],[78.5,7],[80,5],[82.5,4],[83.5,4],[84,2],[86,4],[88,4],[90.5,4],[91.5,4]],color=red):
> p3:=plot([[91.5,4],[92,2],[94,4],[96,4],[96.5,9],[97,7],[98,9],[100,11],[100.5,9],[101,11],[102,9],[104,11],[106,9],[108,9],[109,9],[109.5,9],[110,7],[111,9],[112,7],[113,7],[114,9],[116,11],[116.5,9],[117,11],[118,9],[119.5,11],[120,9],[122.5,9],[124,9],[124.5,9],[125,11],[125.5,9],[126,11],[128,9],[129,7],[130,9],[132,11],[132.5,9],[133,11],[134,9],[136,11],[136.5,9],[138.5,9],[140,9],[140.5,9],[141,11],[141.5,9],[142,11],[143,7],[143.5,7],[144,9],[144.5,9],[145,7],[146,9],[148,11],[148.5,9],[149,11],[150,9],[151.5,11],[152,9],[154.5,9],[156,9],[156.5,9],[157,11],[157.5,9],[158,11],[160,9],[161,7],[162,9],[164,11],[164.5,9],[165,11],[166,9],[168,11],[168.5,9],[171.5,9],[172,9],[172.5,9],[173.5,11],[174,9],[174.5,11],[175,7],[175.5,7],[176,9],[176.5,9],[177,7],[178,9],[180,11],[180.5,9],[181,11],[182,9],[183.5,11],[184,9],[186.5,9],[188,9],[188.5,9],[189,11],[189.5,9],[190,11],[192,9],[192.5,9],[193,7],[194,9],[196,11],[196.5,9],[197,11],[198,9],[200,11],[201.5,9],[202,11],[203,9],[203.5,8],[204,9],[205,7],[205.5,9],[206,11],[207,9],[208,7],[209,8],[209.5,7],[210,9],[211,7],[212,5],[213,5],[213.5,5],[214,9],[215,7],[216,5],[217,5],[217.5,5],[218,7],[219,5],[220,4],[221,4],[221.5,4],[222,7],[223,5],[224,4],[225,4],[227,4],[227.5,4],[228,2],[230,4]],color=blue):
> p4:=plot([[230,4],[232,4],[232.5,5],[233,4],[234,5],[236,7],[236.5,5],[237,5],[238,9],[240,7],[242.5,5],[244,5],[245,5],[246,4],[246.5,5],[247,4],[248,2],[250,4],[250.5,7],[251,5],[252,4],[254,4],[254.5,7],[255,5],[256,4],[258,4]],color=brown):
> p5:=plot([[258,4],[259,4],[260,2]],color=green):
> plots[display](p0,p1,p2,p3,p4,p5,thickness=2);

 

 

The selection of the main melodic element in graph of whole song. The whole song is divided into separate elements - results of transformationss0:=plot([[7,11],[8,7],[10,9],[12,9],[14,9],[16,7],[16.5,9]],color=blue):
> s1:=plot([[118,9],[119.5,11],[120,9],[122.5,9],[124,9],[124.5,9],[125,11],[125.5,9]],color=blue):
> s2:=plot([[134,9],[136,11],[136.5,9],[138.5,9],[140,9],[140.5,9],[141,11],[141.5,9]],color=blue):
> s3:=plot([[150,9],[151.5,11],[152,9],[154.5,9],[156,9],[156.5,9],[157,11],[157.5,9]],color=blue):
> s4:=plot([[166,9],[168,11],[168.5,9],[171.5,9],[172,9],[172.5,9],[173.5,11],[174,9]],color=blue):
> s5:=plot([[182,9],[183.5,11],[184,9],[186.5,9],[188,9],[188.5,9],[189,11],[189.5,9]],color=blue):
> s6:=plot([[250,4],[250.5,7],[251,5],[252,4],[254,4],[254.5,7],[255,5],[256,4]],color=blue):
> plots[display](s0,s1,s2,s3,s4,s5,s6);
> s:=plots[display](s0,s1,s2,s3,s4,s5,s6):

 

Animated display of grafical transformation of the basic element (to click on the picture - on the panel of instruments appears player - to play may step by step).m0:=plot([[7,11],[8,7],[10,9],[12,9],[14,9],[16,7],[16.5,9]],color=blue):
> pm:=plot([[118,9],[119.5,11],[120,9],[122.5,9],[124,9],[124.5,9],[125,11],[125.5,9]],color=red,style=line,thickness=4):
> iop:=plots[display](m0,pm,insequence=true):
> plots[display](iop,s0);

> m0_t:=translate(m0,110,0):
> m0_r:=reflect(m0_t,[[0,9],[24,9]]):
> plots[display](m0,m0_r,insequence=true);
> m0r:=plots[display](m0,m0_r,insequence=true):

> pm0:=plots[display](pm,m0):
> plots[display](pm0,m0r);

> m0:=plot([[7,11],[8,7],[10,9],[12,9],[14,9],[16,7],[16.5,9]],color=blue):
> pn:=plot([[134,9],[136,11],[136.5,9],[138.5,9],[140,9],[140.5,9],[141,11],[141.5,9]],color=blue,thickness=3):
> iop:=plots[display](m0,pn,insequence=true):
> plots[display](iop,s0);

> m0_t1:=translate(m0,126,0):
> m0_r1:=reflect(m0_t1,[[0,9],[24,9]]):
>
> plots[display](m0,m0_r1,insequence=true);
> m0r1:=plots[display](m0,m0_r1,insequence=true):

> pm01:=plots[display](pn,m0):
> plots[display](pm01,m0r1);

 

> pm2:=plots[display](pn,pm,m0):
> plots[display](pm0,m0r,pm01,m0r1);

> pt_i_1:=seq(translate(pm,5*11*i,0),i=0..4):
> plots[display](pt_i_1);

> pm_i:=seq(translate(pm,5*11*i,0),i=0..4):
> plots[display](pm_i);
> iop1:=plots[display](pm_i,insequence=true):
> plots[display](iop1,s0);

 

> pm_i_0:=seq(translate(m0_r,5*11*i,0),i=0..4):
> plots[display](pm_i_0);
> iop2:=plots[display](pm_i_0,insequence=true):
> plots[display](iop2,s0);

 

 

 

 

 

 

Construction of arabesques of melodic line BACH

Elena, Liya "Construction of arabesques of melodic line BACH", Kazan, Russia, school#57
       
> restart:
> with(plots):with(plottools):

      The setting and visualization of line BACH: B - note b-flat, A - note la, C - note do, H - note si.
> p0:=plot([[0,1],[2,0],[4,1.5],[6,1]],thickness=4,color=cyan,scaling=constrained);
>
>   p0 := PLOT(
>
>         CURVES([[0, 1.], [2., 0], [4., 1.500000000000000], [6., 1.]])
>
>         , SCALING(CONSTRAINED), THICKNESS(4), AXESLABELS( ,  ),
>
>         COLOUR(RGB, 0, 1.00000000, 1.00000000),
>
>         VIEW(DEFAULT, DEFAULT))
>
> plots[display](p0);
> r_i:=seq(rotate(p0,i*Pi/4),i=1..8):
> p1:=display(r_i,p0):plots[display](p1,scaling=constrained);

> c1:=circle([0,0],6,color=blue,thickness=2):
> plots[display](c1,p1,scaling=constrained);
> p_c:=plots[display](c1,p1,scaling=constrained):

> pt_i_2:=seq(translate(p1,0,2*6*i),i=0..4):
> plots[display](pt_i_2,scaling=constrained);
> pt_i_22:=seq(translate(p1,0,6*i),i=0..4):
> plots[display](pt_i_22,scaling=constrained);
> pt_i_222:=seq(translate(p1,0,1/2*6*i),i=0..4):
> plots[display](pt_i_222,scaling=constrained);

> pr:=rotate(p1,Pi/8):
> plots[display](pr,scaling=constrained);
> plots[display](p1,pr,scaling=constrained);
> pr_i:=seq(rotate(p1,Pi/16*i),i=0..8):
> plots[display](pr_i,scaling=constrained);


> pt_1:=translate(p1,0,2*6):
> pr_1_i:=seq(rotate(pt_1,Pi/3.5*i),i=0..6):
> plots[display](pr_1_i,scaling=constrained);
> pr_11_i:=seq(rotate(pt_1,Pi/5*i),i=0..10):
> plots[display](pr_11_i,scaling=constrained);
> pr_111_i:=seq(rotate(pt_1,Pi/6.5*i),i=0..12):
> plots[display](pr_111_i,scaling=constrained);


Elena, Liya "Designing of islamic arabesques", Kazan, Russia, school #57


> restart:
      At the theorem of cosines  c^2 = a^2+b^2-2*a*b*cos(phi);
      In our case  c=a0 ,  a=1 ,  a=b , phi; - acute angle of a rhombus (the tip of the kalam).
      s0 calculated at theorem of  Pythagoras.
     (а0 - horizontal diagonal of a  rhombus, s0 - vertical diagonal of a  rhombus)
> a:=1:phi:=Pi/4:
> a0:=sqrt(a^2+a^2-2*a^2*cos(phi));

                       a0 := sqrt(2 - sqrt(2))

> solve((s0^2)/4=a^2-(a0^2)/4,s0);

                sqrt(2 + sqrt(2)), -sqrt(2 + sqrt(2))


      The setting of initial parameters : the size of the tip of the pen-kalam and  depending on its - the main module size - point
       (а0 - horizontal diagonal of a  rhombus, s0 - vertical diagonal of a  rhombus)
> a0:=sqrt(2-sqrt(2)):
> s0:=sqrt(2+sqrt(2)):
      Connection the graphical libraries Maple
> with(plots):with(plottools):
      Construction of unit of measure (point) - rhombus - the tip of the kalam
> p0:=plot([[0,0],[a0/2,s0/2],[0,s0],[-a0/2,s0/2],[0,0]],scaling=constrained,color=gold,thickness=3):
> plots[display](p0);

The setting and construction of altitude of alif - the basis of the rules compilation of the proportions      Example, on style naskh altitude of alif amount five points
> p_i:=seq(plot([[0,0+s0*i],[a0/2,s0/2+s0*i],[0,s0+s0*i],[-a0/2,s0/2+s0*i],[0,0+s0*i]],scaling=constrained,color=black),i=0..4):
> pi:=display(p_i):
> plots[display](p_i);
The setting of appropriate circle of diameter, amount altitude of alifd0:=s0+s0*i:
> i:=4:
> d0:=d0:
> c0:=circle([0,d0/2],d0/2,color=blue):
> plots[display](p_i,c0);


Construction of flower by turning "point"r_i:=seq(rotate(p0,i*Pi/4),i=1..8):
> p1:=display(r_i,p0):plots[display](p1,scaling=constrained);

 The setting of circumscribed circlec1:=circle([0,0],s0,color=blue,thickness=2):
      Construction and the setting of flower inscribed in a circle
> plots[display](c1,p1,scaling=constrained);
> p_c:=plots[display](c1,p1,scaling=constrained):

The setting and construction of arabesque by horizontal parallel transport original flower with different stepspt_i_1:=seq(translate(p1,5*a0*i,0),i=0..4):
> plots[display](pt_i_1);
> pt_i_11:=seq(translate(p1,2*a0*i,0),i=0..4):
> plots[display](pt_i_11);
> pt_i_111:=seq(translate(p1,a0*7*i,0),i=0..4):
> plots[display](pt_i_111);

 The setting and construction of arabesque by vertical parallel transport original flower with different stepspt_i_2:=seq(translate(p1,0,2*s0*i),i=0..4):
> plots[display](pt_i_2);
> pt_i_22:=seq(translate(p1,0,s0*i),i=0..4):
> plots[display](pt_i_22);
> pt_i_222:=seq(translate(p1,0,1/2*s0*i),i=0..4):
> plots[display](pt_i_222);
 Getting arabesques by turning original flower on different anglespr:=rotate(p1,Pi/8):
> plots[display](pr);
> plots[display](p1,pr);

> pr_i:=seq(rotate(p1,Pi/16*i),i=0..8):
> plots[display](pr_i);


> pt_1:=translate(p1,0,2*s0):
> pr_1_i:=seq(rotate(pt_1,Pi/3.5*i),i=0..6):
> plots[display](pr_1_i);
> pr_11_i:=seq(rotate(pt_1,Pi/5*i),i=0..10):
> plots[display](pr_11_i);
> pr_111_i:=seq(rotate(pt_1,Pi/6.5*i),i=0..12):
> plots[display](pr_111_i);


Construction of standard quadrilaterals

      Muchametshina Liya,  8th class,  school № 57, Kazan, Russia


                   Square

                  Rectangle     
                  
                  Rhombus        
 
                  Parallelogram

                   Trapeze

Construction of square

> restart:
> with(plottools):
       Сoordinates (x;y) of the lower left corner of the square and the side "а"
> x:=0;y:=3;a:=6;

                                x := 0


                                y := 3


                                a := 6

      Construction of the square
> P1:=plot([[x,y],[x,y+a],[x+a,y+a],[x+a,y],[x,y]],color=green,thickness=4):
> plots[display](P1,scaling=CONSTRAINED);

The setting of the second square wich moved relative to the first on the vector (2;-3) (vector can be changed) and with side "а-1" (the length of a side can be changed)P2:=plot([[x+2,y-3],[x+2,y-3+a-1],[x+2+a-1,y-3+a-1],[x+2+a-1,y-3],[x+2,y-3]],color=black,thickness=4):
> plots[display](P1,P2,scaling=CONSTRAINED);

Construction of rectangle

> restart:
> with(plottools):
        Сoordinates (x;y) of the lower left corner of the square and the "а" and "b" sides
> x:=0;y:=2;a:=3;b:=9;
>

                                x := 0


                                y := 2


                                a := 3


                                b := 9

       The rectangle is specified by the sequence of vertices with given the lengths "a" and "b"
> l:=plot([[x,y],[x,y+a],[x+b,y+a],[x+b,y],[x,y]]):
> plots[display](l,scaling=CONSTRAINED,thickness=4);
Construction of rhombus

> restart:
> with(plottools):
      The coordinates (x;y) of the initial vertex of the rhombus and the half of the diagonals "a" and "b"
> x:=0;y:=2;a:=3;b:=4;

                                x := 0


                                y := 2


                                a := 3


                                b := 4

       Rhombus is specified by the sequence of vertices with the values "a" and "b"
> ll:=plot([[x,y],[x+a,y+b],[x+a+a,y],[x+a,y-b],[x,y]]):
> plots[display](ll,scaling=CONSTRAINED,thickness=4);

Construction of parallelogram

> restart:
> with(plottools):
      (х;у) - the starting point, (i;j) - the displacement vector of starting point, "а" - the base of the parallelogram
> x:=0;y:=0;i:=4;j:=5;a:=10;

                                x := 0


                                y := 0


                                i := 4


                                j := 5


                               a := 10

     The parallelogram is defined by the sequence of vertices
> P1:=plot([[x,y],[x+i,y+j],[x+i+a,y+j],[x+a,y],[x,y]]):
> plots[display](P1,scaling=CONSTRAINED,thickness=4);
 If  i= 0  it turns out the rectangleget.
       If  j= а  it turns out the  square.
       If  a := sqrt(i^2+j^2) it turns out the rhombus. a:=sqrt(i^2+j^2):

Construction of trapeze

Trapeze general form
> restart:
> with(plottools):
>
        (х;у) - the starting point, (i;j) - the displacement vector of starting point, а - the larger base of the trapezoid
> x:=0;y:=2;i:=1;j:=5;a:=11;

                                x := 0


                                y := 2


                                i := 1


                                j := 5


                               a := 11

         The trapez is defined by the sequence of vertices     
> P1:=plot([[x,y],[x+i,y+j],[x+i+j,y+j],[x+i+a,y],[x,y]]):
> plots[display](P1,scaling=CONSTRAINED,thickness=4);
Rectangular trapezoid
> restsrt:
> with(plottools):
> x:=0;y:=2;i:=0;j:=6;a:=11;

                                x := 0


                                y := 2


                                i := 0


                                j := 6


                               a := 11

> P1:=plot([[x,y],[x,y+j],[x+j,y+j],[x+a,y]]):
> plots[display](P1,scaling=CONSTRAINED,thickness=4);
Isosceles trapezoid
> restart:
> with(plottools):
> x:=0;y:=2;i:=4;j:=6;a:=15;

                                x := 0


                                y := 2


                                i := 4


                                j := 6


                               a := 15

> P1:=plot([[x,y],[x+i,y+j],[x+j+i,y+j],[x+a,y],[x,y]]):
> plots[display](P1,scaling=CONSTRAINED,thickness=4);



 

 

 

> restart;
> a := -10; b := 10; ps := seq(plot([i, t, t = -20 .. 20], x = -10 .. 10, y = -20 .. 20, color = red, style = point), i = a .. b);

plots[display](ps, insequence = true); p := plots[display](ps, insequence = true);

 

restart:
with(plots):
y=sin(x);
p:=implicitplot(y=sin(x),x=-10..10,y=-2..2,thickness=4,color=red,scaling=constrained,numpoints=1000):
plots[display](p);

 

y=sin(3*x);
p0:=implicitplot(y=sin(x),x=-10..10,y=-5..5,thickness=3,color=red,scaling=constrained,numpoints=1000,linestyle=2,style=POINT,symbol=CROSS):
p1:=implicitplot(y=sin(3*x),x=-10..10,y=-5..5,thickness=4,color=blue,numpoints=10000):
plots[display](p0,p1);
y=sin(1/3*x);
p11:=implicitplot(y=sin(1/3*x),x=-10..10,y=-5..5,thickness=4,color=navy,numpoints=10000):
plots[display](p0,p11);

 

 

y=2*sin(x);
p2:=implicitplot(y=2*sin(x),x=-10..10,y=-5..5,thickness=4,color=blue,numpoints=10000):
plots[display](p0,p2);
y=1/2*sin(x);
p22:=implicitplot(y=1/2*sin(x),x=-10..10,y=-5..5,thickness=4,color=navy,numpoints=10000):
plots[display](p0,p22);

 

y=2+sin(x);
p3:=implicitplot(y=2+sin(x),x=-10..10,y=-5..5,thickness=4,color=blue,numpoints=10000):
plots[display](p0,p3);
y=sin(x)-2;
p33:=implicitplot(y=sin(x)-2,x=-10..10,y=-5..5,thickness=4,color=navy,numpoints=10000):
plots[display](p0,p33);

y=sin(x+2);
p4:=implicitplot(y=sin(x+2),x=-10..10,y=-5..5,thickness=4,color=blue,numpoints=10000):
plots[display](p0,p4);
y=sin(x-2);
p44:=implicitplot(y=sin(x-2),x=-10..10,y=-5..5,thickness=4,color=navy,numpoints=10000):
plots[display](p0,p44);

y=-sin(x);
p7:=implicitplot(y=-sin(x),x=-10..10,y=-5..5,thickness=4,color=blue,numpoints=10000):
plots[display](p0,p7);
y=sin(-x);
p77:=implicitplot(y=sin(-x),x=-10..10,y=-5..5,thickness=4,color=navy,numpoints=10000):
plots[display](p0,p77);

 

y=abs(sin(x));
p00:=implicitplot(y=sin(x),x=-10..10,y=-5..5,thickness=3,color=red,scaling=constrained,numpoints=1000,linestyle=2,style=POINT,symbol=BOX):
p5:=implicitplot(y=abs(sin(x)),x=-10..10,y=-5..5,thickness=4,color=blue,numpoints=10000):
plots[display](p00,p5);
plots[display](p5,scaling=constrained);

y=sin(abs(x));
p00:=implicitplot(y=sin(x),x=-10..10,y=-5..5,thickness=3,color=red,scaling=constrained,numpoints=1000,linestyle=2,style=POINT,symbol=BOX):
p6:=implicitplot(y=sin(abs(x)),x=-10..10,y=-5..5,thickness=4,color=navy,numpoints=10000):
plots[display](p00,p6);
plots[display](p6,scaling=constrained);

 

 

Post gialid_GEODROMchik - what is this?

Pilot project of Secondary school # 57 of Kazan, Russia

Use of Maple

in Mathematics Education by mathematics teacher Alsu Gibadullina

and in scientific work of schoolchildren

 

Examples made using the Maple

the 6th class

 

              Arina                         Elza                             David    

       

       Book.mws              Kolobok.mws               sn_angl.mws

 

         Artur    

 

 

I'm an educator (physicist) who has migrated to Maple because of the lower "activation barrier" to get something of interest produced by the student. The students in my courses are exposed to several language (Python, C++, Java) and mathematical systems (Mathematica, Maple, MATLAB.) Many claim that unless forced to used a particular language or system, their first choice is Python and Maple for the reason I cite. 

As a consequence, it is my experience that students truly perfer the math-like appearance of the 2-D Math notation as opposed to the Maple notation. They see it as more natural - again with a lower activation barrier. Hence I see no reason to change. However, I would be interested in reasons why it might be beneficial.

My ultimate question is: do I start them with worksheet mode or documents mode? I'm use to worksheet mode and have found the call and response method easy for them to understand. But document mode has many valuable benefits. Is it worth the increase in learning (and frustration) for the benefits if the students use the software only a few times per semester? Or for some, every week?

I would be interested in hearing about the experiences of other educators.

 

Greetings to all. I am writing today to share a personal story / exploration using Maple of an algorithm from the history of combinatorics. The problem here is to count the number of strings over a certain alphabet which consist of some number of letters and avoid a set of patterns (these patterns are strings as opposed to regular expressions.) This counting operation is carried out using rational generating functions that encode the number of admissible strings of length n in the coefficients of their series expansions. The modern approach to this problem uses the Goulden-Jackson method which is discussed, including a landmark Maple implementation from a paper by D. Zeilberger and J. Noonan, at the following link at math.stackexchange.com (Goulden-Jackson has its own website, all the remaining software described in the following discussion is available at the MSE link.) The motivation for this work was a question at the MSE link about the number of strings over a two-letter alphabet that avoid the pattern ABBA.

As far as I know before Goulden-Jackson was invented there was the DFA-Method (Deterministic Finite Automaton also known as FSM, Finite State Machine.) My goal in this contribution was to study and implement this algorithm in order to gain insight about its features and how it influenced its powerful successor. It goes as follows for the case of a single pattern string: compute a DFA whose states represent the longest prefix of the pattern seen at the current position in the string as it is being scanned by the DFA, with the state for the complete pattern doubling as a final absorbing state, since the pattern has been seen. Translate the transitions of the DFA into a system of equations in the generating functions representing strings ending with a given maximal prefix of the pattern, very much like Markov chains. Finally solve the system of equations for the generating functions and thus obtain the sequence of values of strings of length n over the given alphabet that avoid the given pattern.

I have also implemented the DFA method for sets of patterns as opposed to just one pattern. The algorithm is the same except that the DFA does not consist of a chain with backlinks as in the case of a single pattern but a tree of prefixes with backlinks to nodes higher up in the tree. The nodes in the tree represent all prefixes that need to be tracked where obviously a common prefix between two or more patterns is shared i.e. only represented once. The DFA transitions emanating from nodes that are leaves represent absorbing states indicating that one of the patterns has been seen. We run this algorithm once it has been verified that the set of patterns does not contain pairs of patterns where one pattern is contained in another, which causes the longer pattern to be eliminated at the start. (Obviously if the shorter pattern is forbidden the so is the longer.) The number of states of the DFA here is bounded above by the sum of the lengths of the patterns with subpatterns eliminated. The uniqueness property of shared common prefixes holds for subtrees of the main tree i.e. recursively. (The DFA method also copes easily with patterns that have to occur in a certain order.)

I believe the Maple code that I provide here showcases many useful tricks and techniques and can help the reader advance in their Maple studies, which is why I am alerting you to the web link at MSE. I have deliberately aimed to keep it compatible with older versions of Maple as many of these are still in use in various places. The algorithm really showcases the power of Maple in combinatorics computing and exploits many different aspects of the software from the solution of systems of equations in rational generating functions to the implementation of data structures from computer science like trees. Did you know that Maple permits nested procedures as known to those who have met Lisp and Scheme during their studies? The program also illustrates the use of unit testing to detect newly introduced flaws in the code as it evolves in the software life cycle.

Enjoy and may your Maple skills profit from the experience!

Best regards,

Marko Riedel

The software is also available here: dfam-mult.txt

     Example of the equidistant surface at a distance of 0.25 to the surface
x3
-0.1 * (sin (4 * x1) + sin (3 * x2 + x3) + sin (2 * x2)) = 0
Constructed on the basis of universal parameterization of surfaces.

equidistant_surface.mw 


First 27 28 29 30 31 32 33 Last Page 29 of 59