Опубликован: 03.12.2012 | Доступ: свободный | Студентов: 1149 / 288 | Длительность: 16:43:00
Специальности: Математик, Преподаватель, Физик
Теги:
Лекция 11:
Программирование, основанное на правилах преобразований
Вопросы
- Какие преобразования называются в Mathematica глобальными? Каким образом задаются глобальные правила преобразований?
- Для каких целей выражения снабжаются атрибутом Protected? Каким образом атрибут Protected можно убрать из списка атрибутов выражения? Добавить в список?
- Что такое верхнее значение выражения? Каким образом осуществляется присвоение выражениям верхних значений?
- Что такое нижнее значение выражения? Каким образом осуществляется присвоение выражениям нижних значений?
- Какие преобразования называются в Mathematica локальными? Каким образом задаются локальные правила преобразований?
- Какие выражения в Mathematica называются шаблонами?
- Чем отличаются друг от друга шаблоны _h и h_?
- Какие классы выражений выделяют шаблоны с двумя и тремя символами подчёркивания? При работе с каким классом данных их целесообразно использовать?
- В каких случаях используются шаблоны с условиями? Каким образом они задаются?
- В каких случаях используются шаблоны-альтернативы? Каким образом они задаются?
Упражнения
- Опишите процесс вычисления следующих наборов выражений (в скобках для проверки указан результат каждого вычисления).
-
x=a;
y=b;
x+10/.x->6
(результат: 16)
-
a=5;
x:=a;
y=b;
a=10;
x+10/.x->y
(результат: 20)
-
a=5;
x=a;
y=b;
a=10;
x+10/.x->y
(результат: 15)
-
a=c;
x=a;
y=b;
a=10;
x+10/.x->y
(результат: 10+b)
-
Set[k,10];
SetDelayed[l,u];
ReplaceAll[l^2-k,Rule[k,l]]
(результат: -10+u^2)
-
Set[n,5];
SetDelayed[k,n];
SetDelayed[l,u];
Set[n,10];
ReplaceAll[l^2-k,Rule[k,l]]
(результат: -10+u^2)
-
SetDelayed[n,5];
Set[k,n];
Set[l,u];
Set[n,10];
ReplaceAll[l^2-k,Rule[k,l]]
(результат: -5+u^2)
-
SetDelayed[n,v];
Set[k,n];
Set[l,u];
ReplaceAll[l^2-k,Rule[k,l^2]]
(результат: 0)
-
SetDelayed[n,v];
Set[k,n];
SetDelayed[l,u];
ReplaceAll[l^2-k,Rule[l,k]]
(результат: -v+v^2)
-
- Присвойте выражениям, записанным слева, значения, указанные справа. Для выполнения задания используйте присвоение верхних значений и управление атрибутом Protected.
k^l 3
m^2 n^3
x+y z
x+y^2 z^2
Cos[f] g+h
Cos[f]+g h
u^Sqrt[v] w
u^Sqrt[3] w
Sqrt[3]^u v
- При помощи задания нижних значений создайте простейшую базу данных, содержащую информацию о сотрудниках вашего отдела/ студентах вашей академической группы/ членах вашей семьи. Занесите в базу следующие сведения: фамилия, имя, отчество, пол, день, месяц и год рождения.
- Задайте пользовательскую функцию, которая преобразует строку, содержащую только буквы латинского алфавита, в список, элементами которого являются номера этих букв в алфавите. Для выполнения задания используйте функцию Characters, с которой мы познакомились в лекции 3 сего курса, и локальные правила преобразования.
- Задайте пользовательскую функцию, дублирующую действие встроенной функции Abs. Используйте при задании шаблоны с условиями.
- Найдите как можно больше шаблонов, которым соответствуют заданные ниже выражения. Проверьте соответствие при помощи функций MatchQ и Cases.
a^b+2*c
a^2+b^2
a^b+b^a
1+2*I
{a,b,c}
{a,{},b,{},c}
x[t]^y
x[t]*y[t]
a^(2*a+3*b)