книги / Mathematica 5. ╨б╨░╨╝╨╛╤Г╤З╨╕╤В╨╡╨╗╤М
.pdf{х |
8(f)1/3 |
|
(9 а2 + V IV 2048 + 27 а4 )1/3 ] |
|
2 У [ (9 а2 + V I V2048 + 27 а4 )1/3 |
+ |
21/3 32/3 |
! + |
|
|
2 \1/з |
(9 а2 + V I V2048 + 27 а4 )1/3 |
/ |
|
|
8(Т> |
|||
|
2 "\/ ( (9 а2 + VI V2048 + 27 а4 Т7Т |
|
291/3з 132/3 |
+ (2 a) J |
|
8 ( f )1/3 |
|
(9 а2 + У? У2048 + 27а4)1/3 |
|
|
(9 а2 + V I V2048 + 27 а4)1/3 |
21/з 32/3 |
Ш |
Конечно, ответ несколько громоздкий. Представьте, если бы вам пришлось искать его самостоятельно!
Решения общего алгебраического уравнения степени 5 или выше через радикалы не выражаются, но всегда могут быть найдены численные их значения. Тем не менее систе
ма Mathematica пытается найти точное решение. Например, уравнение дс5 + х - 2 = 0 система Mathematica решит точно.
Solve [х Л 5 + х - 2 == 0]
|
|
|
|
|
|
|
|
|
|
|
—--------- 22 |
-----1/3 |
+ \ |
(-35 + 3 i Vl047)1/3] - |
||||||
|
|
|
|
|
|
|
|
|
|
|
3 (-35 + 3 i Vl047)1/3 |
3 ' |
' j |
|||||||
|
T |
|
fl |
f |
|
|
|
|
|
88 |
|
|
|
|
|
|
|
|
|
|
|
/i-4- i-1° - ------Г Т = 7 Т Т Г -4 (-35 + 3iVl047)1/3 |
|
||||||||||||||||||
|
4 V ( 3 |
( |
|
|
(-35 + 3 i VT047)1/3 |
|
' |
|
|
|
|
' |
|
|||||||
|
|
|
|
|
|
|
! |
( |
5 |
|
22 |
|
|
1/3 |
+ T |
(~35 + 3 i Vl047)1/3] ] ] !}, |
||||
|
|
|
|
15 / i / - |
12 |
3 (-35+ 3 i Vl047) |
||||||||||||||
|
|
|
|
|
|
|
(Vi |
|
|
|
|
|
I lii |
|||||||
r |
__1 |
+ |
1 |
|
( |
5_ |
____ |
22 |
|
|
|
+ 1 |
(-35 + 3 i VI047)1 |
|
||||||
lX_> |
4 |
2 |
|
|
|
12 + |
3 (-35 + 3 iV l047)1/3 |
' |
3 |
|
|
|
|
|||||||
|
1 |
|
( |
1 |
( |
|
|
|
|
|
88 |
|
-4 |
(-35 + 3 i VT047 )1 |
|
|||||
|
-4 |
/ i i |
i - io - |
|
|
|
|
|||||||||||||
|
|
л/ ( 3 |
( |
|
’ |
(-35 + 3 i |
Vl047 ) |
|
|
|
|
+ 4 (-35 + з iVTo47)1/3]];]} , |
||||||||
|
|
|
|
15 |
|
( |
( |
5 |
|
22 |
|
|
|
|||||||
|
|
|
|
|
|
|
(V[ |
12 |
3 (-35 + 3 i Vl047)1/3 |
’ |
3 |
|
|
))}) |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
-J |
I |
[ |
5 |
+ — ;----- 22 i--— xi/T + 4 |
|
|
i/з I |
|
||||||||
|
|
4 |
j |
12 |
("35 + 3 iV 1047) |
|
||||||||||||||
|
|
|
2 у |
|
|
3 (-35 + 3 1 Vl047) |
|
|
3 |
|
|
|
|
|||||||
|
1 |
|
( 1 |
( |
|
|
|
|
|
88 |
|
-4 |
(-35 + 3 i Vl047)1/3 + |
|
||||||
|
— |
|
i i— |
! io |
(-35 + 3 i Vl047 ) |
1/3 |
|
|||||||||||||
|
4 |
V( 3 |
( |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
15 |
|
f |
( |
5 |
|
22 |
|
|
|
+ 1 |
(-35 + 3 i Vl047)1 |
|
||||
|
|
|
|
|
(V ( |
12 |
3 (-35 + 3 iV l047)1/3 |
|
||||||||||||
|
|
|
|
|
|
|
|
3 |
|
|
III) |
|||||||||
! |
. 1 |
. 1 |
|
|
f_JL |
__________________ |
+ -| |
(-35 + 3 i Vl047)1/3] + |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
22 |
|
|
|
||||||
* |
|
4 |
2 |
V ( |
12 |
+ |
з (-35 + 3 i Vl047 ) 1/3 |
’ |
3 |
|
|
) |
|
|||||||
|
1 |
|
^ |
1 |
( |
|
|
|
|
|
88 |
|
|
(-35 + 3 iVI047 )1/3 + |
|
|||||
|
|
|
|
|
|
|
|
--------------------- г~тт~ -4 |
|
|||||||||||
|
Т 7 | з ( - 10- (-35 + 3 i V l 0 4 7 ) /3 |
|
1 |
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
f |
(_JL + ________ 22________ |
+ 1 |
(-35 + 3 i Vl 047)1/3]]]]}} |
||||||||||
|
|
|
|
|
|
|
(V |
( |
12 + 3 (-35+ 3 i Vl047)l/3 |
’ |
3 |
|
|
)))) |
Первое знакомство — калькулятор |
53 |
А вам слабо? Давайте попробуем решить уравнение JC5 + л* - 7 = 0 .
Solve [х |
5 + х |
7 |
== 0] |
|
{{х -> Root [-7 |
+#1 |
+ #15 &, |
1]}, |
|
{х -> Root [-7 |
+#1 |
+ #15 &, |
2] }, |
|
{х -> Root [-7 |
+#1 + #15 &, |
3]}, |
||
{х -> Root [-7 |
+#1 + #15 &, |
4] }, |
||
{х -> Root [-7 |
+#1 + #15 &, |
5]-}} |
Да, корни уравнения — это его корни... (И, как видите, их пять, что тоже не осо бенно информативно, если учесть, что многочлен пятой степени.) В данном случае при необходимости можно решить уравнение численно.
NSolve [хЛ5 + х - 7 == 0]
{{х>-1.21388-0.924188 I },{х> -1.21388+0.924188 I}, {х>0.508469 -1.36862 I. ),{ х>0.508469 +1.36862 I } ,{х>1.41081}}
Чтобы решить трансцендентное уравнение, нужно задать начальное приближение к корню. Вот как, например, можно решить уравнение COSJC = 2X .
FindRoot [Cos[x] == 2* х, {х,0}] {х>0.450184}
Давайте попробуем решить систему линейных алгебраических уравнений.
Solve |
[{а х +Ь у == д, |
с х + d у == |
h}, {х,у}] |
И* |
-d д + b h |
- с д + a h л л |
|
-b с + a d ' ^ |
b c - a d J J |
|
А чтобы решить систему трансцендентных уравнений, нужно задать начальные при
ближения неизвестных. |
^ |
FindRoot [{ х + у == S in [x ], х |
у == Costx]}, { х ^ } , {у,0}] |
{х>0.704812,у> -0 .0569214} |
|
I
Система Mathematica умеет решать и дифференциальные уравнения и их системы.
DSolve [у 1’ [х] - |
2у’ [х] + |
1 == 0, |
у[х], х] |
{{у[х] -> j * j |
е2хС[1] |
+ С [2] } } |
|
Как видите, решение содержит произвольные постоянные с [1] и с [2].
Можно найти также численное решение задачи Коши для дифференциальных!
уравнений или их систем. |
|
|
|
1 |
|
NDSolve[{х ' [ t] = = - y [ t] - x [ t] , у ' [ t ] ==2х[ t ] - у [ t ] , х [0]==1, |
|
1 |
|||
У[0]==—1 } ,{ x [ t] ,y [ t ] } ,{ t ,0,10}] |
|
|
| |
||
{{х [t ]> In te rp o la tin g F u n c tio n [{ { 0 .,1 0 .} } ,< > ][t], |
|
S |
|||
у [t]> In te rp o la tin g F u n c tio n [ { { 0 1 0 .} } ,< > ] [ t ] }} |
|
В |
|||
Правда, |
решение |
содержит |
приближенную |
функцию |
(объект | |
in terp o latin g F u n ctio n ). Но этот объект может быть вычислен, как и любой другой объект системы Mathematica. В частности, можно построить график.
P lo t[E v a lu a te [{ x [t],y [t]} /.% ],{ t,0 ,1 0 } ,P lo tR a n g e -> A ll]
54 |
Гпава l |
Экстремумы функций
Система Mathematica позволяет найти экстремумы функций одной и нескольких переменных. Вот как, например, можно найти локальный минимум функции excosx.
FindMinimum[Exp[х ]*Cos[х] , {х,0}]
{-0.0670197,{х> -2.35619}}
Авот как можно найти минимум функции sinх cos у .
FindMinimum[Sin[х ]*Cos[у] ,{ х ,0 },{у ,0}] { -1 .,{ х>-1.5708,у>0.}}
Ну и раз уж речь зашла об экстремумах функций, рассмотрим случай линейных функций.
Линейное программирование
Используя систему Mathematica, нетрудно решить задачи линейного программиро вания небольшой размерности. Рассмотрим пример.
Maximize |
[19х |
|
47у |
+ 28z, {х + |
у+ z > 0, х + у + z < 1, х > 0, у > 0, |
|
z > 0}, |
{х, |
у, |
z }] |
|
|
|
Maximize::wksol |
|
|
|
|||
Warning: There is no maximum in the region |
||||||
described |
by |
the |
c o n tra in ts ; |
retu rn in g |
||
a r e s u lt |
on |
the |
boundary. More... |
|||
{28,{x>0, y>0, z > l}} |
|
|
Правда, если экстремум достигается на границе (а в задачах линейного програм мирования это случается почти всегда), при использовании функции Maximize выда ется предупреждение об этом.
Можно, конечно, пользоваться и функцией ConstrainedMax, но она становится все менее популярной, и система Mathematica предупреждает, что в последующих вер сиях она может быть удалена.
ConstrainedMax |
[19х |
47у + 28z, {х + у+ z > 0, х + у + z < 1, х > 0, |
У > 0, z > 0}, |
{х, у, |
z } ] |
Первое знакомство — калькулятор |
55 |
ConstrainedMax:ideprec
ConstrainedMax is deprecated and will not be supported in future versions of Mathematics. Use NMaximize or Maximize instead. More...
{28,{x>0,y>0,z>l}}
Впрочем, для решения задачи можно воспользоваться и функцией Nmaximize.
NMaximize[{19x-47y+28z,{x+y+z>0,x+y+z<l,x>0,y>0,z>0}},{x,y,z}]
{28.,{x>0.,y>0.,z>l.}}
Обратите внимание на то, что списки параметров у этих функций разные: у функ ции Maximize — три параметра, а у NMaximize — только два.
Резюме
Мы бегло ознакомились с применением системы Mathematica в качестве калькуля тора. Но даже из этого беглого знакомства видно, что если это и калькулятор, то очень мощный и интеллектуальный. Немного позже мы узнаем, что он еще и про граммируемый. Как бы то ни было, с ним стоит познакомиться поближе. И если вы запомнили не все, не огорчайтесь. Ведь начнем мы с самого начала — с чисел.
Задачи
Задача 2.1. Решите уравнение sinjc = 0.
Задача 2.2. Решите уравнение (х - 2)(х - \)(х - 8)(лг- 4) = 1х2
Задача 2.3. Решите уравнение |
Q r-jc + l)3 _ |
х~(х —I)2 |
' |
|
|
|
(5 —-у/5 + 1)3 _ |
5(л/5 —I)2 |
|
Задача 2.4. Решите уравнение |
(jr-jc + l)3 _ |
х~(х —1) |
‘ |
|
|
|
(а - у /а + 1)3 ~ а(>/а - I ) 2 |
||
Задача 2.5. Решите уравнение |
(х2—JCН-1)2 _ |
х2(х —1) |
|
|
|
|
(5-л/5 + 1)2 ~5(у/5-1)2 ' |
||
Задача 2.6. Постройте график |
|
,(1 |
|
|
функции у = лг --hSin“—-—:— г----------- |
||||
|
тт |
7Г |
2 |
дс2 + х3 +0.01 J |
в промежутке |
|
|
||
25’25/ |
|
|
||
|
|
|
I
56 |
Гпава I |
Глава 3
Числа, их представление
иоперации над ними
Вэтой главе...
♦Что такое число
♦Представление вещественных чисел систематическими дробями: функция N. Разрядность и точность вещественных чисел: функции Precision и Accuracy
♦Отбрасывание малых вещественных чисел: функция Chop
♦Целая и дробная части вещественного числа
♦Приближение вещественных чисел рациональными: функция Rationalize
♦Позиционные системы счисления
♦Экспоненциальное представление чисел: функция MantissaExponent
♦Модуль (абсолютная величина) числа: функция Abs
♦Знак числа: функция Sign
♦Числитель и знаменатель числа: функции Numerator и Denominator
♦Цепные дроби
♦Комплексные числа
♦Резюме
♦Задачи
Что такое число
Что такое число? Однозначного ответа на этот вопрос нет. Например, комплексное число — это число или все-таки вектор? А действительное число — это число или се чение во множестве рациональных чисел? А если комплексные числа все-таки числа, то кватернионы — тоже числа или уже объекты другой природы? Ну а если даже ква тернионы — все-таки числа, то разве не следует к числам причислить и октавы Кэли? Иногда очень удобно считать, что числа — это элементы любого кольца. Но тогда и матрицы (элементы кольца матриц) тоже ведь нужно считать числами! Впрочем, это совсем не глупо, как может показаться на первый взгляд: в кольце матриц размера 2x2, элементами которых являются вещественные числа, можно выделить подколь цо, которое на самом деле является полем, изоморфным полю комплексных чисел. Так что не удивительно, что каждая эпоха в истории математики давала свой ответ на вопрос о том, что такое число.
Не удивительно и то, что в системе Mathematica предусмотрено несколько типо) чисел. В качестве базовых типов чисел удобно рассматривать целые, рациональные, ве щественные и комплексные числа. Все они могут содержать практически любое количест во цифр. (Все же количество цифр, конечно, ограничено объемом имеющейся памяти.)
Чтобы разобраться в этом, давайте рассмотрим классический пример — занима тельную задачу из многих популярных книг по математике для младших школьников.
Пример 3.1. Наибольшее число, которое можно записать тремя цифрами. Постановка задачи: какое наибольшее число можно записать с помощью трех цифр? Ну, конечно, 999, почти не задумываясь, отвечают школьники. И знаете, они по
своему правы. Ведь поскольку в условии задачи говорится о цифрах, то их можнс только записывать одна за другой. Поскольку их три, значит, число будет трехзнач ным. А 999 — наибольшее трехзначное число, причем в его записи используется толь ко три девятки. Но оказывается, что не все так просто. Ведь на самом деле постанови задачи нечеткая. Действительно, в условии ведь не указано, как три цифры можнс использовать для записи числа. Ведь каждую из трех цифр можно использовать для записи чисел, а затем над этими числами выполнить какие-нибудь операции. Можно, например, с помощью двух цифр записать число 99, а с помощью оставшейся циф ры — число 9, а затем возвести 99 в степень 9: 999.
С вычислением этого числа система Mathematica справляется без малейших за труднений.
999 = 9 1 35 1 7 2 4 7 4 8 3 6 4 0 8 9 9
Но можно числа 9 и 99 скомбинировать и иначе: 9" Система Mathematica без труда вычислит и это число.
9"= 2 9 5 1 2 6 6 5 4 3 0 6 5 2 7 5 2 1 4 8 7 5 3 4 8 0 2 2 6 1 9 7 7 3 6 3 1 4 3 5 9 2 7 2 5 1 7 0 4 3 8 3 2 8 8 6 0 6 3 8 8 4 6 3 7 6 7 6 9 4 3 4 3 3 4 7 8 0 2 0 3 3 2 7 0 9 4 1 1 0 0 4 8 8 9
Мы сразу видим, что 9" гораздо больше, чем 999 Но вот тут-то оказывается, чт есть еще и третий вариант: 99 Это число имеет 369 693 100 цифр, т.е. более трет миллиарда! Понятно, что во многих компьютерах объем памяти меньше количеств цифр этого числа, и потому система Mathematica записать его не сможет. (Если BI все же решили вычислить это число и вам надоело ждать, выберите Ядро^Прерват вычисление.)
Впрочем, если допустить еще и операцию вычисления факториала, то, |
так ка |
9! = 362880, с помощью трех цифр можно записать еще большее число: 9?' |
Это чис |
ло система Mathematica уж точно записать не сможет! Правда, вычислить показател степени — число 9f ' , десятичная запись которого содержит 65 269 цифр, систем Mathematica вполне под силу!
Наконец, замечу, что авторы популярных книжек упустили еще одну возможности использование скобок. С их помощью (и факториала), даже одной девятки (или лю бой другой цифры, большей 2), можно выписать бесконечно возрастающую последо вательность чисел.
9 , 9 ! = 3 6 2 8 8 0 , (9 !)!, ((9 !)!)!, (((9 !)!)!)!, ((((9 !)!)!)!)!,
Уже число (9!)! содержит 4 282 655 цифр, но система Mathematica справляется и < ним! Но вот предложить ей вычислить следующее число в этой последовательност! даже и не пытайтесь!
Разобравшись немного с числами, давайте изучим операции над ними. Как видж из примера, арифметические операции над целыми и рациональными числами, как i во многих других системах компьютерной алгебры, выполняются точно (все цифрь
58 |
Гпава 5 |
результата верные). Вот, например, результат возведения в сотую степень числа пять, найденный системой Mathematica.
5100 = 78886090522101180541172856528278622 9673206435109023004770278930
6640625
Однако при таком представлении целых или рациональных чисел иногда трудно судить о величине результата. Кроме того, поскольку система Mathematica стремится сохранить точность, она оставляет фактически невычисленными такие выражения,
как y [l, sin— и т-д-
Поэтому вполне логично задать вопрос: как же сделать так, чтобы система Mathematica производила вычисления над вещественными числами, представляя ре зультаты в виде десятичных дробей с заданным количеством разрядов?
Представление вещественных чисел
систематическими дробями: функция N.
Разрядность и точность вещественных чисел: функции Precision и Accuracy
Оказывается, что если вместо целого числа указать равное ему вещественное (для этого достаточно поставить десятичную точку в записи числа), то в результате также будет записано вещественное число с десятичной точкой.
Sqrt[10]
>Ло
Sqrt[10.]
3.16228
Более того, существует конвертор (преобразователь), который представляет вещест венные числа, а также вещественную и мнимую части комплексных чисел в виде десятич ной дроби. Таким конвертором является функция N.
N[EAPi]
23.1407
При необходимости разрядность можно указать и явно: у функции N имеется вто рой, необязательно указываемый аргумент, который определяет разрядность чисел, ис пользуемую при вычислении результата. Если второй аргумент не задан, то по умолчанию в вычислениях используется $MachinePrecision цифр, причем резуль тат выводится с шестью цифрами. Например, ниже вычисляется 50 десятичных зна ков 71.
N[Pi,50]
3.1415926535897932384626433832795028841971693993751
При вычислениях с вещественными числами очень полезны функции Precision и Accuracy, названия которых можно перевести как разрядность и точность. Раз рядность вещественного числа — это количество значащих десятичных цифр в нем, а точность — это количество значащих десятичных цифр в его дробной части. При вычислениях система Mathematica считает, что вещественные числа имеют либо машинную (по умолчанию), либо неопределенную (произвольную) разрядность. Для того чтобы узнать машинную разрядность компьютера, достаточно вычислить выражение $MachinePrecision. (В версии 5 системы Mathematica имеется также
Числа, их представление и операции над ними |
59 |
константа MachinePrecision, которая равна значению выражения $MachinePrecision.) На разных типах компьютеров это выражение, конечно, может принимать разные значения. На современных ПК оно обычно близко к 16.
$MachinePrecision 15.9546
Значения функций Precision и Accuracy для целых и рациональных чисел рав ны Infinity.
Если вводится менее $MachinePrecision цифр вещественного числа, то считает ся, что его разрядность равна $MachinePrecision.
Если количество введенных цифр вещественного числа превышает $Machine Precis ion, то его разрядность равна количеству введенных цифр.
Ниже показаны способы задания разрядности и точности при внешнем представле нии вещественных чисел. Для задания численного значения разрядности и точности используется знак
Число с машинной разрядностью: 123.4
Число с произвольной разрядностью (на некоторых машинах):
123.45678901234567890
Число с машинной разрядностью (на всех машинах): 123.45678901234567890'
Число с произвольной разрядностью 200 десятичных знаков: 123.456 200
Число с произвольной разрядностью и точностью 200 десятичных знаков:
123.456''200
Число с машинной разрядностью в экспоненциальной форме: 1.234*Л6
Число в экспоненциальной форме с разрядностью 200: 1.234'200*Л6
Число в двоичной системе с разрядностью 200: 2АЛ101.111200
Число в двоичной системе в экспоненциальной форме: 2АА101.111'200*А6
Ниже приведены примеры, показывающие, как задание разрядности и точности влияет на представление результатов.
123.456'10
123.4560000
123.456''10
123.456000000
123.456'200
123.456000000000000000000000000000000000000000000000000000000000000000
оооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
При вычислениях отслеживается точность и разрядность результата. Поэтому функцию N часто вызывают для вычисления численных значений выражений, в част ности констант.
п=50
50
pin = N [Pi,п]
3.1415926535897932384626433832795028841971693993751 sqad = N [Sqrt[20],n]
4.4721359549995793928183473374625524708812367192231 {Precision[pin],Accuracy[pin],Precision[sqad],Accuracy[sqad]} 2 {50.,49.5029,50.,49.3495}
i
60 |
Глава 31 |
Встроенные в систему Mathematica алгоритмы обладают тем свойством, что при вычислении функции N от констант все цифры результата получаются верными. Однако в общем случае не следует ожидать, что все п цифр результата вычисления выражения N[expr, п] верные. Справедливо лишь то, что вычисления велись с раз рядностью не менее п.
Поскольку комплексные числа можно рассматривать как пары вещественных чисел, аргументами функций N, Precision и Accuracy могут быть и комплексные числа.
compl = N[Sqrt[20 + 51]] 4.50641 +0.554765 I
{Precision[compl], Accuracy [compl]} {MachinePrecision,15.2975}
Р а з р я д н о с т ь и т о ч н о с т ь п р и в ы п о л н е н и и о п е р а ц и й
н а д ч и с л а м и
Давайте теперь посмотрим, что происходит с разрядностью и точностью при вы полнении действий.
X=N[E"10,40]
2 2 0 2 6 . 4 6 5 7 9 4 8 0 6 7 1 6 5 1 6 9 5 7 9 0 0 6 4 5 2 8 4 2 4 4 3 6 6 3 5
(Precision[х],Accuracy[х]}
{ 4 0 . , 3 5 . 6 5 7 1 }
Как и следовало ожидать, разрядность больше точности, поскольку число больше 1 и, следовательно, некоторые значащие цифры стоят до десятичной точки. Передвинем теперь точку на 3 разряда вправо, для чего умножим число на 1000, и посмотрим, из менится ли точность и разрядность.
у=1000*х
2.202646579480671651695790064528424436635x107
{Precision[у] ,Accuracy[у]}
{40.,32.6571}
Как видим, разрядность не изменилась, точность уменьшилась на 3, поскольку фактически теперь в дробной части на 3 цифры меньше. А что получится, если мы точку передвинем вправо? Для этого исходное число нужно разделить на 1000.
z=x/1000
22.02646579480671651695790064528424436635
{Precision[z],Accuracy[z]}
{40.,38.6571}
Разрядность, как и прежде, не изменилась, зато точность увеличилась на 3, по скольку добавилось три значащих разряда после точки.
А теперь давайте в исходном числе передвинем десятичную точку на 6 разрядов вправо. Для этого разделим его на 1 000 000. Тогда целая часть числа будет равна 0. Изменится ли при этом разрядность?
z=x/1000000
0.02202646579480671651695790064528424436635
{Precision[z],Accuracy[z]}
{40.,41.6571}
Разрядность при этом, как видите, не изменилась, но точность увеличилась и даже превзошла разрядность!
Числа, их представление и операции над ними |
61 |
Отсюда можем заключить, что в то время как разрядность (количество значащих цифр) не зависит от положения десятичной точки, точность изменяется при измене нии положения точки и может быть как меньше, так и больше разрядности. Кстати, а как система Mathematica определяет разрядность и точность? Почему эти числа не обязательно целые?
Чтобы узнать ответ на этот вопрос, давайте разберемся, как система Mathematica подсчитывает эти величины. Пусть задано приближенное значение вещественного числа х с погрешностью 8. Само число х можно рассматривать как десятичную дробь, для которой известны лишь некоторые разряды. Система Mathematica по заданному приближению числа х может считать, что число х лежит в интервале (х-8/2, х+8/2), длина которого равна погрешности 5. Тогда разрядность числа х определяется
KaKlgI0^ - , а его точность — как -Ig.08-
Теперь понятно, почему так часто получаются нецелые числа в качестве значеш точности и разрядности. Таким образом, если точность числа х равна а, то его п грешность 8= 1(Г" Если же число х * 0 и его разрядность равна р, то его norpeL ность 8 = |JC|- Ю ^
Если прибавить к числу (или отнять от него) величину, меньшую погрешности, виз ально это не будет заметно.
x=N[PiA10,30]
93648.0474760830209737166901849 {Precision [х] Accuracy [х] } {30.,25.0285} {х1=х-10л-26,х,х2=х+10л-26}
{93648.0474760830209737166901849,93648.0474760830209737166901849,
93648.0474760830209737166901849}
Но информация о точности хранится.
10л26*(х-х2)
О.хЮ1
Фактически это означает, что точность утеряна — нет ни одной верной значаще цифры результата, так как вычисления велись с недостаточной для этого точность* Заранее же предвидеть, какая точность потребуется в дальнейшем, можно далеко * всегда. Поэтому ничуть не удивительно, что при вычислениях с вещественными чи< лами иногда возникают ничего не значащие “хвосты”, которые не имеют никако* физического смысла. Например, при вычислении выражения Exp[N[2 я I] ], которс
равно 1, возникает мнимый “хвостик” -2.44921x10 161. Такие хвосты можно отсечь.
Отбрасывание малых вещественных чисел: функция Chop
Вещественные числа, меньшие КГ10, можно отбросить с помощью функции Chop
n=Exp[N[2 Я I]]
1. -2.44921x10 16I
Chop[п]
1.
Задание второго числового аргумента eps функции chop позволяет отбрасывать ве щественные числа, абсолютная величина которых меньше eps.
62 |
ГлаваI |