Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Mathematica 5. ╨б╨░╨╝╨╛╤Г╤З╨╕╤В╨╡╨╗╤М

.pdf
Скачиваний:
1
Добавлен:
19.11.2023
Размер:
33.75 Mб
Скачать

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. Решите уравнение

(х2JCН-1)2 _

х2(х —1)

 

 

 

(5-л/5 + 1)2 ~5(у/5-1)2 '

Задача 2.6. Постройте график

 

,(1

 

функции у = лг --hSin“—-—:— г-----------

 

тт

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