Определение параметров и моделирование последствий землетрясений
Землетрясение – это сильное колебание земной поверхности, вызванное вулканическими или тектоническими процессами. |
физические параметры землетрясений
глубина очага землетрясения H
В зависимости от величины H землетрясения подразделяются на:
Название |
H (км) |
|
0–70 |
|
70–300 |
|
>300 |
|
|
Эпицентральное расстояние R – расстояние от эпицентра до некоторой точки земной поверхности.
Магнитуда M (0≤M≤9) – общая энергия колебаний земной поверхности.
В зависимости от величины M землетрясения имеют характеристики:
Характеристика |
M |
|
8–9 |
|
7–8 |
|
6–7 |
|
5–6 |
|
4–5 |
|
|
Балльность J (0≤J≤12) –сила землетрясения на некотором участке земной поверхности.
Балльность землетрясения определяется по формуле:
Здесь lg x – десятичный логарифм числа x. lg x = lnx/ln10.
Соотношение между балльностью и магнитудой в эпицентре землетрясения имеет вид:
алгоритмизация классификации землетрясений
Разветвляющийся алгоритм – алгоритм, предусматривающий выполнение одной из нескольких возможных инструкций.
Синтаксис:
Select Case переменная Case значение 1 инструкция 1 Case значение 2 инструкция 2 ... Case Else инструкция k End Select
|
рис. 8.1
Синтаксис Select Case разрешает использование ключевого слова To в условии
x1 To x2
и ключевого слова Is в условиях
Is < =x1
Is <= x2
Is > =x3
Is >= x4
Пример 1. Тип землетрясения
Определить название землетрясения по значению глубины очага H.
Тип |
H (км) |
|
(0–70] |
|
(70–300] |
|
>300 |
|
|
Поместить на форму кнопку и текстовое поле.
Задать следующие значения свойств объектов:
form |
|
Caption |
Тип землетрясения |
label1 |
|
Caption |
Глубина очага, км |
text1 |
|
Text |
(пусто) |
Command1 |
|
Caption |
Ok |
Код программы:
Private Sub Command1_Click()
Select Case Val(Text1.Text)
Case Is <= 0
MsgBox "Ошибка ввода", vbOKOnly, "Внимание"
Case 0 To 70
Print "нормальное"
Case 70 To 300
Print "промежуточное"
Case Is > 300
Print "глубокофокусное"
End Select
End Sub
Пример 2. зона действия землетрясения
Определить зону действия землетрясения по значению магнитуды M.
Зона действия |
M |
|
(0–4] |
|
(4–5] |
|
(5–6] |
|
(6–7] |
|
(7–8] |
|
(8–9] |
|
|
Поместить на форму кнопку и текстовое поле.
Задать следующие значения свойств объектов:
form |
|
Caption |
Характеристика землетрясения |
label1 |
|
Caption |
Магнитуда |
text1 |
|
Text |
(пусто) |
Command1 |
|
Caption |
Ok |
Код программы:
Private Sub Command1_Click()
Select Case Val(Text1.Text)
Case Is <= 0
MsgBox "Ошибка ввода", vbOKOnly, "Внимание"
Case 0 To 4
Print "сейсмически неопасное"
Case 4 To 5
Print "слабое местное"
Case 5 To 6
Print "среднее"
Case 6 To 7
Print "сильное локального масштаба"
Case 7 To 8
Print "сильное регионального масштаба"
Case 8 To 9
Print "планетарного масштаба"
Case Else
MsgBox "Ошибка ввода", vbOKOnly, "Внимание"
End Select
End Sub
Пример 3. вычисление балльности
Определить балльность в эпицентре землетрясения по формуле:
Поместить на форму кнопку, две метки и два текстовых поля.
Задать следующие значения свойств объектов:
form |
|
Caption |
Балльность землетрясения |
label1 |
|
Caption |
Магнитуда |
label2 |
|
Caption |
Глубина очага |
text1 |
|
Text |
(пусто) |
text2 |
|
Text |
(пусто) |
Command1 |
|
Caption |
Ok |
Код программы:
Private Sub Command1_Click()
Print 3 + 1.5 * Val(Text1.Text) - 3.5 * Log(Val(Text2.Text)) / Log(10)
End Sub
Для проверки выполнения простых и сложных условий используется оператор If : Then : Else.
Синтаксис:
If условие Then инструкция End If
If условие Then инструкция 1 Else инструкция 2 End If
|
Если условие, стоящее после If истинно (True), то выполняется инструкция 1, следующая за Then, если условие ложно (False), то выполняется инструкция 2, следующая за Else.
Примеры простых условий:
a > b
a < b
a = b
a ≥ b: a >= b
a ≤ b: a <= b
a ≠ b: a <> b
Примеры сложных условий:
a, b > c: a > c And b > c
a > c [b > c]: a > c Or b > c
Пример 4. вычисление балльности
Модифицировать код программы в примере 3, поставив ограничения на диапазон допустимых значений магнитуды M и глубины очага H.
Private Sub Command1_Click()
If Val(Text1.Text) <= 0 Or Val(Text1.Text) > 9 Or Val(Text2.Text) <= 0 Then
MsgBox "Ошибка ввода", vbOKOnly, "Внимание"
Else
Print 3 + 1.5 * Val(Text1.Text) - 3.5 * Log(Val(Text2.Text)) / Log(10)
End If
End Sub
Пример 5. характеристики землетрясения
Определить характеристики землетрясения по значениям магнитуды M и глубины очага H.
Ввод:
магнитуда
глубина очага
Вывод:
тип
зона действия
балльность
С помощью управляющих элементов создать интерфейс пользователя.
В режиме выполнения приложение должно выглядеть следующим образом:
Код программы:
Sub Character()
Select Case Val(Text1.Text)
Case Is <= 0
MsgBox "Ошибка ввода", vbOKOnly, "Внимание"
Case 0 To 70
Text3.Text = "нормальное"
Case 70 To 300
Text3.Text = "промежуточное"
Case Is > 300
Text3.Text = "глубокофокусное"
End Select
End Sub
Sub Region()
...
End Sub
Private Sub Intensity()
...
End Sub
Private Sub Command1_Click()
Character
Region
Intensity
End Sub
последствия землетрясений
Возможные результаты воздействия землетрясения на здания:
Легкие повреждения Трещины в штукатурке, откалывание небольших кусков штукатурки. Ущерб незначительный. Необходим текущий ремонт.
Умеренные повреждения Трещины в стенах, откалывание штукатурки, падение черепицы. Ущерб 10–15% от стоимости здания. Необходим капитальный ремонт.
Тяжелые повреждения Сквозные трещины в стенах, падение дымовых труб. Ущерб 30–40%. Необходим восстановительный ремонт.
Разрушения Обрушение крупных частей здания. Ущерб 50%. Необходим снос здания.
Обвалы Полное разрушение здания.
Классификация зданий по сейсмостойкости Jc:
Тип здания |
Jc, баллы |
Бескаркасные здания из местного материала без фундамента |
4 |
Здания из кирпича-сырца на фундаменте |
4.5 |
Здания с деревянным каркасом с легкими перекрытиями |
5 |
Здания из кирпича или бетонных блоков |
5.5 |
Бревенчатые дома |
6 |
Каркасные железобетонные здания или крупнопанельные здания |
6.5 |
Вероятность получения зданиями повреждений разной степени Pповр:
J – Jc |
Степень повреждения |
|||||
0 |
1 |
2 |
3 |
4 |
5 |
|
0 |
90% |
10% |
|
|
|
|
1 |
40% |
50% |
10% |
|
|
|
2 |
10% |
30% |
50% |
10% |
|
|
3 |
0 |
10% |
30% |
50% |
10% |
|
4 |
0 |
0 |
10% |
30% |
50% |
10% |
5 |
0 |
0 |
0 |
10% |
30% |
60% |
6 |
0 |
0 |
0 |
0 |
10% |
90% |
алгоритмизация оценки последствий землетрясений
Пример 6. ущерб от землетрясения
Определить нанесенный зданию ущерб от землетрясения по значению степени повреждения.
С помощью управляющих элементов создать интерфейс пользователя.
В режиме выполнения приложение должно выглядеть следующим образом:
Код программы:
Private Sub Command1_Click()
If Option1.Value = True Then
List1.List(0) = "Ущерб незначительный;"
List1.List(1) = "Необходим текущий ремонт"
ElseIf Option2.Value = True Then
List1.List(0) = "Ущерб 10-15% от стоимости здания;"
List1.List(1) = "Необходим капитальный ремонт"
ElseIf Option3.Value = True Then
List1.List(0) = "Ущерб 30-40% от стоимости здания;"
List1.List(1) = "Необходим восстановительный ремонт"
ElseIf Option4.Value = True Then
List1.List(0) = "Ущерб 50% от стоимости здания;"
List1.List(1) = "Необходим снос здания"
ElseIf Option5.Value = True Then
List1.List(0) = "Полное разрушение здания"
List1.List(1) = ""
End If
End Sub
Private Sub Command2_Click()
End
End Sub
Пример 7. Степень повреждения кирпичных домов
Определить степень повреждения кирпичных домов по значению балльности землетрясения.
J – 5.5 |
Степень повреждения |
|||||
0 |
1 |
2 |
3 |
4 |
5 |
|
0–0.5 |
90% |
10% |
|
|
|
|
0.5–1.5 |
40% |
50% |
10% |
|
|
|
1.5–2.5 |
10% |
30% |
50% |
10% |
|
|
2.5–3.5 |
0 |
10% |
30% |
50% |
10% |
|
3.5–4.5 |
0 |
0 |
10% |
30% |
50% |
10% |
4.5–5.5 |
0 |
0 |
0 |
10% |
30% |
60% |
>5.5 |
0 |
0 |
0 |
0 |
10% |
90% |
С помощью управляющих элементов создать интерфейс пользователя.
В режиме выполнения приложение должно выглядеть следующим образом:
Код программы:
Private Sub Command1_Click()
Select Case Val(Text0.Text) - 5.5
Case Is < 0
MsgBox "Разрушений нет", vbOKOnly, "Сообщение"
Case 0 To 0.5
Text1.Text = "10%"
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Case 0.5 To 1.5
Text1.Text = "50%"
Text2.Text = "10%"
Case 1.5 To 2.5
Text1.Text = "30%"
Text2.Text = "50%"
Text3.Text = "10%"
Case 2.5 To 3.5
Text1.Text = "10%"
Text2.Text = "30%"
Text3.Text = "50%"
Text4.Text = "10%"
Case 3.5 To 4.5
Text2.Text = "10%"
Text3.Text = "30%"
Text4.Text = "50%"
Text5.Text = "10%"
Case 4.5 To 5.5
Text2.Text = "10%"
Text4.Text = "30%"
Text5.Text = "60%"
Case Else
Text4.Text = "10%"
Text5.Text = "90%"
End Select
End Sub
Пример 8. Степень повреждения зданий
Определить степень повреждения разных типов зданий по значению балльности землетрясения.
С помощью управляющих элементов создать интерфейс пользователя.
В режиме выполнения приложение должно выглядеть следующим образом:
Код программы:
Private Sub Command1_Click()
Select Case Combo1.ListIndex
Case 0
J = 4
Case 1
J = 4.5
Case 2
J = 5
Case 3
J = 5.5
Case 4
J = 6
Case 5, 6
J = 6.5
End Select
Select Case Val(Text1.Text) - J
Case Is < 0
MsgBox "Разрушений нет", vbOKOnly, "Сообщение"
Case 0 To 0.5
Text2.Text = "10%"
Case 0.5 To 1.5
Text2.Text = "50%"
Text3.Text = "10%"
Case 1.5 To 2.5
Text2.Text = "30%"
Text3.Text = "50%"
Text4.Text = "10%"
Case 2.5 To 3.5
Text2.Text = "10%"
Text3.Text = "30%"
Text4.Text = "50%"
Text5.Text = "10%"
Case 3.5 To 4.5
Text3.Text = "10%"
Text4.Text = "30%"
Text5.Text = "50%"
Text6.Text = "10%"
Case 4.5 To 5.5
Text4.Text = "10%"
Text5.Text = "30%"
Text6.Text = "60%"
Case Else
Text5.Text = "10%"
Text6.Text = "90%"
End Select
End Sub
последствия землетрясений
Величина материального ущерба зависит от степени повреждения здания:
|
Степень повреждения зданий |
||||
1 |
2 |
3 |
4 |
5 |
|
УЩЕРБ, % |
5% |
15% |
30% |
50% |
100% |
Величина среднего ущерба определяется по формуле:
Damage=0.05*Pповр(1)+0.15*Pповр(2)+0.3*Pповр(3)+0.5*Pповр(4)+Pповр(5)
Пример 9. материальный ущерб
Отразить в последней программе материальный ущерб разных типов зданий.
Потери среди людей, находящихся в момент землетрясения внутри здания, зависит от степени повреждения здания:
ПОТЕРИ |
Степень повреждения зданий |
||||
1 |
2 |
3 |
4 |
5 |
|
общие |
0.0 |
0.0 |
0.05 |
0.5 |
0.95 |
безвозвратные |
0.0 |
0.0 |
0.01 |
0.17 |
0.65 |
Поскольку степень повреждения здания является случайной величиной, вероятность безусловных потерь населения определяется по формулам:
общие потери
Pобщ=0.05*Pповр(3)+0.5*Pповр(4)+0.95*Pповр(5)
безвозвратные потери (доля жертв)
Pбезв=0.01*Pповр(3)+0.17*Pповр(4)+0.65*Pповр(5)
санитарные потери (доля раненых)
Pсан=Pобщ-Pбезв
Пример 10. последствия землетрясения
Отразить в последней программе потери населения, вызванные повреждением разных типов зданий.
Интерфейс пользователя:
Добавления к коду программы:
Text7.Text = 0.05 * Val(Text2.Text) + 0.15 * Val(Text3.Text) +
0.3 * Val(Text4.Text) + 0.5 * Val(Text5.Text) + Val(Text6.Text)
Text8.Text = 0.05 * Val(Text4.Text) + 0.5 * Val(Text5.Text) +
0.95 * Val(Text6.Text)
Text9.Text = 0.01 * Val(Text4.Text) + 0.17 * Val(Text5.Text) +
0.65 * Val(Text6.Text)
Text10.Text = Text8.Text - Text9.Text
статистические параметры землетрясений
Число землетрясений N – это дискретная случайная величина, которая характеризует повторяемость землетрясений в конкретном районе.
N = 0, 1, 2, 3...
Если наблюдать за числом землетрясений в течение нескольких лет, то окажется, что некоторые значения N реализуются чаще, чем другие.
Присвоим каждому значению случайной величины N число P(N), которое отражает частоту возникновения землетрясений.
Например:
N |
0 |
1 |
2 |
3 |
4 |
5 |
P(N) |
0.05 |
0.15 |
0.25 |
0.3 |
0.2 |
0.05 |
Причем должно выполняться равенство:
P(0)+P(1)+P(2)+P(3)+P(4)+P(5)=1
Числа P(N) имеют смысл вероятностей возникновения заданного числа землетрясений.
Оказывается, что вероятность появления N сильных землетрясений в течение промежутка времени t подчиняется распределению Пуассона:
Здесь λ – среднее число землетрясений в единицу времени t.
Время ожидания землетрясения T – это непрерывная случайная величина, которая характеризует момент наступления первого землетрясения в конкретном районе.
0 ≤ T ≤ ∞
Вероятность возникновения первого землетрясения в промежуток времени (0, t) подчиняется экспоненциальному распределению:
Данная величина называется также сейсмическим риском на интервале (0, t):
R(t)=P(T≤t)=1-e-λt
Пусть прогнозируемый период времени представляет собой интервал (t1, t2), где t1 – время, прошедшее с момента последнего землетрясения, t2 – расчетное время. Тогда сейсмический риск равен
R(t1,t2)=1-e-λ(t2-t1)
Числовыми характеристиками времени ожидания являются:
повторяемость землетрясения
равновероятные промежутки времени
(0,Me), (Me,∞)
Вероятность землетрясения на каждом из этих промежутков равна ½.
Число Me называется медианой
Пример 10. вероятность землетрясений
Для района, в котором происходит в среднем 3 сильных землетрясения за 100 лет, определить вероятности возникновения 0 ,1, 2 землетрясений в течение 10 лет.
Примечание:
λ=3/100=0.03
t=10
Вероятности:
P(N,10)=e-0.3 *(0.3)N/N!
P(0,10)=e-0.3
P(1,10)=e-0.3 *0.3
P(2,10)=e-0.3 *(0.3)2/2
Для округления дробной части числа до двух знаков можно использовать функцию
Round(число, 2)
С помощью управляющих элементов создать интерфейс пользователя.
Код программы:
Private Sub Command1_Click()
List1.Clear
List1.AddItem "P(0) = " & Round(Exp(-0.3), 2)
List1.AddItem "P(1) = " & Round(Exp(-0.3) * 0.3, 2)
List1.AddItem "P(2) = " & Round(Exp(-0.3) * 0.3 ^ 2 / 2, 2)
End Sub
Пример 11. статистика землетрясений
По заданной частоте землетрясений λ определить сейсмический риск, повторяемость землетрясения и равновероятные промежутки времени.
Примечание:
Частота землетрясений
λ = число землетрясений/время наблюдения
Сейсмический риск
R=1-exp(-λt)
Повторяемость землетрясения
E=1/λ
Равновероятные периоды времени
(0,Me), (Me,∞)
Me=ln2/λ
Ввод:
число землетрясений
время наблюдения
прогнозируемый период времени t
Вывод:
R(t)
E
Me
С помощью управляющих элементов создать интерфейс пользователя.
Код программы:
Private Sub Command1_Click()
Dim Y As Single
Y = Val(Text3.Text) / Val(Text2.Text)
Text4.Text = Round(1 - Exp(-Y * Val(Text1.Text)), 2)
Text5.Text = Round(1 / Y, 1)
List1.Clear
List1.AddItem " < " & Round(Log(2) / Y, 1)
List1.AddItem " > " & Round(Log(2) / Y, 1)
End Sub
Private Sub Command2_Click()
End
End Sub
