
Mathcad - ЛР1
.pdfМинистерство образования Российской Федерации Санкт - Петербургский государственный политехнический университет
Институт менеджмента и информационных технологий
Кафедра ПО ВТ и АС
Лабораторный практикум по курсу вычислительной математики
ОТЧЕТ
по лабораторной работе №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 × 10− 3 |
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 × 10− 3 |
|||||
|
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 |
ø |
|