1610912777-ff63a1b83b9ac0b597c9346050946007 (824719), страница 3
Текст из файла (страница 3)
. Such That . . . LetОператор for all . . . such that . . . let позволяет определять функции,которые имеют различное аналитическое представление в различных областях. Пример (функция Хевисайда):1: operator f ;2: for all x such that x < 0 let f (x) = 0;3: let f (0) = 1/2;4: for all x such that x > 0 let f (x) = 1;Глава 6Работа с файламиКоманда «in "file";» открывает файл с именем «file», производит егочтение и выполнение. Последней командой в файле должна быть команда «end;». Команда «pause;», включенная в файл, приводит к приостановке выполнения выражений файла и выводу на терминал сообщения«Cont? (Y or N)».
Выбор «y» приводит к продолжению выполнениявыражений файла, а выбор «n» переводит систему в интерактивный режим. В дальнейшем команда «cont;» позволяет продолжить выполнениевыражений файла. Команда «end;» закрывает файл.Команда «out "file";» открывает файл с именем «file» в режиме записи. После этой команды вывод результатов счета направляется в файл.Команда «shut "file";» закрывает файл с именем «file».Допустимо открывать несколько файлов, но запись производится впоследний открытый файл.
Чтобы вернуться к записи в один из ранееоткрытых файлов, необходимо вновь вызвать команду «out» с именемэтого файла. При этом запись будет продолжена в конец файла. Припервом вызове команда «out» открывает файл в режиме перезаписи.21Глава 7Вещественная арифметикаПо умолчанию режим «rounded» отключен и «Reduce» производитточные вычисления даже с вещественными числами — вернее с представлениями этих чисел:9: precision 20;1: x := sqrt(3);x := sqrt(3)1210: x;2: y := 0.32;y := 8/251.732050807568877293511: z;3: z := 2∗pi;z := 2∗pi6.28318530717958647694: on rounded;12: r := 0.5∗z;5: xr := 3.141592653589793238513: off rounded;1.732050807576: y;14: z;0.322∗pi15: w;7: z;6.283185307185419351/17250338: w := 0.5∗z;16: r;w := 3.141592653591741259530249/554260122890Декларация «precision» определяет точность вычислений (в десятичных цифрах) и выводит текущую точность.
По видимому, «Reduce» всевычисления проводит в рациональных числах, а при выводе приводитих к вещественному виду.22Глава 8Встроенные функции8.1Условные функцииevenp(x)fixp(x)freeof(x,y)numberp(x)ordp(x,y)primep(x)true,true,true,true,true,true,еслиеслиеслиеслиеслиеслиx четное целое число;x целое число;выражение x не содержит ядро y;x число;x больше y;x простое число.Условные функции используются только в составе условных выражений в операторах if, for, while, until.8.2Числовые функцииВ данном разделе описываются числовые функции системы «Reduce».Эти функции возвращают численное значение при численных аргументах.
Когда аргумент не численный, «Reduce» возвращает исходное выражение или, если это возможно, производит некоторые его упрощения.8.2.1AbsФункция abs(x) возвращает абсолютное значение аргумента x. Пример:23Глава 8. Встроенные функции1:2:8.2.2abs(−5/2);5/2abs(3 ∗ a);3∗abs(a)243: abs(i);14: abs(−a)abs(a)CeilingФункция ceiling(x) возвращает наименьшее целое превышающее аргумент x.
Пример:1:8.2.3ceiling(−5/2);−22:ceiling(−x);ceiling(−x)ConjФункция conj(z) возвращает комплексно-сопряженное аргумента z.Пример:1:8.2.4conj(1+i);1−iconj(x + i ∗ y);−impart(x) ∗ i − impart(y) + repart(x)−repart(y) ∗ i2:FactorialФункция factorial(n) возвращает n!. Пример:1:8.2.5factorial(6);7202:factorial(x);factorial(x)FixФункция fix(x) возвращает целую часть аргумента x. Пример:1:8.2.6fix(−5/2);−22:fix(x);fix(x)FloorФункция floor(x) возвращает наибольшее целое не превышающее аргумент x. Пример:1:floor(−5/2);−32:floor(−x);floor(−x)Глава 8. Встроенные функции8.2.725Impart, repartФункции impart(z) и repart(z) возвращают мнимую и вещественнуючасти аргумента z, соответственно.
Пример:1:impart(2+i);12: repart(2+i);28.2.83:4:impart(x + i ∗ y);impart(x) + repart(y)repart(x + i ∗ y);−impart(y) + repart(x)Max, minФункции max и min от произвольного числа аргументов возвращаютмаксимум и минимум своих аргументов, соответственно. Пример:max(1, −5, 6, 8);82: min(1, −5, 6, 8);−51:8.2.93:4:max(1, −5, 6, x);max(6,x)min(1, −5, 6, x);min(−5, x)NextprimeФункция nextprime(x) возвращает ближайшее превышающее аргумент x простое число. В случае символьного аргумента ответ, как видноиз следующего примера, может быть невереным.
Пример:1:2:8.2.10nextprime(9);11nextprime(−2);23:4:nextprime(−11);−7nextprime(x);xRandomФункция random(x) возвращает целое псевдослучайное число из интервала [0, x). Аргумент x должен быть положительным целым числом.Пример:1:2:random(1000);708random(−1000);3:−1000random(x);xГлава 8. Встроенные функции8.2.1126Random_new_seedФункция random_new_seed(x) инициирует новую последовательность псевдослучайных чисел. Аргумент x должен быть положительнымцелым числом.8.2.12RoundФункция round(x) возвращает ближайшее к аргументу x целое число.
Пример:1:8.2.13round(−5/2);−32:round(x);round(x)SignФункция sign(x) возвращает знак аргумента x. При символьном аргументе, как видно из следующего примера, ответ может быть неверным(например, это случится, если в дальнейших вычислениях переменной xбудет присвоено значение i). Пример:1:8.3sign(−5/2);−12:sign(−x ∗ ∗2 ∗ y);−sign(y)Математические функцииНечетные колонки следующей таблицы содержат математическиефункции «Reduce».
Четные колонки содержат обозначения этих функций принятые в отечественной математической литературе.Глава 8. Встроенные функцииacos(x)acot(x)acsc(x)asec(x)asin(x)atan(x)atan2(x,y)cosh(x)coth(x)csch(x)ei(x)hypot(x,y)log(x)log10(x)sech(x)sinh(x)tan(x)arccos xarcctg xarccosec xarcsec xarcsin xarctg xarctg x/ych xcth xcschR xxpe /xdxx2 + y 2ln xlog10 xsech xsh xtg xacosh(x)acoth(x)acsch(x)asech(x)asinh(x)atanh(x)cos(x)cot(x)csc(x)dilog(x)exp(x)ln(x)logb(x,y)sec(x)sin(x)sqrt(x)tanh(x)27Arch xArcth xArcsch xArsch xArsh xArth xcos xctg xcosecR x− ln(x)dx/(x − 1)exln xlogy xsec xsin x√xth x«Reduce» умеет дифференцировать и интегрировать большинство изэтих функций и знает некоторые тождества, которым удовлетворяютэти функции.
Команда «showrules func;» выдаст весь набор встроенныхправил для функции func. Пример:1:showrules log;{log(1) => 0, log(e) => 1, log(e ∗ ∗∼ x) => x, df(log(∼ x),∼ x)=> 1/x, df(log(∼ x/∼ y),∼ z) => df(log(x),z) − df(log(y),z)}2: showrules ln;{}3: showrules logb;{}Из этого примера, в частности, видно, что два обозначения для натурального логарифма неэквивалентны. И, видимо, надежнее функцию lnне использовать. Хотя можно с помощью оператора let наделить функцию ln всеми свойствами функции log. Пример:Глава 8. Встроенные функции28s := showrules log;s := {log(1) => 0, log(e) => 1, log(e ∗ ∗∼ x) => x, df(log(∼ x),∼ x)=> 1/x, df(log(∼ x/∼ y),∼ z) => df(log(x),z) − df(log(y),z)}2: s := sub(log = ln, s);s := {ln(1) => 0, ln(e) => 1, ln(e ∗ ∗∼ x) => x, df(ln(∼ x),∼ x)=> 1/x, df(ln(∼ x/∼ y),∼ z) => df(ln(x),z) − df(ln(y),z)}3: let reverse(s);4: showrules ln;{ln(1) => 0, ln(e) => 1, ln(e ∗ ∗∼ x) => x, df(ln(∼ x),∼ x)=> 1/x, df(ln(∼ x/∼ y),∼ z) => df(ln(x),z) − df(ln(y),z)}5: y := (cos(x) + sin(x)) ∗ ∗2;y := cos(x) ∗ ∗2 + 2 cos(x) ∗ sin(x) + sin(x) ∗ ∗2;6: let cos(∼ x) ∗ ∗2 + sin(∼ x) ∗ ∗2 => 1;7: y;2 cos(x) ∗ sin(x) + 1;1:В первой строке этого примера переменной s присвоен список правил функции log.
Далее во второй строке ввода в списке s функция logзаменяется на функцию ln и необходимый список правил готов, но применить его «Reduce» не позволит. В правой части последнего правиласписка s есть выражение, которое присутствуют в левой части предыдущего правила и это потенциально опасно зацикливанием, с чем «Reduce»бескомпромиссно борется.
Достаточно поменять расположение правил всписке s, например, применив функцию reverse, и оператор let теперьпримет список правил. Определять свои дополнительные правила можно для всех встроенных функций и последние три строки ввода примерадемонстрируют это для функций sin и cos.Глава 8. Встроенные функции8.429ДифференцированиеЧастные производные в «Reduce» вычисляет оператор df, синтаксискоторого вполне определяет следующая таблица:∂u,∂x∂2udf(u, x, 2) =,∂x2∂6udf(u, x, 2, y, z, 3) =,∂x2 ∂y∂z 3df(u, x) =8.5ИнтегрированиеИнтегрированиев «Reduce» осуществляет оператор int.Rint(u,x) = udx8.6Операторы length и arglengthОператор length возвращает размер (или размеры) различных объектов. Для рациональных выражений возвращается сумма слагаемыхчислителя и знаменателя.
Пример:length({a, b, c, d});42: length(a ∗ b ∗ c ∗ d);13: length(a + b + c + d);44: length(mat((a, b)));{1,2}1:5:6:7:8:length(mat((a), (b)));{2,1}array s(5,6);length(s);{6,7}length((1 + x) ∗ ∗2/(1 − x));5Оператор arglength возвращает количество аргументов оператораверхнего уровня. Пример:Глава 8. Встроенные функции1:2:3:4:8.7arglength({a, b, c, d});4arglength(a ∗ b ∗ c ∗ d);4arglength(a + b + c + d);4arglength(a/b/c);230arglength(sin(x + y));1arglength(x);-1;length(x);15:6:7:Оператор mapОператор map применяет функцию (или оператор) с одним аргументом ко всем элементам составных структур: матриц, списков, уравненийи т.п.
Пример:map(sin,{x, y, z});{sin(x), sin(y), sin(z)}2: map(sin, x + y + z);sin(x) + sin(y) + sin(z)3: map(∼ w ∗ ∗3, x + y + z);1:8.84:5:x ∗ ∗3 + y ∗ ∗3 + z ∗ ∗3s := mat((a, b));s := mat((a, b))$map(∼ w − r, s);mat((a − r, b − r))$Оператор mkidОператор mkid позволяет создавать новые переменные. Пример:1: matrix a(2,2);2: for i:=1:2 dofor j:=1:2 doa(i,j) := mkid(mkid(c,i),j);3: a(2,1);4:5:c21set(mkid(u,2),33)$u2;33В четвертой строке ввода этого примера показан способ инициализации создаваемой переменной.8.9Оператор pfОператор pf возвращает список слагаемых в разложении рационального выражения. Пример:Глава 8.
Встроенные функции31pf((3 + x)/((x + 1) ∗ ∗2 ∗ (x + 2)), x);{1/(x + 2), (−1)/(x + 1), 2/(x + 1) ∗ ∗2}2: for each u in ws sum u;(x + 3)/((x + 2) ∗ (x + 1) ∗ ∗2)1:8.10Оператор selectОператор select выбирает из списка или аддитивного выражениякомпоненты удовлетворяющие заданному условному выражению. Пример:select(∼ w > 0, {1, −2, 2, −3, 3});{1, 2, 3}2: select(evenp deg(∼ w, y), (x + y) ∗ ∗5);{x ∗ ∗5, 10 ∗ x ∗ ∗3 ∗ y ∗ ∗2, 5 ∗ x ∗ y ∗ ∗4}1:8.11Оператор solveОператор solve(eqw,vars); предназначен для решения одного или нескольких алгебраических уравнений. Здесь «eqw» — список уравнений, а«vars» — список неизвестных.