Изчисления

Mathematica позволява лесно комбиниране и включване на различни вградени функции и допълнителни пакети, така че да могат да се решават всевъзможни сложни задачи. Системата има строги вътрешни правила, напълно съответстващи на математическите. Естествено тя владее правилата за диференциране, интегриране и другите символни операции и множеството таблици и специални функции. В същото време ние също можем да дефинираме и оперираме със свои правила. Тази абстракция е още по-изчистена, когато се извършват числени пресмятания, поради различните видове числа и точността, с които работим.

Пример 1. Важно е да се знае, че Mathematica винаги ОПИТВА да извърши най-точното пресмятане, прилагайки допустимите правила от математиката. За целта ясно трябва да се разбира, че типът на резултата е същият като типа на данните. Числовите константи и променливи могат да са цели, рационални, реални, комплексни.  Този тип най-лесно се задава неявно, т.е. по подразбиране, според числата и променливите, които участват в оператора. Например  123 е цяло число, а 123. е реално. Достатъчно е само една данна да е от по-висок тип, за да се промени типът на резултата. Следват най-простите случаи за преминаване от един тип към друг, както и изчислителните им аспекти..

Тук данните са от цял тип и Mathematica работи точно:

p = 123 r = p/12 r^(1/2) 1/3 + 1/4

123

41/4

41^(1/2)/2

7/12

Сега типовете стават реални и същите действия се извършват приближено, по подразбиране с 6 знака след десетичната точка:

pn = N[p] rn = pn/12 rn^(1/2) RowBox[{RowBox[{1., /, 3}], +, 1/4}]

123.

10.25

3.20156

0.583333

С комплексните числа се работи когато е зададена имагинерна единица  i , а константите могат да са цели или реални. Функциите Re[x1 ] and Im[ x1] дават съответно реалната и имагинерната част на комплексното число x1:

x1 = (1 + 2)/(5 - 3) RowBox[{x2, =, RowBox[{RowBox[{(, RowBox[{1., +, 2}], )}], /, (5 - 3)}]}] Re[x1] Im[x1] (x1^2 * x2)^(1/3)

-1/34 + (13 )/34

RowBox[{RowBox[{-, 0.0294118}], +, RowBox[{0.382353,  , }]}]

-1/34

13/34

RowBox[{RowBox[{0.345833, }], -, RowBox[{0.165705,  , }]}]

Пример 2. Матрицата е типичен пример за двумерен масив. В Mathematica  масивите най-лесно се представят във вид на вложени списъци. В първата вътрешна къдрава скоба са елементите на първия ред, във втората - на втория ред и т.н. Стандартното матричното представяне можем да покажем с функцията MatrixForm. Извличането на отделен елемент става с двойни квадратни скоби, както е показано на третия  и четвъртия ред от примера.

a = {{2, 4, 5}, {1, -8, 2}, {3, 7, 4}} MatrixForm[a] a[[1, 1]] a[[3, 2]]

{{2, 4, 5}, {1, -8, 2}, {3, 7, 4}}

( 2    4    5  )            1    -8   2            3    7    4

2

7

Пример 3. Функцията Eigenvalues[ ] изчислява собствените стойности на матрицата а от Пример 2. Резултатът отново се връща като списък, но списък от правила, защото дадените елементи на матрицата са цели, а резултатът не е.  Проблемът се решава като предварително сменим типа чрез вградената функция N[ ].

z = Eigenvalues[a] ra = N[a] z = Eigenvalues[ra]

{Root[-23 - 68 #1 + 2 #1^2 + #1^3&, 1], Root[-23 - 68 #1 + 2 #1^2 + #1^3&, 3], Root[-23 - 68 #1 + 2 #1^2 + #1^3&, 2]}

RowBox[{{, RowBox[{RowBox[{{, RowBox[{2., ,, 4., ,, 5.}], }}], ,, RowBox[{{, RowBox[{1., ,, RowBox[{-, 8.}], ,, 2.}], }}], ,, RowBox[{{, RowBox[{2., ,, 7., ,, 4.}], }}]}], }}]

RowBox[{{, RowBox[{RowBox[{-, 9.15398}], ,, 7.48946, ,, RowBox[{-, 0.33548}]}], }}]

Пример 4. Един начин за генериране на  матрици е чрез функцията Table[ ]. Ето как можем да получим матрицата на Вандермонд и да пресметнем нейната детерминанта. Последният ред служи за опростяване на резултата.

v = Table[x_i^j, {j, 0, 4}, {i, 5}] MatrixForm[v] Det[v] ; dvan = Simplify[%]

{{1, 1, 1, 1, 1}, {x_1, x_2, x_3, x_4, x_5}, {x_1^2, x_2^2, x_3^2, x_4^2, x_5^2}, {x_1^3, x_2^3, x_3^3, x_4^3, x_5^3}, {x_1^4, x_2^4, x_3^4, x_4^4, x_5^4}}

(                        )            1    1    1    1    1             x    x ...             4    4    4    4    4           x    x    x    x    x            1    2    3    4    5

(x_1 - x_2) (x_1 - x_3) (x_2 - x_3) (x_1 - x_4) (x_2 - x_4) (x_3 - x_4) (x_1 - x_5) (x_2 - x_5) (x_3 - x_5) (x_4 - x_5)

Пример 5.  Подобно на пример 4 ще генерираме матрица, чиито елементи са неопределени интеграли и ще изчислим детерминантата й:

w = Table[∫ (Cos[t] * Sin[t])/(i + j) t, {j, 3}, {i, 3}] ; ws = Simplify[%] ; MatrixForm[ws]  dw = Det[ws] %//N

(  1       2     1       2     1       2  )           -- Cos[t]     -- Cos[t]  ...       2           -- Cos[t]     --- Cos[t]    --- Cos[t]            8             10            12

-Cos[t]^6/345600

RowBox[{RowBox[{-, 2.89352*10^-6}],  , Cos[t]^6}]

Пример 6. Производната на резултата от пример 5 запомняме в променливата f, опростяваме я и даваме графиката в интервала [ -π, π ]:

f = ∂_tdw f = TrigReduce[f] Plot[f, {t, -π, π}]

(Cos[t]^5 Sin[t])/57600

(5 Sin[2 t] + 4 Sin[4 t] + Sin[6 t])/1843200

[Graphics:HTMLFiles/index_37.gif]

⁃Graphics⁃

Пример 7. По-долу се намират локалните екстремуми на  f  в най-близата околност на точката t = 2.5 - минимумът е при  t = 2.72106,  а максинумът е при  t = 0.420534.

RowBox[{FindMinimum, [, RowBox[{f, ,, RowBox[{{, RowBox[{t, ,, 2.5}], }}]}], ]}] RowBox[{FindMaximum, [, RowBox[{f, ,, RowBox[{{, RowBox[{t, ,, 2.5}], }}]}], ]}]

RowBox[{{, RowBox[{RowBox[{-, 4.49313*10^-6}], ,, RowBox[{{, RowBox[{t, , 2.72106}], }}]}], }}]

RowBox[{{, RowBox[{4.49313*10^-6, ,, RowBox[{{, RowBox[{t, , 0.420534}], }}]}], }}]

Пример 8. Сега разлагаме  f  в ред на Тейлър до 10-та степен.

s = Series[f, {t, 0, 10}]

t/57600 - t^3/21600 + (47 t^5)/864000 - (169 t^7)/4536000 + (2717 t^9)/163296000 + O[t]^11

Пример 9. Тук се изчислява интеграл, който не e тривиалeн. За да се изчисли  се добавя точка след поне една константа, например 3. За да следим поведеноето на функцията е добре да имаме и графиката й.

RowBox[{g, =, RowBox[{(1 + x^3), /, RowBox[{(, RowBox[{x^4, +, RowBox[{3., x^2}], -, 5x, +, 2} ... (1 + x^3), /, RowBox[{(, RowBox[{x^4, +, RowBox[{3., x^2}], -, 5x, +, 2}], )}]}], x}]}]}]

RowBox[{(1 + x^3), /, RowBox[{(, RowBox[{2, -, 5 x, +, RowBox[{3.,  , x^2}], +, x^4}], )}]}]

[Graphics:HTMLFiles/index_46.gif]

⁃Graphics⁃

RowBox[{RowBox[{RowBox[{-, 1.18128}],  , RowBox[{ArcTan, [, RowBox[{RowBox[{3.5056, }] ...  RowBox[{Log, [, RowBox[{RowBox[{4.2655, }], +, RowBox[{1.31696,  , x}], +, x^2}], ]}]}]}]


Created by Mathematica  (October 6, 2007)