Warning: include(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/wp-cache-base.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 65

Warning: include_once(/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php): failed to open stream: No such file or directory in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82

Warning: include_once(): Failed opening '/var/www/iill7773/data/www/wiselab.ru/wp-content/plugins/wp-super-cache/ossdl-cdn.php' for inclusion (include_path='.:/opt/alt/php55/usr/share/pear:/opt/alt/php55/usr/share/php') in /home/u7426dd0/domains/wiselab.ru/public_html/wp-content/plugins/wp-super-cache/wp-cache.php on line 82
показом | Учебники

Записи с меткой «показом»

Примеры матричных операций с применением пакета LinearAlgebra

Примеры матричных операций с применением пакета LinearAlgebra
Применение алгоритмов NAG особенно эффективно в том случае, когда используется встроенная в современные микропроцессоры арифметика чисел с плавающей запятой. С помощью специального флага такую арифметику можно отключать или включать:
> UseHardwareFloats := false; # use software floats
UseHardwareFloats :=false 
> UseHardwareFloats := true: # default behaviour
UseHardwareFloats :=true
Матрицы в новом пакете линейной алгебры могут задаваться в угловых скобках, как показано ниже:

После этого можно выполнять с ними типовые матричные операции. Например, можно инвертировать (обращать) матрицы:

Обратите внимание, что Maple 15 теперь выдает информационные сообщения о новых условиях реализации операции инвертирования матриц с вещественными элементами, и в частности об использовании алгоритмов NAG и арифметики, встроенной в сопроцессор. (
Следующий пример иллюстрирует создание двух случайных матриц Ml и М2 и затем их умножение:

Параметр inplace в функции умножения обеспечивает помещение результата умножения матриц на место исходной матрицы Ml — излюбленный прием создателей быстрых матричных алгоритмов NAG. Поскольку матрицы Ml и М2 за- -даны как случайные, то при повторении этого примера результаты, естественно, будут иными, чем приведенные.
Следующий пример иллюстрирует проведение хорошо известной операции/ LU-разложения над матрицей М, созданной функцией Matrix:

Конечной целью большинства матричных операций является решение систем линейных уравнений. Для этого пакет LinearAlgebra предлагает великое множество методов и средств их реализации. Мы ограничимся простым примером одновременного решения сразу трех систем уравнений. Дабы не загромождать книгу массивными выражениями, ограничимся решением систем из двух линейных уравнений, матрица коэффициентов у которых одна, а векторы свободных членов разные. Ниже показан пример решения такой системы:
 

На этом, учитывая ограниченный объем книги, мы завершаем обзор пакета LmearAlgebra. Читатель, познающий или знающий методы линейной алгебры, может опробовать в работе любые функции этого пакета самостоятельно или познакомиться со множеством примеров, размещенных в справочной системе Maple 15. Возможности пакетов linalg и LinearAlgebra удовлетворят самых требовательных специалистов в этой области математики. 

Интерактивный ввод матриц

Интерактивный ввод матриц
Для интерактивного ввода матриц можно, определив размерность некоторого массива, использовать функцию entermatrix:
> А:=аггау(1..3,1..3):
А :=аггау(1 ..3,1 .. 3, [ ])
После исполнения этого фрагмента документа диалог с пользователем имеет следующий вид:
 

 

Основные функции для задания векторов и матриц
В библиотечном файле Unalg имеются следующие функции для задания векторов и матриц: 

  • vector(n,list) — сoздание вектора с n элементами, заданными в списке list;
  •  matrix(n,m,list) — создание матрицы с числом строк n и столбцов m с элементами, заданными списком list.

Ниже показано применение этих функций:

Обратите внимание на последние примеры — они показывают вызов индексированных переменных вектора и матрицы.
Функции для работы с векторами и матрицами
Для работы с векторами и матрицами Maple 15 имеет множество функций, входящих в пакет linalg. Ограничимся приведением краткого описания наиболее распространенных функций этой категории.
Операции со структурой отдельного вектора V и матрицы М: 

  •  coldim(M) — возвращает число столбцов матрицы М; 
  •  rowdim(M) — возвращает число строк матрицы М;
  •  vectdim(V) — возвращает размерность вектора V;
  •  col(M,i) — возвращает i-й столбец матрицы М;
  •  row(M,i) — возвращает i-ю строку матрицы М;
  •  tninor(M,i, j) — возвращает минор матрицы М для элемента с индексами i и j;
  •  delcols(M,i.. j) — удаляет столбцы матрицы М от i-roдо j-ro;
  •  del rows (V,i..j) — удаляет строки матрицы М от i-й до j-й;
  •  extend (М, т, n,х) — расширяет матрицу М на m строк и n столбцов с применением заполнителя х.

Основные векторные и матричные операции:

  •  dotprod(U,V) — возвращает скалярное произведение векторов U и V;
  •   crossprod(U,V) — возвращает векторное произведение векторов U и V;
  •   norm(V) или norm(M) — возвращает норму вектора или матрицы;
  •  copyinto(A,B,i, j) — копирует матрицу А в В для элементов последовательно от i до j;
  •  concat(Ml,M2) — возвращает объединенную матрицу с горизонтальным слиянием матриц Ml и М2;
  •  stack(Ml,M2) — возвращает объединенную матрицу с вертикальным слиянием Ml и М2;
  •  matadd(A,B) и evalm(A+B) — возвращает сумму матриц А и В;
  •  multlply(A,B) и evalm(A&*B) — возвращает произведение матриц А и В;
  •  adjoint (М) или adj(M) — возвращает присоединенную матрицу, такую что M?adj(M) дает диагональную матрицу, определитель которой есть det(M);
  •  charpoly(M,lambda) — возвращает характеристический полином матрицы М относительно заданной переменной lambda;
  •  det(M) — возвращает детерминант (определитель) матрицы М;
  •  Eigenvals(M,vector) — инертная форма функции, возвращающей собственные значения матрицы М и (при указании необязательного параметра vector) соответствующие им собственные векторы;
  •  jordan(M) — возвращает матрицу М в форме Жордана;
  • hermite(M) — возвращает матрицу М в эрмитовой форме;
  •  trace(M) — возвращает след матрицы М;
  •  rank(M) — возвращает ранг матрицы М;
  •  transpose(M) — возвращает транспонированную матрицу М;
  •  inverse(M) или evalm(l/M) — возвращает матрицу, обратную к М;
  •  singularvals(A) — возвращает сингулярные значения массива или матрицы А.

Приведем примеры применения некоторых из этих функций:
 

Читатель, понимающий суть матричных вычислений, легко справится с тестированием других функций, входящих в пакет linalg. В приведенных примерах полезно обратить внимание на то, что многие матричные функции способны выдавать результаты вычислений в аналитическом виде, что облегчает разбор выполняемых ими операций.

Решение систем линейных уравнений
Ниже представлен простой пример составления и решения трех систем линейных уравнений с применением функций, входящих в пакет linalg:

А теперь рассмотрим пример решения матричного уравнения в символьном виде:

Следующий пример показывает решение более сложной системы линейных уравнений с комплексными коэффициентами:

На этот раз решение получено использованием функций умножения матриц и вычисления обратной матрицы в виде X = А-1 В, то есть в матричном виде. В конце примера показано преобразование результатов с целью их получения в обычной форме комплексных чисел с частями, представленными в форме чисел с плавающей точкой.
Пакет линейной алгебры с алгоритмами NAG LinearAlgebra
Назначение и загрузка пакета LinearAlgebra
В последние годы разработчики систем символьной математики осознали, что малая скорость выполнения векторных и матричных операций при решении задач линейной алгебры оборачивается потерей заметной части рынка систем компьютерной математики. далее…

Паде-аппроксимация с полиномами Чебышева

Паде-аппроксимация с полиномами Чебышева
Для многих аналитических зависимостей хорошие результаты дает аппроксимация полиномами Чебышева. В общем случае применяется Паде-аппроксимация отношением таких полиномов. Она реализуется функциями chebpade:
chebpade(f, x=a..b, [m.n])
chebpade(f., x, [m.n])
chebpade(f, a..b, [m,n])
Здесь а..b задает отрезок аппроксимации, тип— максимальные степени числителя и знаменателя полиномов Чебышева. Приведенный ниже пример показывает аппроксимацию Паде полиномами Чебышева для функции f=cos(x):

Наилучшая минимаксная аппроксимация
Минимаксная аппроксимация отличается от Паде-аппроксимации минимизацией максимальной абсолютной погрешности во всем интервале аппроксимации. Она использует алгоритм Ремеза (см. ниже) и реализуется следующей функцией:
mimmax(f, x=a..b, [m.n], w, ‘maxerror’) 
minimax(f, a..b, [m,n], w, ‘maxerror’)
Здесь помимо уже отмеченных параметров w — процедура или выражение, maxerror — переменная, которой приписывается значение miniraax-нормы. Ниже дан пример аппроксимации функции cos(x) в интервале [-3, 3]:

Наилучшая минимаксная аппроксимация по алгоритму Ремеза
Для получения наилучшей полиномиальной аппроксимации используется алгоритм Ремеза, который реализует следующая функция:
remez(w, f, a, b, m, n,_crit, ‘maxerror’)
Здесь w — процедура, представляющая функцию w(x) > 0 в интервале [a, b], f — процедура, представляющая аппроксимируемую функцию а и b — числа,’ задающие интервал аппроксимации fa,b], m и n — степени числителя и знаменателя аппроксимирующей функции, crit — массив, индексированный от 1 до m + n + 2 и представляющий набор оценок в критических точках (то есть точек максимума/минимума кривых погрешности), mахеrrоr — имя переменной, которой присваивается минимаксная норма w abs(f -r).
Следующий пример иллюстрирует применение данной функции для аппроксимации функции erf(x):

Другие функции пакета
Отметим назначение других функций пакета numapprox:

  •  chebdeg(p) — возвращает степень полинома Чебышева р;
  •  chebmult(p, q) — умножение полиномов Чебышева р и q;
  •  chebsort(e) — сортирует элементы ряда Чебышева;
  •  confracform(r) — преобразует рациональное выражение г в цепную дробь;
  •  confracform(r, х) — преобразует рациональное выражение г в цепную дробь с независимой переменной х; 
  •  hornerform(r) — преобразует рациональное выражение г в форму Горнера;
  •  hornerform(r, х) — преобразует рациональное выражение г в форму Горнера с независимой переменной х; 
  •  infnorm(f, x=a…b, ‘xmax’) — возвращает L-бесконечную норму функции на отрезкех [а, b];
  •   infnorm(f, a…b, ‘xmax’) — возвращает L-бесконечную норму функции на отрезке [а, b].

Действие этих функций очевидно, и читатель может самостоятельно опробовать их в работе.
Пакет интегральных преобразований inttrans
Общая характеристика пакета
Это один из пакетов, наиболее важных для общематематических и научно-технических приложений. Он содержит небольшой набор функций:
> with(inttrans):
[addtable,fourier,fouriercos,fouriersin, hankel, hilbert, invfourier, invhilbert, invldplace, invmellin, laplace, mellin, savetable]
Однако эти функции охватывают такие практические важные области математики, как ряды Фурье, прямые и обратные преобразования Лапласа и Фурье и ряд других интегральных преобразований. далее…

Пакет combstruct

Пакет combstruct
Еще девять функций, относящихся к структурам комбинаторики, содержит пакет combstruct:
> with(combstruct):
[allstructs, count, draw,finished, gfeqns, gfseries, gfsolve, iterstritcts, nextstruct]
Эти функции служат для создания случайно однородных объектов, принадлежащих заданному комбинаторному классу. Ограничимся приведением примеров применения этих функций:
> alltructs(Subset({one,two}));
{{ },{one, two}, {two}, {one}}
 > anstructs(Permutation([x,y,z]),size=2):
[[x,y],[x,z],[y,x],[y,z],[z,x],[z,y]] 
> count(Subset({l,2,3}));

> draw(Combiination(5),size=4);
{1,3,4,5}
> count(Permutation([a,a,b])): .
3
> 1t :=iterstructs(Permutation([a,a,b]),size=2);
it := table([finished = false, nextvalue = (pmc() … endproc )])
 > draw(Partition(9));
[2,2,2,3]
 > allstructs(Composition(3), size=2):
[[2,l],[l,2]]
Для более полного знакомства с этими специфическими функциями обратитесь к справочной системе.
Пакет финансово-экономических функций finance
Пакет финансово-экономических расчетов открывается командой:
 > with(finance)
[amortization, annuity, blackscholes, cashflows, effectiverate,futurevalue, growingannuity, growingperpetuity, levelcoupon, perpetuity, presentvalue, yieldtomaturity]
Этот пакет представлен рядом указанных выше функций в двух формах:
function(args)
finance[function](args).
Благодаря правилам задания аргументов можно реализовать практически все известные финансово-экономические расчеты, такие как амортизация, накопления и платежи по вкладам и т. д. В свете задач рыночной экономики эти функции полезны для приверженцев решения всего на свете без выхода из оболочки Maple. Все же надо отметить, что малозаметные тонкости в определении финансово-экономических функций затрудняют их применение. далее…

Построение фигур в различных системах координат

Построение фигур в различных системах координат
Как отмечалось, вид графика трехмерной поверхности существенно зависит от выбора координатной системы. Рисунок показывает пример построения нелинейного конуса в цилиндрической системе координат. Для задания такой системы координат используется параметр coords=cylindrical.
При построении этой фигуры также использована цветная функциональная окраска. Кроме того, этот пример иллюстрирует вывод над рисунком титульной надписи (кстати, сделанной на русском языке).
Приведем еще один пример построения трехмерной поверхности — на этот раз . в сферической системе координат ( 11.17). Здесь функция задана вообще элементарно просто — в виде числа 1. Но, поскольку выбрана сферическая система координат, в результате строится поверхность шара единичного радиуса.
О том, насколько необычным может быть график той или иной функции в различных системах координат, свидетельствует рис. 11.18. На нем показан график параметрически заданной функции от одной координаты t = sin(t3), построенный в сферической системе координат.
Кстати, иллюстрирует возможность одновременного наблюдения нескольких окон. далее…

Выбор и пересчет координат трехмерных графиков

Выбор и пересчет координат трехмерных графиков
Для трехмерных графиков возможно задание 31 типа координатных систем с помощью параметра сооrds= Тип _ координатной _ системы. Поскольку на экране монитора поверхность отображается только в прямоугольной системе координат и характеризуется координатами х, у и z, то для представления поверхности, заданной в иной системе координат с координатами u, v и w, используются известные [46, 47] формулы для преобразования (u, v, w) —> (х, у, z). Ниже перечислены типы трехмерных координатных систем и соответствующие формулы преобразования.
bipolar-cylindrical:
х = a*sinh(v)/(cosh(v)-cos'(u))
у = a*sin(u)/(cosh(v)-cos(u))
z = w 
bispherical:
x = sin(u)*cos(w)/d
у = sin(u)*sin(w)/d
z = sinh(v)/d где d — cosh(v) — cos(u) 
cardioidal:
x = u*v*cos(w)/(u^2+v^2)^2
у -=u*v*sin(w)/(u^2+v^2)^2
z = (u^2-v^2)/2/(u^2+v^2)^2 
cardioidcylindrical:
x = (u^2-v^2)/2/(u^2+v^2)^2
у — u*v/(u^2+v^2)^2
z =w
 casscylindhcal:
x = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)^(l/2)+exp(u)*cos(v)+l)^(l/2)
у = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)^(l/2)-exp(u)*cos(v)-l)^(l/2)
z =w 
 confocalellip:
x = ((a^2-u)*(a^2-v)*(a^2-w)/(a^2-b^2)/(a^2-c^2))^(l/2)
у = ((b^2-u)*(b^2-v)*(b^2-w)/(b^2-a^2)/(b^2-c^2))^(l/2)
z = ((c^2-u)*(c^2-v)*(c^2-w)/(c^2-a^2)/(c^2-b^2))^(l/2)
 confocalparab:
x = ((a^2-u)*(a^2-v)*(a^2-w)/(b^2-a^2)^(l/2)
у = ((b^2-u)*(b^2-v)*(b^2-w)/(b^2-a^2))^(l/2)
z = (a^2+b^2-u-v-w)/2 
 conical:
x = u*v*w/(a*b)
у = u/b*((v^2 — b^2)*(b^2-w^2)/(a^2-b^2))^(l/2)
z= u/a*((a^2 — v^2)*(a^2 — w^2)/(a^2-b^2))6(l/2) 
cylindrical:
x = u*cos(y)
у = u*sin(y)
z = w 
ellcylindrical:
x =a*cosh(u)*cos(v)
у = a*sinh(u)*sin(v)
z = w 
ellipsoidal:
x = u*v*w/a/b
у = ((u^2-b^2)*(u^2-b^2)*(b^2-w^2)/(а^2-b^2)^(1/2)/b
z = ((u^2-a^2)*(a^2-v^2)*(a^2-w^2)/(a^2-b^2)^(l/2)/a 
hypercylindrical:
x = ((u^2+v^2)^(l/2)-ni)^(l/2)
у = ((u^2+v^2)^(l/2)-u)^(l/2)
z = w 
invcasscylindrical:
x = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)^(l/2) +
exp(u)*cos(v)+1)^(l/2)/(exp(2*u)+2*exp(u)*cos(v)+1)^(l/2)
у = a*2^(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+1)^(l/2) —
exp(u)*cos(v)-1)^(l/2)/(exp(2*u)+2*exp(u)*cos(v)-1)^(l/2)
z = w
 invellcylindrical:
x = a*cosh(u)*cos(v)/(cosh(u)^2-sin(v)^2)
у = a*sinh(u)*sin(v)/(cosh(u)^2-sin(v)^2)
z = w 
invoblspheroidal:
x = a*cosh(u)*sin(v)*cos(w)/(cosh(u)^2-cos(v)^2)
у = a*cosh(u)*sin(v)*sin(w)/(cosh(u)^2-cos(v)^2)
z = a*sinh(u)*cos(v)/(cosh(u)^2-cos(v)^2)
  invprospheroldal:
x = a*s1nh(u)*sin(v)*cos(w)/(cosh(u)^2-sin(v)^2)
у = a*sinh(u)*sin(v)*sin(w)/(cosh(u)^2-sin(v)^2)
z = a*cosh(u)*cos(v)/(cosh(u)^2-s1n(v)^2)
 logcyllndrical:
x = a/Pi*ln(u^2+v^2)
у = 2*a/Pi*arctan(v/u)
z = w
logcoshcylindrical:
x = a/Pi*ln(cosh(u^2-sin(v)^2)
у = 2*a/Pi*arctan(tanh(u)*tan(v))
z = w
maxwell cylindrical:
x = a/P1*(u+l+exp(u)*cos(v))
у = a/Pi*(v+exp(u)*sin(v))
z = w 
oblatespheroidal:
x = a*cosh(u)*s1n(v)*cos(w)
у = a*cosh(u)*sin(v)*sin(w)
z = a*s1nh(u)*cos(v)
  parabololdal:
x = u*v*cos(w)
у = u*v*sin(w)
z = (u^2 — v^2)/2 
paraboloidal2:
x = 2*((u-a)*(a-v)*(a-w)/(a-b)^(l/2)
у = 2*((u-b)*(b-v)*(b-w)/(a-b))^(l/2)
z = u+v+w-a-b
  paracylindrical:
x = (iT2 — v*2)/2
у =u*v
z = w 
prolatespheroidal:
x = a*sinh(u)*sin(v)*cos(w)
y=a*s1nh(u)*sin(v)*sin(w)
z=a*cosh(u)*cos(v)
  rectangular:
x = u
у = v
z = w
 rosecylindrlcal:
х =((u^2+v^2)^(l/2)-Hi)^(l/2)/(u^2+v^2)^(l/2)
 у = ((u^2+v^2)^(l/2)-u)^(l/2)/(u^2+v^2)^(l/2)
z =w
  sixsphere:
x = u/(u^2+v^2+w^2)
у = v/(u^2+v^2+w^2)
z = w/(u^2+v^2+w^2)
 spherical:
x = u*cos(v)*sin(w)
у = u*sin(v)*sin(w)
z = u*cos(w) 
tangentcylindrical:
x = u/(u^2+v^2) ‘
у = v/(u^2+v^2)
z = w
  tangentsphere:
x = u*cos(w)/(u^2+v^2)
у = u*sin(w)/(u^2+v^2)
z = v/(u^2+v^2) 
toroidal:
x = a*sinh(v)*cos(w)/d
у = a*sinh(v)*sin(w)/d
z = a*sin(u)/d где d = cosh(v) — cos(u)
Эти формулы полезно знать, поскольку в литературе встречаются несколько отличные формулы пересчета. Вид графиков трехмерных поверхностей очень сильно различается в разных координатных системах. По умолчанию трехмерные графики строятся в прямоугольной системе координат — rectangular.

Построение поверхностей
Построение поверхностей с разными стилями
показано два примера простейших построений графиков трехмерной поверхности. По умолчанию в Maple 15 строится поверхность с функциональной окраской и стилем style=patch. Функциональная окраска делает рисунки более информативными, но, увы, на рисунках в книге она превращается в окраску оттенками серого цвета.
Параметр style=hidden строит каркасную поверхность с функциональной окраской тонких линий каркаса и удалением невидимых линий. далее…