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

Mathcad - ЛР1

.pdf
Скачиваний:
170
Добавлен:
24.02.2016
Размер:
259.18 Кб
Скачать

Министерство образования Российской Федерации Санкт - Петербургский государственный политехнический университет

Институт менеджмента и информационных технологий

Кафедра ПО ВТ и АС

Лабораторный практикум по курсу вычислительной математики

ОТЧЕТ

по лабораторной работе №1

Тема:

ТЕОРИЯ ПОГРЕШНОСТЕЙ И МАШИННАЯ АРИФМЕТИКА

Выполнил: ______________

Группа: _____

Вариант: 14

Проверил: Царев В.А.

Отметка о зачете __________________

" ___ " ______________ 2006 г.

Череповец

2006

ORIGIN := 1

Функция, вычисляющая количество значащих цифр в записи,

получающая в качестве входных данных точное значение величины (True) и её приближенно вычисленное значение (Current)

true_digits(True, Current) := D ¬ True - Current Temp ¬ Current Current ¬ Current k ¬ 10

i ¬ 0

while Temp ³ 0.1 if Temp ³ 1 k

i ¬ i + 1 k ¬ k×10

Temp ¬ Current - floor(Temp) Temp2 ¬ Temp

j ¬ 0

while floor(Temp) ¹ Temp2

 

 

Temp ¬ Temp×10

 

 

 

 

Temp2 ¬ Temp2×10

 

 

 

 

j ¬ j + 1

 

 

 

m ¬ 0

 

 

 

Digit ¬ 10i−1

 

 

 

for

p Î 0.. i - 1

 

 

 

 

 

m ¬ m + 1 if

Digit

> D

 

 

 

 

 

2

 

 

 

 

Digit ¬ Digit

 

 

 

 

 

10

 

 

 

n ¬ 0

 

 

 

Digit ¬ 0.1

 

 

 

for

p Î 0.. j

 

 

 

 

 

n ¬ n + 1 if

Digit

> D

 

 

 

 

 

2

 

 

 

 

Digit ¬ Digit

 

 

 

 

 

10

 

 

 

m + n

 

 

 

D(True, Current) :=

 

True - Current

 

Абсолютная погрешность

 

 

d(Current, D) :=

 

 

 

 

D

 

Относительная погрешность

 

 

 

 

 

 

 

 

 

Current

 

 

 

 

 

 

 

Задача 1.1. Дан ряд å an . Найти сумму ряда аналитически. Вычислить значения частичных сумм ряда n=0

N

SN = å an и найти величину погрешности при значениях N = 10, 102 , 103 , 104 , 105 . n=0

Теоретический материал.

Пусть a - точное значение, a * - приближенное значение некоторой величины. Абсолютной погрешностью приближенного значения a * называется величина

D(a*) = a - a* . Относительной погрешностью значения a * (при a ¹ 0)

называется величинаδ (a*) =

D(a*)

. Так как значение a как правило неизвестно,

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a - a *

 

£

 

(a*);

 

a - a *

 

£

 

(a*) .

 

 

 

 

 

 

 

 

 

 

чаще получают оценки погрешностей вида:

 

D

δ

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Величины (a*) и δ (a*) называют верхними границами (или просто границами) абсолютной и относительной погрешностей.

Значащую цифру числа a *называют верной, если абсолютная погрешность числа не превосходит одной второй единицы разряда, соответствующего этой цифре.

 

 

 

 

 

 

 

 

 

 

N

 

 

 

48

 

 

 

 

 

 

 

 

 

 

 

 

 

Введем функцию

S(N)=

å

 

 

 

 

 

 

. Тогда абсолютную погрешность можно

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n = 0

 

n

 

+ 8n + 15

 

.

 

 

 

 

 

 

 

определить с помощью функции d(N) =

S(N) S

 

 

 

 

 

 

 

Аналитическое решение задачи:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SN

 

å

 

 

48

 

= å -24æ

1

 

 

 

-

1

 

ö

= -24×

æ -1 - 1 +

1

+

1

+

1

ö

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n = 0 n

+ 8n

+ 15

n = 0

è n + 5 n + 3 ø

 

 

è 3 4 N + 2 N + 3 N + 4ø

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

 

 

48

 

 

 

 

 

 

 

 

 

 

 

 

S

 

 

lim SN = 14

Ответ:

SN

 

 

å

 

 

 

 

 

 

 

 

= 14

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N → ∞

 

 

 

 

 

 

 

n = 0 n

 

 

+ 8n

+ 15

 

 

 

 

 

 

 

 

 

Решение задачи средствами MathCAD:

Находим сумму ряда при N=10:

10

 

48

sum := å

 

2

+ 8×n + 15

n = 0

n

sum = 10.6857142857143

D(14, sum) = 3.31428571428572

M1 := true_digits(14, sum)

M1 = 1

Находим сумму ряда при N=100

100

 

48

sum := å

 

2

+ 8×n + 15

n = 0

n

sum = 13.5406593406593

D(14, sum) = 0.459340659340665

M2 := true_digits(14, sum)

M2 = 2

Находим сумму ряда при N=1000

1000

 

48

sum := å

 

2

+ 8×n + 15

n = 0

n

sum = 13.9522150205149

D(14, sum) = 0.047784979485053

M3 := true_digits(14, sum)

M3 = 3

Находим сумму ряда при N=10000

10000

 

48

sum := å

 

2

+ 8×n + 15

n = 0

n

sum = 13.9952021590164

D(14, sum) = 0.004797840983551

M4 := true_digits(14, sum)

M4 = 4

Находим сумму ряда при N=100000

100000

 

48

sum := å

 

2

+ 8×n + 15

n = 0

n

sum = 13.9995200215991

D(14, sum) = 0.000479978400936

M5 := true_digits(14, sum)

M5 = 5

MT

Таблица 1 - Результаты вычислительного эксперимента:

 

 

 

 

 

 

 

 

 

 

N

 

Значение

 

Величина

 

Количество верных

 

 

 

частичной суммы

 

абсолютной

 

 

 

 

 

 

цифр

 

 

 

 

ряда

 

погрешности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

10.685714

3.314286

1

 

 

 

 

 

 

 

 

 

 

 

100

13.540659

0.459341

2

 

 

 

 

 

 

 

 

 

 

 

1000

13.952215

0.047785

3

 

 

 

 

 

 

 

 

 

 

 

10000

13.995202

0.004798

4

 

 

 

 

 

 

 

 

 

 

 

100000

13.99952

0.00048

5

 

 

 

 

 

 

 

 

 

 

 

æ a11

a12

a13

ö

 

Задача 1.2. Дана матрица A=

ç a

a

22

a

÷

. Найти определитель матрицы пользуясь правилом

 

ç

21

 

23

÷

 

 

ç a

a

a

÷

 

 

è

31

 

32

33

ø

 

Сарруса. В каждый из диагональных элементов матрицы A по очереди внести погрешность в 1%. Как изменился определитель матрицы А? Указать количество верных цифр и вычислить величину относительной погрешности определителя в каждом случае.

Функция, вычисляющая определитель квадратной матрицы по методу Сарруса:

det3(A) :=

 

det ¬ 0

 

 

 

 

 

 

 

det ¬ det + (A1, 1×A2, 2×A3, 3 + A2, 1×A1, 3×A3, 2 + A1, 2×A2, 3×A3, 1)

 

 

 

 

det ¬ det - (A3, 1×A2, 2×A1, 3 + A2, 1×A1, 2×A3, 3 + A3, 2×A2, 3×A1, 1)

 

 

 

 

det

 

 

Исходные данные:

 

æ 30

34

19

ö

A :=

ç

314

354

200

÷

 

ç

 

 

 

 

÷

 

è

2

8

13

ø

Решение задачи:

det3(A) = -852

True := det3(A) Точное значение определителя (без внесенных возмущений)

Внесем погрешность в 1% последовательно в каждый из диагональных элементов матрицы A:

 

 

æ30 + 0.3

34

19

ö

 

A1,1

A :=

ç

314

354

200

÷

det3(A) = 48.6000000000058

 

 

ç

 

 

 

÷

 

 

 

è

2

8

13

ø

 

D(True, det3(A)) = 900.600000000006

d(det3(A) , D(True,det3(A))) = 18.5308641975288

true_digits(True, det3(A)) = 0 Количество верных цифр в записи

 

 

æ 30

34

19

ö

 

A2,2

A :=

ç

314

354 + 3.54

200

÷

det3(A) = 394.080000000016

 

 

ç

 

 

 

÷

 

 

 

è

2

8

13

ø

 

(True, det3(A)) = 1.24608000000002 × 103

δ(det3(A) , (True,det3(A))) = 3.16199756394632

 

true_digits(True, det3(A)) = 0

Количество верных цифр в записи

 

æ 30

34

19

ö

 

A3,3

A := ç

314

354

200

÷

det3(A) = −859.279999999999

 

ç

 

 

 

÷

 

 

è

2

8

13 + 0.13 ø

 

 

(True, det3(A)) = 7.27999999999884

 

δ(det3(A) ,

(True,det3(A))) = 8.47220929149852 × 103

true_digits(True, det3(A)) = 1 Количество верных цифр в записи

 

 

æ

30

34

19 ö

 

A3,1

A :=

ç

314

354 200 ÷

det3(A) = −850.51999999999

 

 

ç

 

 

÷

 

 

 

è2 + 0.02

8

13 ø

 

 

(True, det3(A)) = 1.48000000001048

 

δ(det3(A) , (True,det3(A))) = 1.74011193153658 × 103

 

true_digits(True, det3(A)) = 2

Количество верных цифр в записи

 

æ 30

34

19 + 0.19 ö

 

A1,3

A := ç

314

354

200

÷

det3(A) = −509.239999999991

 

ç

 

 

 

÷

 

 

è

2

8

13

ø

 

 

(True, det3(A)) = 342.760000000009

 

δ(det3(A) ,

(True,det3(A))) = 0.673081454716864

 

true_digits(True, det3(A)) = 0

Количество верных цифр в записи

Вывод: В данном вычислительном эксперименте даже при однопроцентом возмущении некоторых элементов матрицы, в её определителе не оказалось в результате ни одной верной цифры. Это связано с тем, что погрешность вводилась в диагональные элементы, следовательно, даже

небольшая погрешность в некоторых случаях увеличивалась значительно (много операций умножения неточногочисла на другие числа, достаточно большие по модулю). Наименьшая погрешность результата была достигнута при внесении наименьшего абсолютного возмущения, т.е. при внесении возмущения в наименьший из диагональных элементов.

Задача 1.3. Для заданной матрицы A найти обратную матрицу (если это возможно).

Затем в элемент a11 внести погрешность в 10% и снова найти обратную матрицу. Объяснить полученные результаты.

Исходные данные:

 

æ

48

3

6 ö

 

 

 

 

 

 

 

 

 

 

A :=

ç

32

2

4

÷

 

 

 

 

 

 

 

 

 

 

 

ç

 

 

 

 

÷

 

 

 

 

 

 

 

 

 

 

 

è 5

 

-1

2

ø

 

 

 

 

 

 

 

 

 

 

Решение задачи:

 

 

 

 

 

 

 

 

 

det3(A) = 0

 

 

Матрица является вырожденной, поэтому она не имеет обратной

 

æ

48 + 4.8

3

6 ö

 

 

 

 

æ0.208333333333334

-0.312500000000001

0

ö

A :=

ç

 

 

 

 

 

÷

 

1

 

 

ç

 

32

 

2

4 ÷

B :=

 

B =

ç

-1.14583333333334

 

-0.5

÷

 

è

 

 

5

 

-1

2 ø

A

 

ç

1.96875

÷

 

 

 

 

 

 

 

 

 

 

 

 

è

-1.09375

1.765625

0.25 ø

det3(A) = 38.4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

æ

1

 

 

 

 

15

0

ö

 

 

 

 

 

 

 

ç

-3.5076108684251 ´ 10

 

÷

 

 

 

 

 

A×B = ç

0

 

 

 

 

1

 

0

÷

 

 

 

 

 

 

 

ç

 

 

 

 

 

 

 

 

÷

 

 

 

 

 

 

 

è0

 

 

 

 

0

 

1 ø

 

 

 

 

 

Вывод: До внесения возмущений в матрицу она имела определитель, равный нулю. Внесение абсолютной погрешности привело к изменению первого сомножителя в выражении, вычисляемом по правилу Сарруса. Определитель принял значение, отличное от нуля и вычисление обратной матрицы стало возможным.

Задача 1.4. Найти ранг заданной матрицы A. Затем внести погрешность в 0.1% а) в элемент a11;

b) во все элементы матрицы

 

и снова найти ранг. Объяснить полученные результаты.

Исходные данные:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

æ 0.6

4.5

0.3

3

 

 

ö

 

 

 

 

 

 

 

A :=

ç2.1

1.2

0.9

 

7 ÷

 

 

 

 

 

ç

1.2

9

0.6

6

 

 

÷

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ç

 

 

÷

 

 

 

 

 

 

 

 

è1.2

3

3.6

4 ø

 

 

 

 

 

 

 

Решение задачи:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

rank(A) = 3

 

 

 

 

 

 

A

 

= 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

æ0.6 + 0.0006 4.5

 

 

 

0.3

3 ö

 

 

 

 

ç

2.1

1.2

0.9

7

÷

 

 

 

A :=

ç

÷

 

 

 

ç

 

1.2

 

9

 

 

 

 

0.6

6

÷

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ç

 

 

 

 

 

 

÷

 

 

 

 

è

1.2

 

3

 

 

 

 

3.6

4 ø

 

 

 

 

rank(A) = 4

 

 

A

 

 

= −0.124416000000001

 

 

 

 

 

 

 

 

 

æ 0.6 + 0.0006

4.5 + 0.0045

0.3 + 0.0003

3 + 0.003 ö

 

ç

2.1

+ 0.0021

1.2 + 0.0012

0.9 + 0.0009

7 + 0.007

÷

A :=

ç

÷

ç

1.2

+ 0.0012

9 + 0.009

 

0.6 + 0.0006

6 + 0.006

÷

 

 

 

ç

 

÷

 

è1.2 + 0.0012

3 + 0.003

 

3.6 + 0.0036

4 + 0.004 ø

 

rank(A) = 3

 

 

 

A

 

= 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод: Ранг матрицы численно равен максимальной степени отличного от нуля минора матрицы. Минор четвертого порядка (т.е. определитель данной матрицы) является вырожденным (определитель равен нулю). Однако после внесения возмущения в первый её элемент определитель матрицы A принял значение, отличное от нуля (соответственно ранг матрицы стал равен четырем, т.к. минор четвертого порядка уже не являлся вырожденным). Но

после внесения одинаковых процентных возмущений во все элементы матрицы её ранг снова стал равным трем, т.е. минор четвертого порядка снова стал вырожденным. Это объясняется тем, что внесение одинаковых

процентных возмущений во все элементы эквивалентно умножению всех элементов матрицы на одно и то же число. Умножение матрицы на число не изменяет её ранг.

Задача 1.5. Дано квадратное уравнение x2 + bx + c = 0 . Предполагается, что один из коэффициентов уравнения (в индивидуальном варианте помечен *) получен в результате округления. Произвести теоретическую оценку погрешностей корней в зависимости от погрешности коэффициента. Вычислить корни уравнения при нескольких различных значениях коэффициента в пределах заданной точности. Сравнить полученные результаты.

Исходные данные:

a := 1 b := -39.6

c := -716.85

 

 

korni_uravnenia(a,b, c) :=

 

D ¬ b2 - 4×a×c

 

 

 

 

(-b -

 

)

 

 

X1 ¬

D

 

 

2×a

 

 

 

 

 

(-b +

 

)

 

 

X2 ¬

D

 

 

2×a

 

 

 

 

X

 

 

 

Решение задачи:

 

 

 

 

 

k := korni_uravnenia(1,-39.6, -716.85)

æ-13.5 ö

k = ç ÷

è 53.1 ø

Функции, возвращающие корни квадратного уравнения:

x1(a,b, c) := -b - b2 - 4×a×c 2×a

x2(a,b, c) := -b + b2 - 4×a×c 2×a

Частная производная по b, вычисленная средствами MathCAD:

d x1(a, b, c) = -0.202702702702697 db

d x2(a, b, c) = -0.797297297297304 db

Теоретически вычисленная частная производная по b (Формула Лагранжа):

 

1

æ

 

 

 

2×b

ö

f_b_x1(a,c, b) :=

 

×ç

-1

-

 

 

 

 

÷

2×a

 

 

 

 

2× b2 -

 

 

 

è

 

 

4×a×c ø

 

1

æ

 

 

 

2×b

ö

f_b_x2(a,c, b) :=

 

×ç

-1

+

 

 

 

 

÷

2×a

 

 

 

 

2× b2 -

 

 

 

è

 

 

4×a×c ø

f_b_x1(1,-716.85, -39.6) = -0.202702702702703

f_b_x2(1,-716.85, -39.6) = -0.797297297297297

 

æ0.01

ö

 

Db :=

ç

0.02

÷

Массив абсолютных погрешностей, вводимых в коэффициент b

ç

0.03

÷

 

 

 

ç

÷

 

 

è0.04

ø

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]