Читать реферат по математике: "Разложение рациональной дроби на простейшие." Страница 3

назад (Назад)скачать (Cкачать работу)

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

Интегрирование дробно-рациональных функций.

Пусть и некоторые полиномы степени m и n

Функция вида

называется дробно-рациональной функцией , или коротко-рациональной дробью.

При m restart:

> readlib(randomize):

(а) > randomize():

(б) > d1:= rand(1..3):

> d2:= rand(2..7):

(в) > px:= randpoly(x, degree=21, coeffs=rand(-7..7), terms = 9):

(г) > for i from 1 to 3 do

> q[i]:= randpoly(x, degree=1, coeffs=rand(-7..7))^d1():

> q[i+3]:= (x^2 + x + d2())^d1():

> od:

(д) > rfun:= px/product(q[k], k=1..6);

Разберемся, что тут мы с вами наворотили. Итак, сначала подробно остановимся на генерации случайных целых чисел в системе Maple. (а) — здесь мы заставляем генератор случайных чисел привязаться к системному времени. Если этого не сделать, то генерируемая последовательность будет каждый раз одинаковой. Вызов просто функции rand() без аргументов возвратит двенадцатизначное случайное натуральное число. В большинстве случаев это ну совсем неудобно. Можно это дело исправить, передавая функции один аргумент: rand(n) , что приведет к генерации числа из полуинтервала [0, n) . Зачастую и этого недостаточно для решения поставленной задачи. Можно еще более сузить “область значений” — (б). Только в этом случае в d1 вернется отнюдь не число, а ссылка на процедуру, вызов которой приведет к генерации случайного числа из заданного отрезка. Произвольный полином максимальной степени 21 степени с коэффициентами из отрезка [-7,7] и девятью членами получим в (в) . Дальше интереснее — нужно изготовить знаменатель. “Сделаем” его в виде произведения трех многочленов первой, и трех — второй степени. Причем по определению многочлены второй степени не должны иметь действительных корней. Реализующая эту задачу конструкция (г) очевидна и в пояснениях не нуждается. И наконец, собрав числитель и знаменатель в одно целое, в (д) получим нашу рациональную дробь. Выражение product(q[k], k=1..6); является формальным переводом на язык Maple записи: Знаменатель полученной функции таким образом уже будет разложен на множители. Для того чтобы задача приняла более правдоподобный характер, вместо (д) можно реализовать следующее:> rfun:= px/expand(product(q[k], k=1..6), x);

Expand раскроет скобки и приведет подобные слагаемые относительно переменной x в знаменателе. В итоге получится настоящая рациональная дробь. То, что коэффициенты целые, — общности задачи не ограничивает — с таким же успехом мы могли сгенерировать их и иррациональными.

Если запустить все написанное, исключив строку (а) (генератор случайных чисел будет стандартно инициализирован), получится в точности:

Заметили? В знаменателе появилась “не заказанная” шестая степень. И вместо шести множителей получилось только пять. Ну и что? Просто два “произвольных” многочлена полностью совпали (и по степеням тоже). На что только ни способен генератор случайных чисел в Maple! Результат раскрытия можно посмотреть на рисунке — там он выглядит куда меньше.

Второй этап работы заключается в определении характера правильности дроби и выделении целой части (если нужно), т.е. представлению ее в виде:

где Z(x) — целая часть, а R(x) не делится на Q(x) . Сделаем это следующим образом: > fracpart:= rem(numer(rfun), denom(rfun), x, 'zpart'); Заведем переменную fracpart и zpart соответственно для дробной и для целой части рациональной дроби. Процедура-функция rem возвращает остаток от деления многочленов как


Интересная статья: Быстрое написание курсовой работы