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

Лекции - Калинкин - 2004

.pdf
Скачиваний:
65
Добавлен:
07.01.2014
Размер:
1.07 Mб
Скачать

(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич

1

Лекция 1

Процесс решения задачи можно разбить на следующие этапы.

1.О Б Ь Е К Т. Постановка задачи. Экспериментальное исследование физико-химического процесса или объекта и определение основных законов управляющих данным объектом или процессом.

2.М О Д Е Л Ь. Построение математической модели (математическая формулировка задачи) - запись законов описывающих процесс в форме уравнения или системы уравнений (алгебраических, дифференциальных, интегральных и т.д.).

3.А Л Г О Р И Т М. Разработка численного метода и алгоритма (блок-схема). Поскольку ЭВМ не понимает постановки задачи в математической формулировке, то для решения задачи необходимо найти численный метод, позволяющий свести задачу к некоторому вычислительному алгоритму. Алгоритм можно изобразить в виде блок-схемы.

4.П Р О Г Р А М М А. Алгоритм решения задачи записывается на понятном машине языке в виде точно определенной последовательности операций - программы для ЭВМ. Составление программ (программирование) обычно производится с помощью промежуточного (алгоритмического) языка. В качестве такого языка будем использовать VBA(Visual Basic for Applications).

5.Проведение вычислений и анализ результатов.

Запись алгоритмов в виде блок-схем и написание программ

 

 

Основные Элементы блок-схем.

 

 

 

 

поцесс

Ввод-вывода

 

 

условие

( вычисление )

 

 

 

 

( решение )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

основные типы алгоритмов

линейный

разветвляющий

циклический

2

2

1

нет да

3

2

3

4

5

нет да

3

4

 

6

5

(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич

2

пример алгоритмов и программ

Переменные и константы используются для хранения необходимых программных данных, которым даются уникальные имена (идентификаторы). Переменные получают свои значения во время выполнения программы и сохраняют их, пока им не будут присвоены новое значение. Константы применяют в случаях, когда требуется много раз использовать в программе одно и тоже значение. Обычно, перед использованием переменных и констант необходимо произвести их объявление – т.е. заранее указать их имена и типы данных, для которых они предназначены, а для констант и их значения.

Литейный алгоритм. Вычислить значения констант скорости реакции по уравнению Арениуса для двух значений температур, полагая известными энергию активации Ea и

предэкспоненциальный множитель k0 .

Ea

k = k0 e RT

 

 

нач

 

 

 

 

 

 

 

 

 

 

 

Sub Blok1()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dim T1 as single, T2 as single

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dim K1 as single, K2 as single

R =8.314 Ea

 

 

 

 

 

 

 

 

 

 

 

= 53234

 

1

Const

R as single=8.314, Ea as single=32000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Const

K0 as single=56123

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T1=cells(2,1): T2=cells(2,2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K1=K0*exp(-Ea/(R*T1))

 

k0

= 32000

 

2

 

 

 

 

 

 

 

 

 

 

 

 

K2=K0*exp(-Ea/(R*T2))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cells(3,1)=K1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cells(3,2)=k2

 

 

T1,T2

 

3

 

 

 

 

 

 

 

 

 

End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Переменные T1, T2, K1 и K2 объявлены, как

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вещественные обычной точности.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Задаются значения констант R,Ea и K0. Они

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ea

 

 

 

 

 

 

 

 

объявляются как вещественные с обычной

 

k

= k

0

e RT1

 

4

 

 

 

 

точностью

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Переменным T1 и T2 присваиваются значения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

из соответствующих ячеек текущего листа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ea

 

 

 

 

 

 

 

 

EXCEL.

 

k2

= k0 e RT2

 

 

5

 

 

 

 

 

 

 

 

 

3. Вычисляются значения переменных K1 и K2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. Вычисленные значения выводятся в ячейки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

листа EXCEL.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k1 ,k2 6

Кон.

Разветвляющий алгоритм. Решить квадратное уравнение ax2 +bx +c = 0

Вычисляем значение дискриминанта

D = b2 4ac

(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич

3

Затем значения корней уравнения.

x

= b ± D

1,2

2a

 

нач

 

 

 

 

 

 

 

a,b,c

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D := b2

4ac

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D<0 | 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x :=

b +

D

4

 

 

 

 

 

Нет | 7

1

 

2a

 

 

 

 

 

 

 

 

Решения|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x21 :=

b

D

5

 

 

 

 

 

 

 

 

 

 

 

2a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1, x2

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sub blok2()

Dim a as single, b as single, c!,D!,x1!

a = cells(2,1): b = cells(2,2): c = cells(2,3) D = b^2 - 4*a*c

if D<0 then cells(3,2)=”нет решения”

else x1=(-b+sqr(D))/(2*a) x2=(-b-sqr(D)/2/a

x1 = ( -b + sqr(d))/2/a cells(3,1) = d cells(3,2) = x1 cells(3,3) = x2

end if End Sub

D 8

Кон.

Циклический алгоритм. Вычислить среднее арифметическое n чисел.

 

n

 

 

 

 

 

 

 

 

_

xi

 

x

+ x

2

+ x

3

+... + x

n

x =

i=1

=

1

 

 

 

n

 

 

 

n

 

 

 

 

 

 

 

 

 

(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич

4

нач

n | 1

i:=1 | 2

i<=n. |.2

xi 3

I=I+1 | 2

s:=0 | 2

i:=1 | 2

i<=n. |.2

s:=s+xi | 4

 

 

=

s

 

 

7

 

x

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

кон

 

 

нач

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n | 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i:=1 шаг 1 до n

| 2

 

 

 

 

 

 

 

 

 

 

 

 

| 3

 

 

 

 

 

 

 

 

 

 

 

 

xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s:=0 | 4

i:=1 шаг 1 до n | 2

s:=s+xi | 4

 

 

=

s

 

 

7

 

x

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

кон

(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич

5

Sub blok3()

Sub blok31()

 

Dim n as byte, x() as single

Dim n as byte, x() as single

 

Dim i as byte

Dim i as byte

 

Dim x_average as single

Dim x_average as single

 

n=cells(2,1)

n=cells(2,1)

 

Redim x(n)

Redim x(n)

 

i=1

For i=1 to n

 

While i<=n then

x(i)=cells(i+3,1)

 

x(i)=cells(i+3,1)

Next i

 

i=i+1

s=0

 

Wend

For i=1 to n

 

s=0

s=s+x(i)

 

i=1

Next i

 

While i<=n then

x_average=s/n

 

s=s+x(i)

cells(2,2)=x_average

 

i=i+1

End Sub

 

Wend

 

 

x_average=s/n cells(2,2)=x_average

End Sub

Вычислить значения констант скорости реакции по уравнению Арениуса в зависимости от температуры ( от T-нач. до T-кон. в n+1 точке)-Табуляция.

Ea

k = k0 e RT

Полагая известными энергию активации Ea и предэкспоненциальный множитель k0 .

нач

Ea

k = k0e RT

T_Big, T_End, T_Step | 1

T:=T_Big шаг T_Step до T_End | 2

T, k(T) | 3

кон

(С) ИиКМ РХТУ февраль 2004г. Калинкин Владимир Николаевич

6

Const R = 8.314, K0 As Single = 55234, Ea As Single = 32000 Sub blok41()

Dim T_Big As Single, T_End As Single

Dim T_Step As Single, T As Single, i As Byte T_Big = Cells(2, 2): T_End = Cells(3, 2) T_Step = Cells(2, 4)

i = 6

For T = T_Big To T_End Step T_Step Cells(i, 1) = T: Cells(i, 2) = k(T)

i = i + 1 Next T

End Sub

Function k(T As Single) As Single k = K0 * Exp(-Ea / (R * T))

End Function

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

1

Лекция- 2

Теория погрешностей

Основная задача теории погрешностей состоит в оценке погрешности результата вычислений при известных погрешностях исходных данных.

Источники и классификация погрешностей результата

Получить точное значение при решении задачи на машине практически невозможно. Получаемое решение всегда содержит погрешность и является приближенным. Источники погрешности:

1.Погрешность математической модели.

2.Погрешность в исходных данных.

3.Погрешность численного метода.

4.Погрешность округления или отбрасывания.

Погрешность математической модели определяется выбором математической модели. Так для описания падения тела с высоты h0 и имеющего скорость v0 используются уравнения.

h=h0-v0*t-g*t2/2; v=v0+g*t. Если учитывать силу сопротивления F(t), действующую на тело массой m. Тогда движение можно описать с помощью уравнений: m*(dv/dt)= m*g - F; (dh/dt) = -v. при t=0, v = v0, h = h0.

Погрешность в исходных данных оределяется: погрешностью измерения или погрешностью вычислений, с помощью которых они были получины.

Погрешность численного метода определяется точностью выбронного численог метода и вычислительного средства. Sin(x) = x - x**3/3 + x**5/5 + x**7/7 + ....

Правила округления: Известны. Обратить внимание, что: если первая из отброшенных цифр равна 5 и все остальные отброшенные цифры являются нулями , то последняя оставшаяся цифра остается неизменной, если она четная ( правило четной цифры), и увеличивается на единицу, если она нечетная. При этом погрешность не превышает пяти единиц отброшенного разряда.

Пример: 6.71 - 6.7 ; 6.77 - 6.8 ; 6.75 - 6.8; 6.65 - 6.6

В ЭВМ происходит отбрасывание или усекание. В некоторых языках работают правила округления.

Особенности машинной арифметики

Вещественные числа в ЭВМ представляются в нормализованном виде. Это

экспоненциальный виде D = ± m b±n , где m - мантисса ,b-основание системы

счисления n – порядок. Мантиссу можно представить, как m = 0.d1 d2 d3 d4 .. .. .. dk , где d1#0, а к – определяет количество цифр в мантиссе и называют разрядной сеткой.

Для десятичной системы счисления D = ± m 10 ±n Примеры записи чисел при k=3:

5

0.500*101

172

0.172*103

0.8157

0.815*10-2

521.45

0.521*103

В последних двух примерах цифры, выходящие за разрядную сетку отброшены. При этом погрешность округления не превышает единицы последнего оставленного разряда.

Выполнение операций над вещественными числами начинается и заканчивается выравниванием порядков. Если порядки различны - погрешность возрастает и может привести к потере точности.

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

2

По возможности надо избегать работать с числами , порядки которых отличаются на величину, близкую к длине разрядной сетки, а также вычитания близких по значению величин Сложить слева направо и наоборот следующие числа

0.522 * 100,

0.157 * 10-1,

0.186 * 10-1,

0.239 * 10-1

0.522 * 100

+0.015 * 100

0.537 * 100

+0.018 * 100

0.555 * 100

+0.023 * 100

0.578 * 100

0.239 * 10-1 + 0.186 * 10-1

0.425 * 10-1

+0.157 * 10-1

0.582 * 10-1

0.058 * 100

+0.522 * 100

0.580 * 100

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

Пусть a - точное (и никогда неизвестное) значение некоторой величины, а a* - приближенное значение этой же величины.

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

(a*)= |a-a*|

Относительная погрешность a* вычисляется как δ(a) =

 

a a

и иногда выражается в

 

 

 

 

 

 

 

a

 

 

 

 

процентах.

Так как, точное значение a как правило неизвестно, чаще получают оценки

 

 

 

 

 

 

a a

 

 

 

погрешностей вида

a a

≤ ∆(a ) ;

 

δ (a )

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

соответственно. В вычислениях вместо абсолютной и относительной погрешностей будем использовать предельные погрешности.

Пример: Вычислить абсолютную и относительную погрешность приближенного числа π .

Приближенное число π = 3.1. Более точное значение 3.14159…..

Абсолютная погрешность (предельная абсолютная погрегность) (π ) > | 3.14159 – 3.1 |, (π ) = 0.042. Относительная погрешность (предельная относительная погрещность)

δ(π ) = 0.042 / 3.1 = 0.014

Погрешности вычислений

1.Абсолютная погрешность суммы или разности нескольких чисел не превосходит суммы

абсолютных погрешностей этих чисел.

(a ± b) ≤ ∆(a) + ∆(b)

2. Относительная погрешность суммы

δ(a + b) δmax

 

 

 

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

δ(a b) νδmax где ν =

 

 

a + b

 

 

 

 

 

 

 

 

 

a b

 

 

 

 

 

 

 

 

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

3

Необходимо заметить, что при вычитании близких чисел происходит катастрофическое падение точности.

4. Относительные погрешности произведения и частного

δ(a b) δ(a) +δ(b)

δ(a / b) δ(a) +δ(b)

5. Абсолютная погрешность дифференцируемой функции многих переменных u = f ( x1 , x2 ,K, xn)

u

 

f

 

xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1

 

xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример:

 

 

 

 

 

 

 

 

 

 

x=1.00; x=0.01;

δx = 0.01

 

 

 

1. y=f(x);

 

y=x^2 ;

 

 

 

y=1.00;

 

y =

 

 

dy

 

 

 

x =

 

2 x

 

x = 2 0.01 = 0.02

δy = 0.02

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

δx = 0.01

 

 

 

2. y=f(x);

 

y=x^20 ; x=1.00; x=0.01;

 

 

 

 

 

 

 

 

 

dy

 

 

 

 

 

 

 

y=1.00;

 

y =

 

 

 

x =

 

20 x19

 

x = 20 0.01 = 0.2 δy = 0.2

 

 

 

 

 

 

 

 

 

 

 

 

dx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. y=f(x1,x2) = x12+x1*x22-x1/x2;

 

x1=1.0;

x2= -2.0;

x

= ∆x

2

= 0.1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

2

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y =

 

xi = | 2*x1+x22-1/x2|*x1+| 2*x1*x2+x1/x22|*x2=0.925

 

 

i=1

xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y=5.5 δy=0.168

Обусловленность будем определять как отношене δ( y) / δ(x) . Так пример 1 хорошо обусловленδ( y) / δ(x) =2, а пример 2 прлохо δ( y) / δ(x) =20. Задачи с большим отношением δ( y) / δ(x) называют плохо обусловленными, иначе - хорошо обусловленными. Плохо

обусловленные задачи лучше не решать ,а подумать над другим способом представления модели , выбрать иной метод или изменить алгоритм . Часто это возможно.

3. Влияние способа записи формулы на точность результата.

Пример: Пусть требуется отыскать наитеньший корень уравнения y2-140y+1=0 Вычисления проводить с 4 разрядами

y = 70

4899 ,

4899 = 69.992956.... после округления = 69.99

y 70 69.99 =0.01000

 

 

 

 

избавимся от иррациональность в числители

 

 

 

y = (70

4899 ) * (70 + 4899 ) =

1

=

1

=0.007142857..=0.007143

 

(70 +

4899 )

70 69.99

 

140

 

(С) ИиКМ РХТУ январь 2004г. Калинкин Владимир Николаевич

1

Лекция -3

Ошибки измерений Обработка результатов измерения одной величины.

Измерения, проводимые в опытах эксперимента, сопровождаются ошибками, ввиду конечной точности приборов и не идеальности условий эксперимента. Ошибки делятся на три типа.

1)Систематические

2)Грубые

3)Случайные

Ввиду наличия ошибок, точное значение измеряемой величина a установить не удается. Поэтому при n повторных измерений одной и той же величины a получают серию различных результатов x1, x2, x3, x4, . . ., xn и наиболее

вероятной оценкой измеряемой величины a будет являться среднее значение результатов серии.

 

 

 

 

 

 

 

 

 

 

n

 

 

x

+ x

 

+ x

 

+.... + x

 

 

xi

x =

2

3

n

=

1

 

 

 

i=1

 

 

 

n

 

 

n

 

 

 

 

 

 

 

 

Замена точного значения измеряемой величины a значением x влечёт ошибку, значение которой точно указать нельзя, а можно определить приближенно с необходимой доверительной вероятностью β. И нам надо определить величину

εβ в неравенстве a x εβ

Очевидно, εβ будет тем больше, чем с больше вероятностью β мы будем её

определять, чем грубее был проведен эксперимент и чем меньше n (количество опытов в серии измерений).

Для оценки качества измерений, вводят понятие дисперсии, которая вычисляется по формуле:

n

(xi x )

sx2 =

i=1

 

, где f число степеней свободы f = n-1

 

f

 

 

 

Среднеквадратичным отклонением или стандартом называют величину равную

2

sx = sx В статистике доверительную ошибку вычисляют по формуле:

εβ

= t f , p

s2

, где р =1-β уровень значимости f = n-1

x

t f , p

 

n

 

 

 

 

 

- Критерий Стьюдента

 

 

 

 

 

f/p

0.10

0.05

0.01

 

 

 

 

2

2.92

4.30

9.92

 

 

 

 

3

2.35

3.18

5.84

 

 

 

 

4

2.13

2.78

4.60

 

 

 

 

5

2.01

2.57

4.03

 

 

 

 

6

1.94

2.45

3.78

 

 

 

 

7

1.89

2.36

3.50