Решение задачи для шести видов энергоресурсов средствами Excel
Виды энергоресурсов и значения параметров | Ni(o) | Ki | Bi | ||||||
Дерево | 0,1 | 0,017 | |||||||
Уголь | 0,2 | 0,009 | |||||||
Нефть | 0,5 | 0,009 | |||||||
Газ | 0,6 | 0,0009 | |||||||
Ядерное топливо | 0,1 | 0,04 | |||||||
Термоядерное топливо | 0,1 | 0,291 7 | |||||||
Таблица значений параметров (Aij)* | |||||||||
Дерево | Уголь | Нефть | Газ | ЯТ | ТЯT | ||||
Дерево | 0,01 | 0,002 | 0,002 | 0,001 | 0,001 | ||||
Уголь | -0,01 | 0,012 | 0,004 | 0,01 | 0,001 | ||||
Нефть | -0,002 | -0,012 | 0,01 | 0,001 | 0,001 | ||||
Газ | -0,002 | -0,004 | -0,01 | 0,005 | 0,001 | ||||
ЯТ | -0,001 | -0,01 | -0,001 | -0,005 | 0,001 | ||||
ТЯТ | -0,001 | -0,01 | -0,001 | -0,001 | -0,001 | ||||
Численное решение системы логистических уравнений
Шаг решения 0,01
Ось времени | Дерево | Уголь | Нефть | Газ | ЯТ | ТЯТ |
0,01 | 99,94 | 200,08 | 300,62 | 3521,11 | 80,72 | 12,16 |
0,02 | 99,87 | 200,17 | 301,24 | 3542,35 | 81,44 | 12,32 |
0,03 | 99,80 | 200,25 | 301,85 | 3563,72 | 82,18 | 12,48 |
0,04 | 99,74 | 200,33 | 302,46 | 3585,21 | 82,93 | 12,65 |
0,05 | 99,67 | 200,41 | 303,07 | 3606,84 | 83,68 | 12,82 |
0,06 | 99,60 | 200,48 | 303,67 | 3628,59 | 84,45 | 12,99 |
0,07 | 99,53 | 200,55 | 304,26 | 3650,48 | 85,23 | 13,17 |
0,08 | 99,46 | 200,63 | 304,85 | 3672,50 | 86,02 | 13,35 |
0,09 | 99,39 | 200,70 | 305,44 | 3694,65 | 86,82 | 13,53 |
0,1 | 99,32 | 200,76 | 306,02 | 3716,94 | 87,63 | 13,72 |
0,11 | 99,25 | 200,83 | 306,60 | 3739,36 | 88,45 | 13,91 |
0,12 | 99,17 | 200,89 | 307,17 | 3761,92 | 89,29 | 14,10 |
0,13 | 99,10 | 200,96 | 307,73 | 3784,61 | 90,13 | 14,30 |
0,14 | 99,03 | 201,02 | 308,29 | 3807,44 | 90,99 | 14,50 |
0,15 | 98,95 | 201,08 | 308,85 | 3830,40 | 91,86 | 14,71 |
0,16 | 98,88 | 201,13 | 309,39 | 3853,51 | 92,75 | 14,92 |
0,17 | 98,80 | 201,19 | 309,94 | 3876,75 | 93,65 | 15,13 |
0,18 | 98,72 | 201,24 | 310,48 | 3900,14 | 94,55 | 15,35 |
0,19 | 98,64 | 201,29 | 311,01 | 3923,66 | 95,48 | 15,57 |
0,2 | 98,56 | 201,34 | 311,54 | 3947,33 | 96,41 | 15,80 |
Указание к решению задачи возможностями технологии Excel
Занесите рабочие формулы в ячейки электронной таблицы
[В22] =Е5 [С22] =Е6 [D22] =Е7
[Е22] =Е8 [F22] =Е9 [G22] =Е10
[B23]'=B22+(B22*($F$5+$G$5*MУMHOЖ>K(B22:G22;$B$13:$B$18)))*$B$20 [C23]'=C22+(C22*($F$6+$G$6*MУMHOЖ>K(B22:G22;$C$13:$С$18) ))*$В$20
[D23]'=D22+(D22*($F$7+$G$5*MУMHOЖ>K(B22:G22;$D$13:$D$18)))*$B$20 [E23]'=E22+(E22*($F$8+$G$8*MУMHOЖ>K(B22:G22;$E$13:$E$18)))*$B$20 [F23]'=F22+(F22*($F$9+$G$9*MУMHOЖ>K(B22:G22;$F$13:$F$18)))*$B$20 [G23]'=О22+(О22*($Р$10+$О$10*МУМНОЖ(В22:О22;$С$13:$С$18)))*$В$20
Решение задачи средствами VBA для произвольной численности рассматриваемых видов энергоресурсов
Option Explicit
Sub Energy1(N As Integer, IDR() As Single, h As Single, T As Single)
'Процедура численного решения системы N нелинейных уравнений с шагом h
'на временном интервале Т. Исходные данные располагаются в массиве 'IDR(1:N,1:N+6). Первые три столбца-значения параметров Ni(o),Ki,Bi.
'следующие N столбцов значения параметров Aij. Три последних под результат.
Dim i As Integer: Dim j As Integer: Dim s As Single: Dim v As Single: s = 0
'Создание копии начальных величин запасов видов энергоресурсов.
For i = 1 То N: IDR(i, N + 5) = IDR(i, 1): Next i
Do While s < T' Начало ждущего цикла
For i = 1 To N: v = 0: For j = 1 To N:
v = v + IDR(i, 3 + j) * IDR(j, N + 5): Next j: v = v * IDR(i,3)
IDR(i, N + 6) = IDR(i, N + 5) * (1 + (IDR(i, 2) + v) * h): Next i
'Запоминание решения в расчетных точках временного интервала с шагом h
For i = 1 То N: IDR(i, N + 5) = IDR(i, N + 6): Next i
s = s + h: Loop 'окончание ждущего цикла
End Sub 'Energy1
Function Control(N As Integer, iDR() As Single) As Single
' Контроль точности вычисления на М-цикле решения
Dim i As Integer: Dim s As Single: Dim v As Single: s = 0: For i = 1 To N
v = Abs(IDR(i, N + 4) - IDR(i, N + 6)): IDR(i, N + 5) = IDR(i, N + 4)
If v > s Then
s = v: End If: Control = s: IDR(i, N + 4) = IDR(i, N + 6): Next i
End Function 'Control
Sub Energy3(N As Integer, M As Integer, Nt As Integer, Nr As Integer, _
Nc As Integer, N1 As Integer, N2 As Integer, g As Integer, IDR() As Single)
Процедура обмена данными между массивами модуля и диапазоном ЭТ. Dim i As Integer: Dim j As Integer For i = 0 To N -1: For j = 0 To M -1: If g > 0 Then
Worksheets(Nt).Cells(Nr + i, Nc + j).Value = IDR(i + N1, j + N2)
Else
IDR(i + N1, j + N2) = Worksheets(Nt).Cells(Nr + i, Nc + j).Value
End If: Next j: Next i
End Sub 'Energy3
Sub Energy()
'Модуль для решения задачи "Динамика мирового рынка энергоресурсов"
Dim SM(0 То 9) As String * 60: Dim x As String: Dim NH As Integer
Dim i As Integer: Dim j As Integer: NH = 0
SM(0) = "Мировой рынок энергоресурсов"
SM(1) = " Укажите номер электронной таблицы для данных"
SM(2) = " Укажите номер строки электронной таблицы для данных"
SM(3) = " Укажите номер столбца электронной таблицы для данных"
SM(4) =" Укажите количество рассматриваемых видов энергоресурсов"
SM(5) = " Задайте первоначальный шаг численного решения задачи"
SM(6) = " Укажите желаемую точность решения задачи"
SM(7) = " Укажите временной интервал для анализа"
SM(8) = " Укажите номер строки массива"
SM(9) = " Укажите номер столбца массива"
Dim Nt As Integer: x = lnputBox(SM(1), SM(0), 1): Nt = Clnt(x)
Dim Nr As Integer: x = lnputBox(SM(2), SM(0), 5): Nr = Clnt(x)
Dim Nc As Integer: x = lnputBox(SM(3), SM(0), 5): Nc = Clnt(x)
Dim N As Integer: x = lnputBox(SM(4), SM(0), 6): N = Clnt(x)
Dim h As Single: x = lnputBox(SM(5), SM(0), 0.01): h = CSng(x)
Dim E As Single: x = lnputBox(SM(6), SM(0), 0.1): E = CSng(x)
Dim T As Single: x = lnputBox(SM(7), SM(0), 0.2): T = CSng(x)
ReDim IDR(1 To N, 1 To N + 6) As Single: Dim v As Single: v = 2 * E
For i = 1 To N: For j = 1 To N + 6: IDR(i, j) = 0: Next j: Next i
'Ввод исходных данных из электронной таблицы в массив
Call Energy3(N, N +6, Nt, Nr, Nc, 1, 1, -1, IDR)
Do While v > E
Call Energyl (N, IDR, h, T) 'Вызов процедуры решения системы уравнений
v = Control(N, IDR): NH = NH + 1
x = "Сделан NH=" + CStr(NH) + " расчет. Точность v=" + CStr(v)
x = x + "Шаг h=" + CStr(h) + "Продолжить решение?"
i = MsgBox(x, 1, SM(0)): h = h / 2
If i > 1 Then
Exit Do: End If: Loop' Выход из ждущего цикла
'Вывод исходных данных в электронную таблицу из массива IDR
Call Energy3(N, N + 6, Nt, Nr, Nc, 1, 1, 1, IDR)
End Sub 'Energy
Контрольные вопросы
1. Выполните решение задачи с использованием технологии Excel с
включенным макрорекордером. Сравните полученный макрос с предложенным выше программным продуктом.
2. Осуществите графическую иллюстрацию задачи, покажите зависимость
решения от значений параметров Aij, Ki, Bi/.
4. МОДЕЛИРОВАНИЕ И ОБРАБОТКА СИГНАЛОВ[13,16]
Дата добавления: 2016-02-04; просмотров: 597;