Компьютерная алгебра — область математики, лежащая на стыке алгебры и вычислительных методов.
Отличить компьютерную алгебру от других математических дисциплин, таких, как алгебра – не просто. Но, все же различать эти две области даже в таких случаях, когда рассматривается один и тот же предмет и алгебраический алгоритм можно. В алгебре главным объектом изучения будут являться общие правила, лежащие в основе любого алгоритма. В компьютерной алгебре же наоборот: центральной темой будет являться алгоритм во всех своих аспектах, включая эффективность и результативность.
Первые системы были ограниченны по своим возможностям и поэтому были предназначены для одной, конкретной области алгебры. Позже, были разработаны универсальные системы компьютерной алгебры или, как их называют по-другому - системы общего назначения, в которых реализованы основные математические алгоритмы и есть возможность пользователю самостоятельно создать новые алгоритмы на языке программирования системы [2].
Основоположниками компьютерной алгебры, являются советский и российский учёный в области радиотехники и электроники Дьяконов В.П., доктор технических наук, профессор Смоленского университета. Ляпунов А.А. – советский математик, один из основоположников кибернетики, член-корреспондент АН СССР, специалист в области теории функций вещественного переменного и математических вопросов кибернетики.
Наиболее интуитивный, хотя в чем-то ограниченный взгляд на системы компьютерной алгебры – это считать о том, что они созданы для повседневных манипуляций с формулами в научных и технических расчетах. Математическая формула, описанная на одном из обычных языков программирования, например среды программирования Паскаль или Бейсик, предназначена только для численных расчетов, когда переменным и параметрам присвоены численное значение, но, кроме этого, она может стать объектом формальных преобразований дифференцирования, разложения в ряд, различных других разложений и даже интегрирования. Например, можно при помощи всего одной команды выполнить разложение на простейшие дроби выражения:
Имеющие вид:
,
которое, безусловно, нетрудно сделать вручную. Но гораздо приятнее выполнить с помощью машины разложение формулы:
,
имеющее, значительно более сложный вид:
[1].
Как правило, системы компьютерной алгебры разрабатываются с целью предложить пользователю набор базисных запрограммированных инструментов, которые будут передавать машине трудоемкие вычисления, встречающиеся в процессах, полностью выполняемых пользователем.
Конечно, при наличии соответствующего алгоритма, вполне возможна та мысль, об использовании алгебраических вычислений в пакетном режиме. (Пакетный режим - многократное выполнении какой-то однотипной операции над множеством объектов.)
Это будет зависеть только от вычислительного окружения, и пользователю нужно будет следить, чтобы все данные к моменту были определенны [3].
MATLAB – одна из систем компьютерной математики, разработанная математиком программистом Кливом Моулером в конце 70 годов прошлого столетия. Клив Моулер является председателем и главным учёным компании MathWorks lncorporated. Моулер был профессором математики и информатики более 20 лет в университете Мечигана, Стенфорда и университета в Нью-Мексико. В дополнение к тому, что он был автором первой версии MATHLAB, Моулер является одним из соавторов таких научных библиотек, как LINPACK и EISPACK. Он – соавтор трёх книг по численным методам. Основатель компании MathWorks. Клив Моулер опубликовал книгу «Numerical» Computing With MATLAB». В настоящее время, программа широко используется исследователями и учеными для решения прикладных и теоретических задач на ЭВМ.
Название программы MATLAB (МАТЛАБ) расшифровывается, как «матричная лаборатория», так изначально, программа использовалась только в матричных вычислениях. Впоследствии, с развитием информационных технологий, программа стала усовершенствоваться, и в нее были добавлены новые функции. Сейчас программа служит для разных областей математики, таких, как: линейная алгебра, численные методы и др.
Пользователю предлагается несколько вариантов использования системы. Основным режимом системы MATLAB является режим командной строки (рисунок 1), при котором команды, набираемые пользователем на клавиатуре в ответ на приглашение системы, выполняются в диалоговом режиме с немедленной выдачей результата. В таком режиме легко получить решение таких задач, как вычисление определителей, обращение и перемножение матриц, решение систем линейных алгебраических уравнений и др. Для выполнения этих и других операций необходимо вызвать соответствующую функцию системы, передав ей входные параметры и, возможно, сохранить результат для последующего использования [4].
Рисунок 1 – Главная форма программы
Рассмотрим пример одной из задач для решения в системе MATLAB:
Задача о рюкзаке формулируется следующим образом. Необходимо отыскать такой набор предметов из заданного их множества с размерностью ai и стоимостью ci каждого (i = 1,…,n), которые, будучи помещёнными в рюкзак размерности A, обеспечивали бы максимальную стоимость.
Формальная постановка данной задачи имеет вид:
(1)
(2)
В данных выражениях xi– булева переменная, при этом xi= 1,если i-й предмет кладётся в рюкзак и xi= 0 – в противном случае.
Исходные данные для решения задачи о рюкзаке представлены в таблице 1.
Таблица 1 – Исходные данные
Номер предмета |
Размер предмета |
Стоимость предмета |
Размер рюкзака |
1 |
50 |
14 |
250 |
2 |
75 |
12 |
|
3 |
155 |
20 |
|
4 |
90 |
18 |
|
5 |
85 |
11 |
|
6 |
35 |
15 |
В этом случае MATLAB-код для решения данной задачи имеет вид:
f = [14; 12; 20; 18; 11; 15];
A = [50 75 155 90 85 35];
b = 250;
[x,fval]= bintprog(-f, A, b);
x
fval = -fval.
В результате вычислений получится вектор оптимальных значений булевых переменных и оптимальное значение целевой функции:
x =
1
1
0
1
0
1
fval = 59.
Таким образом, как следует из полученных результатов, в рюкзак помещаются предметы с номерами 1,2,4,6, а их общая стоимость равна 59.
M-файл-функция с именем knapsack01 для решения 0,1-задачи о рюкзаке имеет вид:
function func = knapsack01(f, A, b)
[x,fval]= bintprog(-f, A, b);
x
fval = -fval
end.
Входными параметрами данной функции являются: f – вектор (столбец) значений стоимостей предметов ci; A – вектор значений размерностей предметов ai; b – размерность рюкзака.
Информационные технологии усовершенствуются с каждым днем все больше и больше. Следовательно, в области компьютерной алгебры будет создано и усовершенствованно еще много программ. Программы, которые уже созданы, являются незаменимым помощником как ученым и исследователям, так и обычным школьникам.
Список используемых источников
Кук, Д. Компьютерная математика: / Д. Кук, Г. Бейз: пер. с англ. Г. М. Кобелькова – М.: Наука. Главная редакция физико-математической литературы, 1990. – 383 с.
Дэвенпорт, Дж. Компьютерная алгебра: Системы и алгоритмы алгебраических вычислений. / Дж. Дэвенпорт, И. Сирэ, Э. Турнье – М.: Мир, 1991. - 352 с.
Каганов, В. И. Компьютерные вычисления в средах Excel и Mathcad / Каганов В.И. – М.: Горячая линия – Телеком, 2003. – 328 с.
Электронные ресурсы о системе MATLAB [Электронный ресурс] – Режим доступа: http://gnss.4du.ru/wp-content/uploads/2016/04/MATLAB_FOR_STUDENTS.pdf.