Как сделать систему уравнений в maple

Добавил пользователь Morpheus
Обновлено: 04.10.2024

Несомненно, что уникальной возможностью системы Maple 7, как и других систем компьютерной алгебры, является возможность решения задач линейной алгебры в символьном (формульном, аналитическом) виде. Однако такое решение представляет скорее теоретический, чем практический интерес, поскольку даже при небольших размерах матриц (уже при 4-5 строках и столбцах) символьные результаты оказываются очень громоздкими и труднообозримыми. Они полезны только при решении специфических аналитических задач, например с разреженными матрицами, у которых большинство элементов имеют нулевые значения.

Поэтому разработчики Maple 7 были вынуждены реализовать в своей системе численные методы решения задач линейной алгебры, которые широко используются в основных сферах ее приложения — математическом моделировании систем и устройств, расчетах в электротехнике, механике, астрономии и т. д.

В ядро Maple 7, как отмечалось, введены очень скромные и минимально необходимые средства для решения задач линейной алгебры. Основной упор в их реализации сделан на подключаемые пакеты. Основным из них, унаследованным от предшествующих реализаций системы, является пакет решения задач линейной алгебры Unalg. Это один из самых обширных и мощных пакетов в области решения задач линейной алгебры. Он содержит свыше ста функций:

> with(linalg);

Warning, the names fibonacci, inverse and multiply have been redefined Warning, the protected names norm and trace have been redefined and unprotected[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, coldim, colspace, colspan, companion, concat, cond, copyinto, crossprod, curl, definite, delcols, delrows, det, diag, diverge, dotprod, eigenvals, eigenvalues, eigenvectors, eigenvects, entermatrix, equal, exponential, extend, ffgausselimfifibonacci,forwardsub,frobenius, gausselim, gaussjord, geneqns, genmatrix, grad, hadamard, hermite, hessian, hilbert,htranspose, thermite, indexfunc, innerprod, intbasis, inverse, ismith, issimilar, iszerojacobian, Jordan, kernel, laplacian, leastsqrs, linsolve,matadd, matrix, minor, minpoly, mulcol, /им/row,multiply, norm, normalize, nullspace, orthog, permanent, pivot, potential, randmatrix, randvector, rank, ratform, row, rowdim, rowspace, rowspan, rref, scalarmul, singularvals, smith, stackmatrix, submatrix, subvector, sumbasis, swapcol, swaprow, Sylvester, toeplitz, trace, transpose, vandermonde, vecpotent, vectdim, vector, wronskian]

Ниже указано назначение тех функций пакета linalg, которые подробно не описаны:

  • addcol — добавляет к одному из столбцов другой столбец, умноженный на некоторое число;
  • addrow — добавляет к одной из строк другую строку, умноженную на некоторое число;
  • angle — вычисляет угол между векторами;
  • augment — объединяет две или больше матриц по горизонтали;
  • backsub — реализует метод обратной подстановки при решении системы линейных уравнений (см. также forwardsub);
  • band — создает ленточную матрицу;
  • basis — находит базис векторного пространства;
  • bezout — создает Bezout-матрицу двух полиномов; . г
  • BlockDiagonal — создает блок-диагональную матрицу;
  • blockmatrix — создает блок-матрицу;
  • cholesky — декомпозиция Холесского для квадратной положительно определенной матрицы;
  • charmat — создает характеристическую матрицу (charmat(M,v) — матрица, вычисляемая как v E-M);
  • charpoly — возвращает характеристический полином матрицы;
  • colspace — вычисляет базис пространства столбцов;
  • colspan — находит базис линейной оболочки столбцов матрицы;
  • companion — вычисляет сопровождающую матрицу, ассоциированную с полиномом;
  • cond — вычисляет число обусловленности матрицы (cond(M) есть величина norm(M) norm(М -1 );
  • curl — вычисляет ротор вектора;
  • definite — тест на положительную (отрицательную) определенность матрицы;
  • diag — создает блок-диагональную матрицу;
  • diverge — вычисляет дивергенцию векторной функции;
  • eigenvals — вычисляет собственные значения матрицы;
  • eigenvects — вычисляет собственные векторы матрицы;
  • equal — определяет, являются ли две матрицы равными;
  • exponential — создает экспоненциальную матрицу;
  • ffgausselim — свободное от дробей Гауссово исключение в матрице;
  • fibonacci — матрица Фибоначчи;
  • forwardsub — реализует метод прямой подстановки при решении системы линейных уравнений (например, для матрицы L и вектора b
  • forwardsub(L, b) возвращает вектор решения х системы линейных уравнений L-x=b);
  • frobenius — вычисляет форму Фробениуса (Frobenius) матрицы;
  • gausselim — Гауссово исключение в матрице;
  • gaussjord — синоним для rref (метод исключения Гаусса—Жордана);
  • geneqns — генерирует элементы матрицы из уравнений;
  • genmatrix — генерирует матрицу из коэффициентов уравнений;
  • grad — градиент векторного выражения;
  • GramSchmidt — вычисляет ортогональные векторы;
  • hadamard — вычисляет ограничение на коэффициенты детерминанта;
  • hessian — вычисляет гессиан-матрицу выражения;
  • hilbert — создает матрицу Гильберта;
  • htranspose — находит эрмитову транспонированную матрицу;
  • ihermite — целочисленная эрмитова нормальная форма;
  • indexfunc — определяет функцию индексации массива;
  • Innerprod — вычисляет векторное произведение;
  • Intbasis — определяет базис пересечения пространств;
  • ismith — целочисленная нормальная форма Шмитта;
  • iszero — проверяет, является ли матрица ноль-матрицей;
  • jacobian —' вычисляет якобиан векторной функции;
  • JordanBlock — возвращает блок-матрицу Жордана;
  • kernel — находит базис ядра преобразования, соответствующего данной матрице;
  • laplacian — вычисляет лапласиан;
  • leastsqrs — решение уравнений по методу наименьших квадратов;
  • linsolve — решение линейных уравнений;
  • LudeComp — осуществляет LU-разложение;
  • minpoly — вычисляет минимальный полином матрицы;
  • mulcol — умножает столбец матрицы на заданное выражение;
  • mulrow — умножает строку матрицы на заданное выражение;
  • multiply — перемножение 'матриц или матрицы и вектора;
  • normalize — нормализация вектора;
  • orthog — тест на ортогональность матрицы;
  • permanent — вычисляет перманент матрицы — определитель, вычисляемый без перестановок;
  • pivot — вращение относительно элементов матрицы;
  • potential — вычисляет потенциал векторного поля;
  • Qrdecomp — осуществляет QR-разложение;
  • randmatrix — генерирует случайные матрицы;
  • randvector — генерирует случайные векторы;
  • ratform — вычисляет рациональную каноническую форму;
  • references — выводит список основополагающих работ по линейной алгебре;
  • rowspace — вычисляет базис пространства строки;
  • rowspan — вычисляет векторы охвата для места столбца;
  • rref — реализует преобразование Гаусса-Жордана матрицы;
  • scalarmul — умножение матрицы или вектора на заданное выражение;
  • singval — вычисляет сингулярное значение квадратной матрицы;
  • singularvals — возвращает список сингулярных значений квадратной матрицы;
  • smith — вычисляет Шмиттову нормальную форму матрицы;
  • submatrix — извлекает указанную подматрицу из матрицы;
  • subvector — извлекает указанный вектор из матрицы;
  • sumbasis — определяет базис объединения системы векторов;
  • swapcol — меняет местами два столбца в матрице;
  • swaprow — меняет местами две строки в матрице;
  • sylvester — создает матрицу Сильвестра из двух полиномов;
  • toeplitz — создает матрицу Теплица;
  • trace — возвращает след матрицы;
  • vandermonde — создает вандермондову матрицу;
  • vecpotent — вычисляет векторный потенциал;
  • vectdim — определяет размерность вектора;
  • wronskian — вронскиан векторных функций.

Ниже мы рассмотрим более подробно наиболее часто используемые функции из этого пакета. С деталями синтаксиса (достаточно разнообразного) для каждой из указанных функций можно ознакомиться в справочной системе Maple. Для этого достаточно использовать команду

Эру создания компьютерной символьной математики принято отсчитывать с начала 60-х годов. Именно тогда в вычислительной технике возникла новая ветвь компьютерной математики, не совсем точно, но зато броско названная компьютерной алгеброй. Речь шла о возможности создания компьютерных систем, способных осуществлять типовые алгебраические преобразования: подстановки в выражениях, упрощение выражений, операции со степенными многочленами (полиномами), решение линейных и нелинейных уравнений и их систем, вычисление их корней и т. д.

Содержание

ВВЕДЕНИЕ ………………………………………………………………………….3
Глава 1 Основные объекты и функции системы MAPLE ………………………..4
1.Основные объекты и системы…………………………………………………..4
2.Переменные, неизвестные и выражения……………………………………….5
3.Функции системы MAPLE …… ……………………………………………….7
Глава 2 Решение задач линейной алгебры с использованием MAPLE ………….9
2.1 Векторная алгебра……………………………………………………………….9
2.2 Действия с матрицами………………………………………………………….11
2.3 Спектральный анализ матрицы………………………………………………..16
2.4 Системы линейных уравнений и матричные уравнения…………………….19
2.5 Решение обыкновенных уравнений…………………………………………. 21
2.6 Решение неравенств……………………………………………………………22
ЗАКЛЮЧЕНИЕ …………………………………………………………………….24
ЛИТЕРАТУРА……………………………………………………………………. 25

Работа содержит 1 файл

курсовая.docx

Привести матрицу А к Жордановой форме, треугольному виду, найти ее характеристическую матрицу.

2.4 Системы линейных уравнений и матричные уравнения.

Система линейных уравнений может быть решена двумя способами.

Способ 1: стандартная команда solve находит решение системы линейных уравнений, записанных в развернутом виде:

Способ 2: команда linsolve(A,b) из пакета linalg находит решение уравнения . Аргументы этой команды: А – матрица, b – вектор.

С помощью команды linsolve(A,b) можно найти решение матричного уравнения АХ=В, если в качестве аргументов этой команды указать, соответственно, матрицы А и В.

Ядро матрицы А – это множество векторов х таких, произведение матрицы А на которые равно нулевому вектору: . Поиск ядра матрицы А эквивалентен решению системы линейных однородных уравнений. Найти ядро матрицы А можно командой kernel(A).

Для нахождения частного решения следует выполнить подстановку конкретного значения одной из переменных при помощи команды subs:

Найти ее ранг, дефект: d(A)=n–r(A), где n – размерность квадратной матрицы, r – ее ранг. Найти ядро А. Наберите:

2.5 Решение обыкновенных уравнений.

Для решения уравнений в Maple существует универсальная команда solve(eq,x), где eq – уравнение, x – переменная, относительно которой уравнение надо разрешить. В результате выполнения этой команды в строке вывода появится выражение, которое является решением данного уравнения. Например:

Если уравнение имеет несколько решений, которые вам понадобятся для дальнейших расчетов, то команде solve следует присвоить какое-нибудь имя name. Обращение к какому-либо k–ому решению данного уравнения производится указанием его имени с номером решения k в квадратных скобках: name[k]. Например:

Решение систем уравнений.

Системы уравнений решаются с помощью такой же команды solve(,), только теперь в параметрах команды следует указывать в первых фигурных скобках через запятую уравнения, а во вторых фигурных скобках перечисляются через запятую переменные, относительно которых требуется решить систему. Если вам будет необходимо для дальнейших вычислений использовать полученные решения уравнений, то команде solve следует присвоить какое-нибудь имя name. Затем выполняется присвоения команда assign(name). После этого над решениями можно будет производить математические операции. Например:

2.6 Решение неравенств

Решение простых неравенств.

Команда solve применяется также для решения неравенств. Решение неравенства выдается в виде интервала изменения искомой переменной. В том случае, если решение неравенства полуось, то в поле вывода появляется конструкция вида RealRange(–¥ , Open(a)), которая означает, что xÎ (–¥ , a), а – некоторое число. Слово Open означает, что интервал с открытой границей. Если этого слова нет, то соответствующая граница интервала включена во множество решений. Например:

Если вы хотите получить решение неравенства не в виде интервального множества типа xÎ (a, b), а в виде ограничений для искомой переменной типа a solve(1-1/2*ln(x)>2,);

Решение систем неравенств.

С помощью команды solve можно также решить систему неравенств. Например:

RealRange(Open(-3), Open(2)), RealRange(Open(5), Open(9))

Запишите этот результат в аналитическом виде. Получите решение этого неравенства в виде ограничений для искомой переменной. Проделайте это самостоятельно.

Зададим систему уравнений с помощью матрицы системы А и вектора свободных членов В.

> restart:

> with(linalg):



Найдем главный определитель системы:


Найдём частные определители заменой соответствующего столбца на столбец свободных членов:




> det(A1);det(A2);det(A3);




Найдём неизвестные по теореме Крамера:

> x:=det(A1)/det(A); y:=det(A2)/det(A); z:=det(A3)/det(A);




а) Перемножить матрицы А1 и А2. Найти определитель полученной матрицы и убедиться в том, что он равен произведению det(A1) и det(A2).

б) Решить систему своего варианта методом Крамера.

2. МЕТОД ГАУССА. Составляем расширенную матрицу системы. Для этого к матрице системы добавляем столбец свободных членов.

> with(LinearAlgebra):


С помощью элементарных преобразований над расширенной матрицей системы под главной диагональю получаем нули.

> Ag:=GaussianElimination(A);


Находим неизвестные с помощью обратного хода:



2а. ПРОЦЕДУРА МЕТОДА ГАУССА С ПЕЧАТЬЮ ЭЛЕМЕНТАРНЫХ ПРЕОБРАЗОВАНИЙ.

Если не пользоваться пакетом LinearAlgebra, то можно составить процедуру решения системы линейных уравнений методом исключения Гаусса с промежуточной печатью:

> with(linalg):

> gauss_solve_print:=proc(a::matrix,b::vector)

local i,j,k,c,r,x,m;

if rowdim(a)<>vectdim(b) then

error("number of columns of the matrix

must be equal to number of rows of the vector",a,b);

elif coldim(a)<>rowdim(a) then

error("matrix must be square",a);

c:=concat(c,b); print(eval(c));

for i from 1 to m do

for j from i+1 to m do

for i from m-1 to 1 by -1 do



> sol:=gauss_solve_print(A,B);






1. Объяснить работу процедуры.

2. Решить систему своего варианта методом Гаусса с использованием этой процедуры.

3. МАТРИЧНЫЙ МЕТОД.

Найдём обратную матрицу.

> Ai:=inverse(A);


Проверим, что произведение исходной матрицы А на обратную Аi равно единичной матрице.

> multiply(A,Ai);


В обратном порядке (матрицы, вообще говоря, не обладают коммутативностью):

> multiply(Ai,A);


Обратная матрица найдена верно. Найдём столбец неизвестных:

> xyz:=multiply(Ai,B);





1) Найти матрицу, обратную к Аi. Что это за матрица?

2) Проверить правильность расчёта, умножив А на Аi (получить единичную матрицу), затем Аi на А.

3) Решить систему матричным методом.

4) Сделать проверку: перемножить матрицы А и xyz. Какая матрица должна получиться?

Читайте также: