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

Учебное пособие_Численные методы -26 -дек_2014 (97-2003)

.pdf
Скачиваний:
304
Добавлен:
11.03.2016
Размер:
6.51 Mб
Скачать

В модели Домара предполагается,

потенциал полностью используется, т.е.

Y

получим

 

 

 

 

dY

 

dk

.

 

dt

dt

 

 

 

 

что весь экономическийk . Дифференцируя по t,

(6.17)

Подставляя (6.15) и (6.16) в (6.17), имеем

 

 

 

 

 

1 dI

pI

или

dI

psdt .

(6.18)

 

 

 

 

 

s dt

 

I

 

 

 

 

 

I t

 

 

 

 

 

 

 

 

 

Чтобы найти функцию

из уравнения (6.18), проинтегрируем

обе части последнего равенства по t от 0 до t. Получим

 

 

 

 

 

 

 

 

t

dI

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

psdt ,

 

 

 

 

 

 

 

 

I

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или ln I t

t

pst

t

, откуда ln I

ln I 0 pst .

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

Потенцируя последнее равенство, получим окончательное

выражение

 

 

I t I 0 e

 

,

 

 

 

 

(6.19)

 

 

 

 

 

pst

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где

I 0 - это скорость денежного потока в начальный момент времени.

Таким образом, чтобы поддержать равновесие между объемом производственных благ и совокупным спросом на них, скорость денежного потока должна расти с экспоненциальной скоростью, согласно формуле (6.19).

Модель Домара – эти типичный пример модели роста, записываемый в виде одного или нескольких уравнений, в которые входят производные неизвестных величин. Такие уравнения называются дифференциальными, они будут рассмотрены далее. Существенным компонентом решения таких уравнений является интегрирование.

Рассмотрим соответствующие примеры.

Пример 6.4. Дана функция издержек С в зависимости от объема q выпускаемого товара С=С(q), предельные издержки будут задаваться производной функции MC C q . Ее экономический смысл – это издержки на производство дополнительной единицы выпускаемого товара. Поэтому часто приходится находить функцию издержек по данной функции предельных издержек.

Дана функция предельных издержек MC 3q

2

48q 202

,

1 q 20 .

 

Найти функцию издержек C C q и вычислить

издержки

 

в случае

производства 10 единиц товара, если известно, что издержки для производства первой единицы товара составили 50 руб.

181

t 1,2,3,...

Функцию издержек находим интегрированием

C q

q MCdq

1

C

0

 

,

где константа

C0

находится из данного условия

C 1 50

, так что

C0

50

,

поскольку интеграл обращается в нуль. Интегрируя, получим функцию

издержек

C q q

3

25q

2

202q 50 .

 

 

 

 

Подставляя

q 10

в полученную формулу, находим искомое значение

C 10 670 .

 

 

 

 

 

Пример 6.5. Нахождение дисконтированной стоимости денежного потока. Допустим вначале, что для каждого дискретного момента времени задана величина денежного потока R t . Если ставку процента обозначить через р, то дисконтированную стоимость каждой из величин R 1 , R 2 , R 3 ,... мы найдем по формулам

R 1 , 1 p

, R 2 1 p

, R 3 1 p

1

 

2

 

3

Тогда дисконтированную стоимость денежного

суммируя эти величины:

 

 

 

 

 

n

 

 

,

R t 1 p

 

 

 

t

 

 

t 1

 

 

 

,...

потока мы найдем,

(6.20)

где n – общее число периодов времени.

В непрерывной модели время изменяется непрерывно, т.е. для каждого момента времени 0 t T , где 0,T – рассматриваемый период времени, заданная величина I t – скорость изменения денежного потока (т.е. величина денежного потока за промежуток времени от t до t+dt

приближенно равна

I t dt ). Для нахождения величины

 

изменим

формулу (6.20): знак суммирования заменим на знак определенного интеграла, формулы нахождения дисконтированной стоимости в дискретном случае заменим на их непрерывный аналог, и тогда формула (6.20) примет вид

T

 

 

I t e

pt

dt

 

0

 

 

.

Под строительство гидроэлектростанции задан непрерывный

денежный поток со скоростью

I t t

2

20t 5

(млрд руб./г.) в течение 20

 

 

 

 

лет с годовой процентной ставной

 

p 5% .

Найти дисконтированную

стоимости этого потока.

 

 

 

 

 

182

 

 

По формуле (6.20) имеем

20

t

 

20t

 

2

 

 

 

0

 

 

 

5 e

0,05t

dt

 

.

Чтобы вычислить этот интеграл, выполним сначала замену переменной s 0,05t , t 20s , dt 20ds .

При этом новые пределы интегрирования получаются подстановкой старых в формулу замены s0 0 , s1 1. Получим

20

400s

 

400s 5 e

0

400s

 

20

 

 

ds 20

 

 

 

 

2

s

 

 

2

 

0

 

 

 

1

 

 

400s

5 e

s

ds

 

.

К последнему частям, полагая

u

интегралу применим

400s

2

400s 5

,

du

 

 

 

 

формулу интегрирования

800s 400 ds ,

s

ds ,

v

dv e

по

e

s

.

 

 

Поэтому

 

 

400s

2

 

 

 

 

20

 

 

 

 

 

400s 5 e

s0

1

0

 

800s

e

s

 

1

 

 

400ds

.

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

слагаемому еще раз применим формулу

 

полагая u 800s 400

, du 800ds .

 

 

 

 

 

 

 

 

 

 

 

400s 5 e

 

0

 

 

 

 

400s

2

s

 

 

 

 

20

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

20 5 5e

1

400 800 400 e

1

 

 

 

 

20 1195e

1

395 .

 

 

 

 

 

 

 

 

интегрирования, а к второму интегрирования по частям,

0

 

 

 

 

 

s

 

 

 

ds

 

800e

 

1

 

 

 

 

800 800e

1

 

Окончательно получим

Замечание. Указанный методами.

892 млрд руб.

интеграл можно также решить численными

Пример 6.6

Рассмотрим ситуацию, когда денежный поток не прекращается никогда, например, в случае эксплуатации земельного участка. Если r – непрерывная процентная ставка, а R(t) – соответствующая рента, то нахождение дисконтированной стоимости земельного участка приводит к формуле, включающей несобственный интеграл

 

 

R t e rt dt .

(6.21)

0

 

Пусть R t 5e 0,7t (млн руб./г.) – рента, получаемая от

земельного

участка, r = 10% процентная ставка. Определим его дисконтированную стоимость по формуле (6.21):

183

 

 

 

 

 

 

 

 

 

0,8t

 

 

5e

0,7t

e

0,1t

dt 5 e

0,8t

e

 

 

 

 

 

dt 5

0,8

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

0

 

 

 

 

0

 

 

5

 

 

 

6,25

 

0,8

 

 

 

 

 

 

(млн руб.).

Пример 6.7

Найти дневную выработку P за рабочий день продолжительностью 8 ч. если производительность труда в течение дня меняется по

эмпирической формуле

p f (t) 0,2t

2

1,6t 3

, где t время, ч.

 

 

 

 

Решение. Полагая,

что производительность меняется в течение дня

непрерывно, т.е. что p является непрерывной функцией аргумента t на отрезке 0, 8 , дневную выработку P можно выразить определенным

интегралом:

8

 

p 0,2t

2

 

0

 

1,6t

3 dt

.

Вычислим точное значение интеграла

 

8

 

0,2t

 

 

1,6t 3 dt ( 0,2

t

3

 

t

2

 

8

8

3

 

8

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I точн

2

 

1,6

 

3t)

( 0,2

 

1,6

 

3

8)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

3

 

2

 

0

3

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

3

 

0

2

 

 

 

102,4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( 0,2

 

1,6

 

3

0)

 

51,2 24

41,0(6).

 

 

 

 

 

 

 

 

3

 

2

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обозначим подынтегральную функцию за f (t) 0,2t начало промежутка, b=8 – конец промежутка, h – шаг.

Составим таблицу значений функции f(t) при числе

2

1,6t 3

, a=0 –

 

 

разбиений n=8.

Вычислим шаг

h

b a

n

 

8 0

8

1

.

Таблица 6.6

Результаты расчетов

i

t

f(t)

Расчет:

 

 

 

 

 

0

0

3

f (0) 0,2 0

2

 

1,6 0 3 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

4,4

f (1) 0,2 1

 

 

1,6 1 3 4,4

 

 

 

2

 

 

 

 

 

 

 

 

 

 

2

2

5,4

f (2) 0,2 2

2

1,6 2 3 5,4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

3

6

f (3) 0,2 3

2

1,6 3 3 6

 

 

 

 

 

4

4

6,2

f (4) 0,2 42

1,6 4 3 6,2

5

5

6

f (5) 0,2 52

 

1,6 5 3 6

6

6

5,4

f (6) 0,2 6

2

 

1,6 6 3 5,4

 

 

 

 

 

 

 

 

 

 

 

 

 

7

7

4,4

f (7) 0,2 72

1,6 7 3 4,4

8

8

3

f (8) 0,2 8

2

 

1,6 8 3 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

184

Метод правых прямоугольников. Ручной счет

I правых

nh

i 1

f (t

i

)

 

 

1 4,4 5,4 6 6,2 6 5,4 4,4 3

40,8

.

Ошибка: Qправых I точн I правых 40,8 41,067 0,267 .

Метод левых прямоугольников. Ручной счет

n 1

I левых h f (ti ) 1 3 4,4 5,4 6 6,2 6 5,4 4,4 40,8 .

i 0

Ошибка: Q левых I точн I левых 40,8 41,067 0,267 .

Метод трапеций. Ручной счет

f (a) f (b)

n 1

I трап h

 

 

2

 

i 1

 

 

3 3

 

40,8 .

f (ti

)

1

 

 

4,4 5,4 6 6,2 6 5,4 4,4

2

 

 

 

 

 

 

 

Ошибка:

Q трап

I точн I трап

40,8 41,067

0,267

.

Метод Симпсона. Ручной счет

по нечетным точкам:

S1 4,4 6 6 4,4 20,8

, а по

четным точкам:

S2 5,4 6,2 5,4 17 .

I Симпсона

1

3

3 4 20,8

2 17

3

 

 

 

41,067

.

Ошибка: QСимпсона I точн I Симпсона 41,067 41,067 0 .

Метод центральных прямоугольников. Ручной счет

Таблица 6.7

Расчеты для метода центральных прямоугольников

i

t

t+h/2

f(t+h/2)

Расчет

 

 

 

 

 

0

0

0,5

3,75

f (0,5) 0,2 0,5

2

 

1,6 0,5 3 3,75

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

1,5

4,95

f (1,5) 0,2 1,5

2

 

1,6 1,5 3 4,95

 

 

 

 

 

 

 

 

2

2

2,5

5,75

f (2,5) 0,2 2,5

2

1,6 2,5 3 5,75

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

3

3,5

6,15

f (3,5) 0,2 3,5

2

 

1,6 3,5 3 6,15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

4

4,5

6,15

f (4,5) 0,2 4,5

2

1,6 4,5 3 6,15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

5

5,5

5,75

f (5,5) 0,2 5,52

 

1,6 5,5 3 5,75

6

6

6,5

4,95

f (6,5) 0,2 6,5

2

1,6 6,5 3 4,95

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

7

7,5

3,75

f (7,5) 0,2 7,5

2

1,6 7,5 3 3,75

 

 

 

 

 

 

 

 

 

 

8

8

-

-

-

 

 

 

 

 

I центр

n 1

h f (ti

i 0

 

1 3,75 4,95 5,75 6,15 6,15 5,75 4,95 3,75

h / 2)

 

 

41,2

.

Ошибка: Qцентр I точн I центр 41,2 41,067 0,133.

Решение в Microsoft Excel представлено на рис. 6.7.

185

Рис. 6.7. Реализация в Microsoft Excel

Формулы в Microsoft Excel представлены на рис. 6.8.

Рис. 6.8. Формулы в Microsoft Excel

186

Решение в редакторе Visual Basic без точности представлено на рис. 6.9.

Рис. 6.9. Решение в редакторе Visual Basic

Код программы в Visual Basic:

Function F(ByVal t As Double)

F = -0.2 * t ^ 2 + 1.6 * t + 3

End Function

Private Sub CommandButton1_Click() A = ActiveSheet.Cells(2, 2).Value

B = ActiveSheet.Cells(3, 2).Value

n = ActiveSheet.Cells(2, 4).Value h = (B - A) / n

IntLP = 0 For i = 1 To n

IntLP = IntLP + F(A + (i - 1) * h) * h Next i

ActiveSheet.Cells(7, 1).Value = "По методу левых прямоугольников = " &

Str(IntLP) IntPP = 0

For i = 1 To n

IntPP = IntPP + F(A + i * h) * h Next i

ActiveSheet.Cells(8, 1).Value = "По методу правых прямоугольников = " &

Str(IntPP) IntCP = 0

For i = 1 To n

IntCP = IntCP + F(A + (i - 0.5) * h) * h Next i

ActiveSheet.Cells(9, 1).Value = "По методу центральных прямоугольников = " &

Str(IntCP) IntTR = 0

187

For i = 1 To n - 1

IntTR = IntTR + F(A + i * h) * h Next i

IntTR = IntTR + (F(A) + F(B)) / 2 * h

ActiveSheet.Cells(10, 1).Value = "По методу трапеций = " & Str(IntTR)

IntPR = 0

For i = 1 To n - 1 Step 2

IntPR1 = IntPR1 + F(A + i * h) * h Next i

For i = 2 To n - 2 Step 2

IntPR2 = IntPR2 + F(A + i * h) * h Next i

IntPR = h / 3 * (F(A) + F(B) + 4 * IntPR1 + 2 * IntPR2)

ActiveSheet.Cells(11, 1).Value = "По методу парабол = " & Str(IntPR)

EndSub

Решение в редакторе Visual Basic с заданной точностью представлено на рис. 6.10.

Рис. 6.10. Решение в редакторе Visual Basic с заданной точностью

КодпрограммывVisual Basic:

Function F(ByVal t As Double)

F = -0.2 * t ^ 2 + 1.6 * t + 3

End Function

Private Sub CommandButton1_Click() A = ActiveSheet.Cells(2, 2).Value

B = ActiveSheet.Cells(3, 2).Value n = ActiveSheet.Cells(2, 4).Value e = ActiveSheet.Cells(4, 2).Value h = (B - A) / n

188

IntLP = 0 IntLP1 = 100

While Abs(IntLP - IntLP1) > e IntLP1 = IntLP

IntLP = 0 For i = 1 To n

IntLP = IntLP + F(A + (i - 1) * h) * h Next i

n = n * 2 h = h / 2

Wend

ActiveSheet.Cells(7, 1).Value = "По методу левых прямоугольников = " &

Str(IntLP)

n = ActiveSheet.Cells(2, 4).Value h = (B - A) / n

IntPP = 0 IntPP1 = 100

While Abs(IntPP - IntPP1) > e IntPP1 = IntLP

IntPP = 0 For i = 1 To n

IntPP = IntPP + F(A + i * h) * h Next i

n = n * 2 h = h / 2

Wend

ActiveSheet.Cells(8, 1).Value = "По методу правых прямоугольников = " &

Str(IntPP)

n = ActiveSheet.Cells(2, 4).Value h = (B - A) / n

IntCP = 0 IntCP1 = 100

While Abs(IntCP - IntCP1) > e IntCP1 = IntCP

IntCP = 0 For i = 1 To n

IntCP = IntCP + F(A + (i - 0.5) * h) * h Next i

n = n * 2 h = h / 2

Wend

ActiveSheet.Cells(9, 1).Value = "По методу центральных прямоугольников = "

&Str(IntCP)

n = ActiveSheet.Cells(2, 4).Value h = (B - A) / n

IntTR = 0 IntTR1 = 100

While Abs(IntTR - IntTR1) > e IntTR1 = IntTR

IntTR = 0

For i = 1 To n - 1

189

IntTR = IntTR + F(A + i * h) * h Next i

IntTR = IntTR + (F(A) + F(B)) / 2 * h n = n * 2

h = h / 2 Wend

ActiveSheet.Cells(10, 1).Value = "По методу трапеций = " & Str(IntTR) n = ActiveSheet.Cells(2, 4).Value

h = (B - A) / n IntPR = 0 IntPR3 = 100

While Abs(IntPR - IntPR3) > e IntPR3 = IntPR

IntPR = 0

IntPR1 = 0

For i = 1 To n - 1 Step 2

IntPR1 = IntPR1 + F(A + i * h) Next i

IntPR2 = 0

For i = 2 To n - 2 Step 2

IntPR2 = IntPR2 + F(A + i * h) Next i

IntPR = h / 3 * (F(A) + F(B) + 4 * IntPR1 + 2 * IntPR2) n = n * 2

h = h / 2 Wend

ActiveSheet.Cells(11, 1).Value = "По методу парабол = " & Str(IntPR)

EndSub

Решение в Microsoft Visual Studio

КодпрограммыС++:

// pr1 INTEGRAL ekonom.cpp: определяетточкувходадляконсольногоприложения.

//

#include"stdafx.h" #include<iostream> #include<math.h> usingnamespace std;

double a=0, b=8, n=8, h=(b-a)/n; double f(double t){

return -0.2*pow(t,2.0)+1.6*t+3.0;

}

void prav(){

double integral=0, t; for(t=a+h; t<=b; t=t+h){

integral=integral+f(t);

}

integral=integral*h;

cout<<"integral prav="<<integral<<endl;

}

void lev(){

double integral=0, t; for(t=a; t<=b-h; t=t+h){

integral=integral+f(t);

}

integral=integral*h;

cout<<"integral lev="<<integral<<endl;

190