Записи с меткой «формулы»

Регрессия

Регрессия
 
Линейная регрессия общего вида — LinearRegression
В подпакете LinearRegression имеются расширенные функции для проведения линейной регрессии общего вида — в дополнение к включенной в ядро функции Fit. Прежде всего это функция Regress:

  • Regress [data, { I, х, х^2 }, х] — осуществляет регрессию данных data, используя квадратичную модель;
  • Regress [data, {I, x1, x2, xlx2 }, {x1, x2 }] — осуществляет регрессию, используя в ходе итераций зависимость между переменными x 1 и х 2 ;
  • Regress [data, {f 1, f2,…}, vars] — осуществляет регрессию, используя модель линейной регрессии общего вида с уравнением регрессии, представляющим линейную комбинацию функций f i от переменных vars.

Данные могут быть представлены списком ординат {у1,у2,…} или списком
{{xll,xl2,…,yl}, {х21,х22,…,у2},…}.
Ниже приведены примеры использования функции Regress:
<<Statistics`LinearRegression`
data={{1,1.9},{2,2.95},{3,4.3},{4,4.8},{5,5}}
{{1, 1.9}, {2, 2.95}, {3, 4.3}, {4, 4.8}, (5, 5}}
(regress = Regress[data, {l,x, x^2}, x] Chop[regress, 10^(-6)])
[Parameter-Table->

Estimate

SE

TStat

PValue

1

0.1

0.421613

0.237185

0.834595

x

1.89786

0.321297

5.90687

0.0274845′

X 2

-0.182143

0.0525376

-3.4669

0.0740731

RSquared->0.988994, AdjustedRSquared ->0.977988,
EstimatedVariance -> 0.0386429, ANOVATable ->

Model

DF
2

SumOfSq
6.94471

MeanSq
3.47236

FRatio
89.8577

PValue
0.0110062,

Error

2

0.0772857

0.0386429

 

 

Total

4

7.022

func = Fit[data, {l,x,.x^2}, x]
0.1 +1.89786x-0.182143×2
Options[Regress]
{RegressionReport -> SurnmaryReport, IncludeConstant -» True, BasisNames->Automatic, Weights->Automatic, Tolerance->Automatic, ConfidenceLevel->0.95}
На показан еще один пример проведения регрессии, сопровождаемой графической визуализацией с помощью функции MultipleListPlot.
Пакет линейной регрессии содержит и ряд иных функций, с которыми можно ознакомиться с помощью справочной базы данных системы Mathematica. Напоминаем еще раз, что сама функция при линейной регрессии может быть нелинейна, она является линейной только относительно искомых коэффициентов регрессии.
Нелинейная регрессия — NonlinearFit
В подпакете NonlinearFit содержатся функции для выполнения нелинейной регрессии общего вида:

  • NonlinearFit[data,model,variables,parameters] — выполняет регрессию по заданной модели (формуле) model с переменными variables и параметрами parameters для заданных данных data;
  • NonlinearRegress[data,model,variables,parameters] —выполняет регрессию по заданной модели (формуле) model с переменными variables и параметрами parameters для заданных данных data с выдачей списка диагностики.

Данные могут быть представлены списком ординат {у1,у2,…} или списком {{x11,x12,…, yl}, {х21, х22,…, у2},…}. В ходе регрессии минимизируются заданные параметры, так что заданная модель регрессии приближает данные с минимальной среднеквадратичной погрешностью.
На показан пример выполнения логарифмической регрессии. При ней модель представлена выражением a*Log[b*x]. Результатом действия функции NonlinearFit является уравнение регрессии в виде этой модели с найденными значениями параметров а и Ь. Представлена также визуализация регрессии в виде графика функции-модели и исходных точек. Следует отметить, что реализация нелинейной регрессии разными методами может давать заметно различающиеся результаты, так что представленные результаты не являются абсолютно строгими.
Применение функции NonlinearRegress иллюстрирует следующий пример:
NonlinearRegress [data, a*Log[b*x] ,{x},{a,b}]
{BestFitParameters -> {a -> 0.665503, b -4 4. 11893},
ParameterCITable ->
Estimate Asymptotic SE CI
a 0.665503 0.0504167 {0.525524, 0.805482},
b 4.11893 0.806289 {1.88031, 6.35754}
EstimatedVariance -> 0 . 00558058,
DF SumOfSq MeanSq
Model 2 17.7425 8.87126
ANOVATable ->
Error 4 ‘0.0223223 0.00558058,
Uncorrected Total 6 17.7648
Corrected Total 5 0.994689
1. -0.972212 AsymptoticCorrelationMatrix ->
Curvature
Max Intrinsic 2 . 94314 x lO’16,
FitCurvatureTable -» }
Max Parameter-Effects 2.07792
95. % Confidence Region 0.379478
Как нетрудно заметить, в данном случае выдается отчет о проведении регрессии. Более детальные данные об опциях и обозначениях в отчетах нелинейной регрессии можно найти в справочной базе данных. далее…

Статистические расчеты

Статистические расчеты

  • Статистические расчеты — пакет Statistics
  • Построение гистограмм
  • Статистика распределен и и
  • Статистическая обработка данных
  • Сглаживание данных
  • Регрессия различного вида

В ядре системы Mathematica практически нет статистических функций. Зато пакет расширения Statistics дает сотни функций, охватывающих практически все разделы теоретической и прикладной статистики. Тем не менее, вопрос о привлечении универсальных математических систем к выполнению серьезных математических расчетов является спорным из-за существования множества специальных статистических компьютерных систем, таких как Statistica, StatGraphics и т. д.
Большинство специализированных статистических программ предлагают специальный интерфейс, базирующийся на обработке табличных данных большого объема, реализуют многовариантный расчет необходимых статистических параметров (например, регрессию сразу по десяткам формул) и отсев заведомо ошибочных данных. Поэтому при статистических расчетах применение подобных программ предпочтительно.
Статистические расчеты— пакет Statistics
 
Учитывая ограниченный объем книги и приведенные выше обстоятельства, данный раздел не содержит исчерпывающего описания всех сотен функций расширения Statiatics, а лишь дает обзор этого пакета с описанием наиболее часто используемых средств статистики, относящихся к обработке данных. далее…

Численное вычисление остатка — N Residue

Численное вычисление остатка — N Residue
В подпакете NResidue имеется функция вычисления остатка NResidue [expr, {x, x0} ] в точке х=х0:
<<NumericalMath` NResidue`
NResidue[1/z, {z, 0}]
1. + 6.35614x 10-18 I
Residue[f, {z, 1.7}]
0
NResidue[f, {z, 1.7}]
0.259067 — 1.9353xl0-17I
l/((z+.2+.5 I)(z+.2-.5 I)) /. z -> 1.7
0.259067 + 0. I
Options[NResidue]
Обратите внимание на возможные опции для этой функции в последнем примере.
Численное разложение в ряд — NSeries
Подпакет NSeries вводит функцию NSeries [f, {x,xO,n}], которая дает численный ряд, аппроксимирующий функцию f(x) в окрестности точки х = х 0 , включая термы от (х -х 0 ) -n до (х — х 0 ) п .
Примеры применения данной функции:
<<NumericalMath`NSeries`
NSeries[Sin[х], {х, -2, 2}]
Rationalize[Chop[%]]
Rationalize[Chop[NSeries[Log[x], {x, 1, 5}, Radius -> 1/8]]]
Rationalize[Chop[NSeries[Exp[x], {x, 0, 5},
WorkingPrecision -> 40, Radius -> 1/8]]]
Rationalize[Chop[NSeries[Exp[x], {x, 0, 5}, Radius -> 4]]]
Chop[NSeries[Zeta[s], {s, 1, 3}]]
 
Вычисление коэффициентов формулы интегрирования Ньютона—Котесса — NewtonCotes
Функция NIntegrate, имеющаяся в ядре системы Mathematica, реализует метод интегрирования Гаусса—Кронрода. Еще одним известным методом интегрирования является метод Ньютона—Котесса, сводящий интегрирование к вычислению взвешенных ординат функции в равномерно расположенных точках оси абсцисс. Для реализации метода используются следующие функции:

  • NewtonCotesWeights [n, a, b] — возвращает список весовых коэффициентов и абсцисс узловых точек {wi, xi} для квадратуры Ньютона—Котесса на интервале от а до b;
  • NewtonCotesError [n, f, a, b] — возвращает погрешность формулы Ньютона—Котесса для заданной функции f.

Примеры применения этих функций представлены ниже:
<<NumericalMath` NewtonCotes`
NewtonCotesWeights[5, 0, 10]
NewtonCotesError[5, f, 0, 10]
NewtonCotesError[5, f, a, a+h]
NewtonCotesWeights[5, -0, 10, QuadratureType -> Open]
NewtonCotesError[5, f, 0, 10, QuadratureType -> Open]

Обратите внимание на то, что приведенные формулы готовят данные для численного интегрирования методом Ньютона—Котесса, но не выполняют самого интегрирования.

Реализация интервальных методов — IntervalRoots

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

  • IntervalBisection [f ,x, int, eps] — находит корень функции f(x) путем уточнения исходного интервала int с заданной погрешностью eps методом половинного деления;
  • IntervalSecant [f ,x, int, eps] — находит корень функции f(x) путем уточнения исходного интервала int с заданной погрешностью eps методом секущей;
  • IntervalNewton [ f, x, int, eps ] — находит корень функции/(x) путем уточнения исходного интервала int с заданной погрешностью eps методом Ньютона (касательной).

Во всех функциях можно опциями задать максимальное число рекурсий (Max-Recursion) и погрешность (WorkingPrecision). Примеры применения этих функций даны ниже:
<<NumericalMath`IntervalRoots`
IntervalBisection[Sin[x], x, Interval[{2., 8.}], .1]
Interval[{3.125, 3.218750000000001}, {6.218750000000003, 6.312500000000006}]
IntervalBisection[Sin[x], x, Interval[{2., 8.}], .01]
Interval[{3.125, 3.17188}, {6.26563, 6.3125}]
IntervalBisection[Sin[x], x, Interval[{2., 8.}], .01, MaxRecursion -> 10]
Interval[{3.13672, 3.14258}, {6.27734, 6.2832}]
IntervalSecant[Sin[x], x, Interval[{2., 8.}], .01]
Interval[{3.14159, 3.1416}, {6.28316, 6.28321}]
IntervalSecant[Sin[x], x, Interval[{2., 8.}], .01]
Interval[{3.14159, 3.1416}, {6.28316, 6.28321}]
IntervalBisection[Sin[x], x,
Interval[{2, 8}], .1, WorkingPrecision -> Infinity]
 
Табличное численное интегрирование — Listlntegrate
Встроенная в ядро функция NIntegrate вычисляет определенные интегралы при известной подынтегральной функции. Однако нередко, например при экспериментах, такая функция задается таблицей или списком значений. В подпакете List-Integrate имеются функции для решения этой задачи — табличного интегрирования:

  • Listlntegrate [ {yl, y2,…, yn} ,h] — возвращает численное значение интеграла для функции, заданной списком ординат yi при заданном шаге h по х;
  • Listlntegrate [ {yl, y2,…, yn}, h, k] — возвращает численное значение интеграла для функции, заданной списком ординат yi при заданном шаге h по х, используя k точек каждого подинтервала;
  • Listlntegrate [ {{xl, yl}, {х2, у2 },…, {хп, уп}}, k] — возвращает численное значение интеграла для функции, заданной списком координат {х.., у.}. используя k точек для каждого подынтервала.

Примеры применения данной функции:
<<NumericalMath`Listlntegrate`
data = Tablet n^2, {n, 0, 7}]
{0, 1, 4, 9, 16, 25, 36, 49}
ListIntegrate[data, 1]
343/3
Listlntegrate[{{0,0},{1,1},{2,4},{5,25},{7,49}},2] 241/2
При проведении интегрирования для данных, заданных таблично, можно использовать интерполяцию:
арр = Listlnterpolation[data,{{0,7}}] Integrate[app[x],{x,0,7}]
343/3
Integrate[Interpolation[{{0,0},{1,1},{2,4}, {5,25}, {7,49}},
InterpolationOrder->l][x],{x,0,7}]
241/2
 
Численное вычисление пределов — NLimit
В подпакете N limit определена функция
Nlimit[expr,х->х0]
для численного вычисления пределов выражений ехрг (см. примеры ниже):
<<NumericalMath` NLimit`
NLimit[Zeta[s] — l/(s-l), s->l]
0.577216
N[EulerGamma]
0.577216
С помощью команды Options [NLimit] можно просмотреть опции, которые используются функцией NLimit по умолчанию. В этом подпакете задано также вычисление бесконечных сумм Эйлера EulerSum[f, { i, imin, Infinity} ]. Например:
EulerSum[(-l)^k/(2k + 1) , {k, 0, Infinity}]
0.785398
EulerSumt(-1)^k/(2k +1), {k, 0, Infinity},
WorkingPrecision->40, Terms->30, ExtraTerms->30]
0.78539816339744830961566084579130322540
%- N[Pi/4, 40]
-2.857249565x 10-29
Имеется также функция вычисления производной в численном виде:

  • ND [ f, х, хО] — вычисляет первую производную f(x) в точке х0;
  • ND[f, {x,n} ,х0] — вычисляет п-ю производную f(X) в точке х0. Пример вычисления производной:

ND[Exp[Sin[x]], х, 2]
-1.03312
Options[ND]
{WorkingPrecision-> 16, Scale-> 1, Terms-> 7, Method-> EulerSum]

В некоторых случаях вычисления могут быть ошибочными. Тогда следует использовать опции — особенно опцию выбора метода Method. Помимо метода по умолчанию (EulerSum) можно использовать NIntegrate (метод интегрирования по формуле Коши).

Тета-функция Зигеля

Тета-функция Зигеля
Подпакет SiegelTheta содержит еще одну редкую функцию:

  • SiegelTheta [z, s] — возвращает значение тета-функции Зигеля Q(Z, s).

Примеры вычисления этой функции даны ниже:
<< NumberTheory` SiegelTheta`
SiegelTheta[{1+1,2+1}, {2+1,-1+41}, {1.2, 2.3+.3I}]
0.973715-0.0002970481
Sum[E^(Pi I {tl,t2}.{ {1+1,2+1}, {2+1, -1+41} }.{tl,,t2} +
2 Pi I {tl,t2}.{l.2,2.3+.31}), {tl,-10,10>, {t2,-10,10}]
0.973715 — 0.000297048 I
В заключительной части этого примера дано вычисление тета-функции Зигеля по ее исходному определению.
Численные расчеты — пакет NumericalMath
 
Пакет расширения NumericalMath содержит множество полезных функций для тех, кто имеет дело с численными расчетами. В их числе функции для выполнения высокоточных аппроксимаций рациональными функциями, численного интегрирования и дифференцирования, вычисления пределов функций, решения уравнений, разложения в ряд и т. д. Ниже описано подавляющее большинство функций этого расширения. Исключены лишь отдельные функции, представляющие ограниченный интерес и несложные для самостоятельного изучения (в подпаке-mах Butcher, Microscope и ComputerArithmetic).
Аппроксимация аналитических функций — Approximations
Подпакет Approximations содержит ряд функций для улучшенной рациональной аппроксимации аналитических функций. Для рациональной интерполяции и аппроксимации функций по заданным значениям абсцисс служит следующая функция:

  • Rationallnterpolation [f, {x,m, k}, {x 1 , x 2 , …,.x m+k+1 } ] — возвращает аппроксимирующее функцию f выражение в виде отношения полиномов а степенью полинома числителя m и знаменателя k в абсциссах, заданных списком {x l ,x 2 ,…,x m+jt+1 }.

Пример применения этой функции:
<<NumericalMath `Approximations`
ril = Rationallnterpolation[ Exp[x], {х, 2, 4}, {0, 1/3, 2/3, 1, 4/3, 5/3, 2}]
Построим график погрешности аппроксимации, то есть график разности функ ии ril и Ехр [х] — он представлен.
Нетрудно заметить, что если в центральной части области аппроксимации погрешность мала (менее 5-10- 7 ), то у правого края она резко возрастает.
Представленная функция может использоваться и в иной форме:
Rationallnterpolation[f,{х, m, k},{x, xmin, xmax}]
В данном случае выбор абсцисс осуществляется автоматически в интервале от xmin до mах. В отличие от первого случая, когда абсциссы могли быть расположены неравномерно, в данном случае расположение их будет равномерным. Приведем пример аппроксимации функции синуса в интервале от n до n:
ri2 = RationalInterpolation[Sin[x],{x,3,4},{x,-Pi,Pi}]
Интересно оценить погрешность аппроксимации. далее…

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

Выбор и пересчет координат трехмерных графиков
Для трехмерных графиков возможно задание 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 строит каркасную поверхность с функциональной окраской тонких линий каркаса и удалением невидимых линий. далее…