Главная » Просмотр файлов » 1610912777-ff63a1b83b9ac0b597c9346050946007

1610912777-ff63a1b83b9ac0b597c9346050946007 (824719), страница 2

Файл №824719 1610912777-ff63a1b83b9ac0b597c9346050946007 (ПИМ_Reduce) 2 страница1610912777-ff63a1b83b9ac0b597c9346050946007 (824719) страница 22021-01-17СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Списки, массивы, матрицы . . .1: s1 := {a, b, c}$2: s2 := list(d, e)$3: first(s1);a4: second(s1);b5:6:7:11cons(x, s2);{x, d, e}append(s1, s2);{a, b, c, d, e}reverse(s1);{c, b, a}Следующий диалог демонстрирует, как можно изменить элемент списка.s := {1,2,3}$part(s,2) := part(s,2) + 3;{1,5,3}3: s;{1,2,3}1:2:3.24: s := part(s,2) := part(s,2) + 3;{1,5,3}5: s;{1,5,3}МассивыМассивы объявляет декларация array. Область действия объявления массива всегда глобальна, даже если массив объявляется внутрипроцедуры или блока. При переопределении массива «Reduce» выводитпредупреждение. Применение оператора clear перед переопределениемизбавит от предупреждения. Пример:y(21) := 301: array x(2, 5), y(22), z(3, 4, 5);5: clear y;2: array x(78);∗ ∗ ∗ array x redefined6: array y(1, 1);7: length(z);3: y(21);0{4, 5, 6}4: y(21) := 30;Нумерация элементов массива в каждом измерении начинается с нуля, т.е., например, массив y после второго определения имеет четыре элемента: y(0, 0), y(0, 1), y(1, 0), y(1, 1).

Команда length возвращает списокразмерностей массива.При объявлении элементы массивов инициализируются нулевыми значениями. Поэтому к элементам массивов пока им не присвоены какиенибудь переменные нельзя применять оператор let. Пример:Глава 3. Списки, массивы, матрицы . . .1: array a(10);2: let aa(5) = f ;∗ ∗ ∗ ∗ ∗ Substitution for 0 not allowed3: aa(5) := x$4: let aa(5) = f ;3.3125:6:aa(5);fx;fМатрицыМатричные переменные могут определяться декларацией matrix (раздел 10.17, стр. 43), а также возвращаться некоторыми функциями. Область действия объявления матрицы всегда глобальна, даже если матрица объявляется внутри процедуры или блока.На множестве матриц определены алгебраические операции сложения, вычитания, умножения и возведения в целочисленную степень (втом числе и отрицательную).3.3.1MatФункция mat создает матрицу и одновременно инициализирует ееэлементы.

Строки «Reduce»1: m := mat((1,2,3),(4,5,6))$2: u := mat((x), (y))$3: v := mat((x, y))$создадут следующие матрицы: 1 2 3xm=, u=,4 5 6y3.3.2v = (x y) .DetФункция det(x) вычисляет детерминант матрицы x. Пример:1: m := mat((a, b), (c, d))$2: e2 := mat((1, 0), (0, 1))$3: det(m − s ∗ e2);a ∗ d − a ∗ s − b ∗ c − d ∗ s + s ∗ ∗2Глава 3. Списки, массивы, матрицы . . .3.3.313MateigenФункция mateigen(m, lam) вычисляет собственные значения и собственные вектора матрицы m.

Результат выдает в виде двухуровнегосписка. Внутренние списки состоят из трех элементов: левая часть неприводимого уравнения от переменной lam, которому удовлетворяет собственное значение; кратность собственного значения; собственный вектор.Пример:m := mat((−1, 0), (0, 1))$mateigen(m, s);{{s + 1,1,mat((arbcomplex(1)),(0))$},{s − 1,1,mat((0),(arbcomplex(1)))$}}3: m := mat((0, 1), (0, 0))$4: mateigen(m, s);{{s,2,mat((arbcomplex(2)),(0))$}}5: m := mat((0, −1), (1, 0))$6: mateigen(m, s);{{s ∗ ∗2 + 1,1,mat(((− arbcomplex(3))/s),(arbcomplex(3)))$}}1:2:3.3.4TpФункция tp(x) вычисляет транспонированную матрицу аргумента x.Пример:1:3.3.5tp(mat((x, y)));mat((x), (y))TraceФункция trace(x) вычисляет след матрицы x. Пример:1:3.3.6trace(mat((a, b), (c, d)));a+dCofactorФункция cofactor(a, j, k) вычисляет дополнительный минор к элементу ajk матрицы a.

Пример:Глава 3. Списки, массивы, матрицы . . .1:3.3.714cofactor(mat((a1, a2, a3), (b1, b2, b3), (c1, c2, c3)), 2, 2);a1 ∗ c3 − a3 ∗ c1NullspaceФункция nullspace(a) возвращает линейно независимые решения уравнения ax = 0. Допустимо использовать в качестве аргумента двухуровневый список, который можно интерпретировать как матрицу. Пример:1:2:3.3.8nullspace(mat((1,2,3,4),(5,6,7,8)));mat((1), (0), (−3), (2))$,mat((0), (1), (−2), (1))$nullspace({{1, 2, 3, 4}, {5, 6, 7, 8}});{{1, 0, −3, 2}, {0, 1, −2, 1}}RankФункция rank(x) вычисляет ранг матрицы x. Аналогично функцииnullspace здесь также допустимо использовать в качестве аргументадвухуровневый список. Пример:1:3.4rank(mat((a, b), (c, d));22:rank({{a, b}, {c, d}};2Уравнения и правила подстановкиУравнением называется пара выражений связанных операцией «=»,а правилом подстановки называется пара выражений связанных операцией «=>».

К обоим этим конструкциям применимы функции lhs и rhs— взятия левой и правой частей конструкции. Уравнения имеют двойноеназначение: в качестве собственно уравнений в функции solve и в подстановках. Правила подстановки используются только в подстановках.Пример:1:2:3:4:3:s1 := x = y$s2 := u => v$lhs(s1);xrhs(s1);ylhs(s2);4:5:5:urhs(s2);vpart(s1, 0);equalpart(s2, 0);replacebyГлава 4Операторы4.1Операторы присвоенияДля присвоения переменной значения используются операторы «:=»и «Let». Различие между этими операторами в том, что оператор «:=»присваивает значение выражения из правой части, а оператор «Let» присваивает само выражение. Следующий фрагмент диалога с «Reduce» демонстрирует различия в работе этих операторов:1: off nat;2: a:=2∗b$3: c:=a∗x$4: let d=a∗x$5: c;2∗b∗x6:7:8:9:d;2∗b∗xa:=0$c;2∗b∗xd;010: clear a;11: c;2∗b∗x12: d;a∗xДопустима конструкция последовательного присвоенияa := b := c := d;при этом вычисления и присвоения осуществляются справа налево.

Оператор «let» может применяться к списку.Оператор «set» также, как и оператор «:=» присваивает значение, нодополнительно может присваивать это значение вычисляемому выражению:1: k := 35$3: a35;2: set(mkid(a,k), x)$xВ левой части операторов присвоения допустимы не только переменные, но и выражения.15Глава 4. Операторы4.216Сложный операторСложным оператором называется объединение последовательностиоператоров наделенное некоторыми свойствами одного оператора. «Reduce» имеет две конструкции позволяющие осуществить такое объединение.Первая конструкция, которую иногда называют простым блоком, заключает последовательность операторов в операторные скобки << и >>.Вторая конструкция, которую иногда называют жестким блоком, заключает последовательность операторов между begin и end.

В обоих блокахпосле каждого оператора последовательности, кроме последнего, долженстоять терминатор — точка с запятой или символ $ (причем, не имеетзначения какой).Значение простого блока совпадает со значением последнего оператора из блока. Значение жесткого блока, если в нем нет оператора return,всегда равно нулю. При наличии оператора return значение блока совпадает со значением этого return.Декларации scalar, integer и real позволяют вводить в жестком блоке локальные переменные.Внутри жесткого блока (и только в нем) можно использовать оператор перехода goto.Простой блок всегда может быть заменен подходящим жестким блоком, но не наоборот.4.3Условный операторУсловный оператор имеет видif bool_exp then op1 else op2; или if bool_exp then op1;Здесь bool_exp — условное выражение, op1 и op2 — операторы. Еслиbool_exp имеет значение true, то выполняется оператор op1, в противном случае в первом варианте — оператор op2, а во втором вариантеничего не выполняется.Условный оператор право ассоциативен, т.е.

выражениеif bool_exp1 then op1 else if bool_exp2 then op2 else op3;эквивалентно выражениюif bool_exp1 then op1 else << if bool_exp2 then op2 else op3 >>;Глава 4. Операторы17а выражениеif bool_exp1 then if bool_exp2 then op1 else op2;эквивалентно выражениюif bool_exp1 then << if bool_exp2 then op1 else op2 >>;4.4Оператор for . . .Оператор цикла for записывается в одной из следующих формfor j := n1 step n2 until n3 action op;for j := n1:n3 action op;for each var in list action op;Здесь n1, n2, n3 — целые числа, op — некоторый оператор, а action одиниз следующих операторов: do, product, sum, collect, join.Пример:1: x := 0$2: for j:=1:5 do x := x + j^2;3: x;554: for j:=1:5 sum j^2;555: for j:=1:5 product j;1206: for each j in {a,b,c} collect j^2;{a ∗ ∗2, b ∗ ∗2, c ∗ ∗2}7: for each j in {a,b,c} join {j^j};{a ∗ ∗a, b ∗ ∗b, c ∗ ∗c}4.5Оператор while .

. . doОператор цикла while . . . имеет видwhile bool_exp do op;Здесь bool_exp — условное выражение, а op — оператор. Оператор opбудет выполняться до тех пор пока bool_exp имеет значение true.Глава 4. Операторы4.618Оператор repeat. . . untilОператор цикла repeat . . . имеет видrepeat op until bool_exp;Здесь bool_exp — условное выражение, а op — оператор. Оператор opбудет выполняться до тех пор пока bool_exp имеет значение false.4.7Оператор gotoОператор goto осуществляет переход на метку и может применятьсятолько внутри жесткого блока, т.е. между begin и end.

Единственнаяситуация, где использование оператора goto оправдано и полезно, — этоорганизация досрочного выхода из цикла (тем более, что более удобныхспособов это сделать в «Reduce» нет). Пример:procedure get_item(s, x);beginscalar s_out, i, j, k;s_out := {};for i := 1:length(s) dofor j := 1:length(part(s, i)) dofor k := 1:length(part(s, i, j)) doif part(s,i,j,k) = x thenbegins_out := {i,j,k};goto m1;end;m1:;return s_out;end;В этом примере описана процедура, которая находит в трехуровневом списке s первый элемент равный x и возвращает список индексов,определяющих его расположение. Если такого элемента в списке s нет,то будет возвращен пустой список.Глава 5Подстановки5.1Оператор SubОператор sub осуществляет локальные подстановки в выраженияили списки выражений.

Первый аргумент оператора задает подстановки в виде списка уравнений. В левых частях уравнений могут быть какпеременные, так и выражения. Пример:1:2:5.2sub({x = a + y, y = y + 1}, x ∗ ∗2 + y ∗ ∗2);a ∗ ∗2 + 2 ∗ a ∗ y + 2 ∗ y ∗ ∗2 + 2 ∗ y + 1sub({x = a + y, y = y + 1}, x ∗ ∗2);a ∗ ∗2 + 2 ∗ a ∗ y + y ∗ ∗2Оператор LetОператор let осуществляет глобальные подстановки. В качестве аргумента может выступать уравнение, правило подстановки или списокправил подстановки.

В левых частях уравнений и правил подстановкимогут быть как переменные, так и выражения. Пример:19Глава 5. Подстановки1:2:3:4:5:5.320let {y = 6};∗ ∗ ∗ Please use => instead of = in ruleslet {y => 6};let y => 6;let y = 6;let {y => 6, z => 5};Оператор For All . . . LetОператор for all . . . let позволяет определять функции и операторы.Пример:1: operator f ;2: for all x,y let f (x, y) = x ∗ ∗2 + y ∗ ∗2;3: f (a, b);a ∗ ∗2 + b ∗ ∗25.4Оператор For All . .

Характеристики

Тип файла
PDF-файл
Размер
789,27 Kb
Материал
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее