Основы компьютерных технологий решения геологических задач
..pdfэлементом блока параметров, столбцом электронной таблицы, электронной таблицей. Столбец и таблица отображаются целиком. Display рекомендуется применять при отладке программы. Функция Display не возвращает значения, поэтому ее нельзя использовать в выражениях.
Замечание.
При достижении программой функции Display выполнение программы временно приостанавливается. Продолжить выполнение можно, нажав клавишу «Продолжить программу» на панели инструментов.
Пример
A, B – переменные; С1 – столбец в таблице
Display () Display (10.0) A = 3.0
B = –100.0
Display (A, B, A + B) Display (C1)
Display (Table)
LinearSystem
Функция LinearSystem решает систему линейных алгебраических уравнений методом Гаусса с выбором ведущего элемента. При использовании этой функции приняты следующие соглашения. Матрица коэффициентов и вектор свободных членов образуют подтаблицу размером N строк на N+1 столбцов (N – число неизвестных).
Подтаблица задается координатами левого верхнего и правого нижнего углов. Функция имеет 3 аргумента:
1)координаты левого верхнего угла подтаблицы (указывается имя столбца
иномер строки в квадратных скобках);
2)координаты правого нижнего угла подтаблицы (указывается имя столбца
иномер строки в квадратных скобках);
3)столбец, содержащий решение (указывается имя столбца);
Решение системы помещается в столбец, указанный в качестве 3-го аргумента. Номера строк, в которые записывается вектор неизвестных, совпадают с номерами строк подтаблицы. При невозможности решить систему уравнений содержимое столбца-решения не изменяется. Функция LinearSystem не возвращает значения, поэтому ее нельзя использовать в выражениях.
Пример
Таблица имеет 10 строк и 10 столбцов, A1, A2, A3, B – смежные столбцы, X – произвольный столбец. Система состоит из 3-х уравнений.
LinearSystem (A1[1], B[3], X) |
// Решение в X[1], X[2], X[3] |
LinearSystem (A1[5], B[7], X) |
// Решение в X[5], X[6], X[7] |
LinearSystem (A1[8], B[10], X) |
// Решение в X[8], X[9], X[10] |
181
Random
Функция Random генерирует случайное число, равномерно распределенное на отрезке [0,1]. Функция Random не имеет аргументов.
Пример
A – переменная; С1 – столбец в таблице
A = Random () |
// Переменная A содержит случайное число |
for i = 1 to RowNumber |
|
C1[i] = Random () |
// Столбец заполняется случайными числами |
endfor |
|
NormalRandom
Функция NormalRandom генерирует нормально-распределенное случайное число с нулевым математическим ожиданием и единичной дисперсией. Функция NormalRandom не имеет аргументов. Функция может быть использована для получения нормально-распределенной случайной величины с математическим ожиданием m и дисперсией d.
Пример
A – переменная; С1 – столбец в таблице
c
c Переменная A содержит нормально-распределенное число c
A = NormalRandom ()
c
c Столбец заполняется нормально-распределенными числами c
for i = 1 to RowNumber C1[i] = NormalRandom ()
endfor
c
c Переменная A содержит нормально-распределенное число c с математическим ожиданием m и дисперсией d
c
A = NormalRandom () * sqrt (d) + m
String
Функция String приводит содержимое ячейки Электронной таблицы к строковому типу. Это позволяет сравнивать ячейку с текстовой константой или переменной. Функция имеет один аргумент.
182
Пример
A – переменная; Пласт – столбец в таблице
A = 'Ю23'
for i = 1 to RowNumber
if (String (Пласт[i]) == A) then
Оператор1
else
Оператор2 endif
endfor
Int
Функция Int находит целую часть вещественного числа. Аргументом функции может быть: ячейка Электронной таблицы, внутренняя переменная программы, элемент блока параметров, столбец Электронной таблицы. Если аргумент является столбцом, то функция рассчитывается для каждого элемента столбца. Функция может быть использована для округления результата вычислений до заданного числа десятичных знаков после запятой.
Пример
Пусть значение переменной A равно 3.14159265 и требуется округлить его до 5 знаков после запятой, сохранив результат в переменной B. Тогда решение задачи будет следующим:
B = Int (A * 10^5) /10^5
Number
Функция Number определяет, является ли ее аргумент корректным действительным числом. Если аргумент является числом, функция возвращает 1, в противном случае функция возвращает 0. Аргументом функции может быть: ячейка Электронной таблицы, внутренняя переменная программы, элемент блока параметров, столбец Электронной таблицы. Если аргумент является столбцом, то функция рассчитывается для каждого элемента столбца.
Пример
A, B, C – переменные; С1, С2 – столбцы в таблице
A = Number (10.67)
B= Number ('Функция возвратит нуль') C2 = Number (C1)
C= Number (–C2[1])
ColumnIndex
Функция ColumnIndex возвращает порядковый номер столбца Электронной таблицы. Функция имеет 1 аргумент. Аргументом функции должно быть имя столбца Электронной таблицы.
183
Пример
N – переменная; AK – столбец в таблице
N = ColumnIndex (AK) // Переменная N содержит номер столбца АК
ColumnRename
Функция ColumnRename выполняет переименовывание столбца Электронной таблицы. Функция имеет 2 аргумента. Обращение к функции выглядит следующим образом:
ColumnRename (Имя1, Имя2), где
Имя1 – старое имя столбца Электронной таблицы. Аргумент должен быть текстовой константой;
Имя2 – новое имя столбца Электронной таблицы. Аргумент должен быть текстовой константой.
Пример
AK1 – столбец в таблице
ColumnRename ('AK1', 'AK') // Столбец АК1 будет переименован в АК
Low
Функция Low в столбце Электронной таблицы находит номер первой ячейки с корректным числовым значением. Функция имеет 1 аргумент. Аргументом функции должно быть имя столбца Электронной таблицы.
Пример
N – переменная; AK – столбец в таблице
N = Low (AK) // Переменная N содержит номер первой числовой ячейки // в столбце АК
High
Функция High в столбце Электронной таблицы находит номер последней ячейки с корректным числовым значением. Функция имеет 1 аргумент. Аргументом функции должно быть имя столбца Электронной таблицы.
Пример
N – переменная; AK – столбец в таблице
N = High (AK) // Переменная N содержит номер последней числовой ячейки // в столбце АК
Length
Функция Length определяет количество ячеек с корректными числовыми значениями в столбце Электронной таблицы. Функция имеет 1 аргумент. Аргументом функции должно быть имя столбца Электронной таблицы.
Пример
N – переменная; AK – столбец в таблице
N = Length (AK) // Переменная N содержит количество корректных // числовых ячеек в столбце АК
184
LnGamma
Функция LnGamma определяет значение натурального логарифма гаммафункции (эйлерова интеграла 1-го рода). Функция имеет один аргумент. Аргументом функции может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, столбец Электронной таблицы, элемент блока параметров. Значение аргумента должно находиться в диапазоне от 0.000001 до
1000000000.
Пример
A – переменная
А = Exp (LnGamma (1.0)) // Переменная A = Гамма (1.0)
Normal
Функция Normal вычисляет вероятностный интеграл от плотности нормального распределения (распределения К. Гаусса) с нулевым средним и единичной дисперсией. Функция имеет один аргумент. Аргументом функции может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Функция возвращает значение вероятности в долях единицы, при этом интегрирование выполняется от -inf (минус бесконечность) до x.
Пример
P – переменная
P = Normal (3.0) // P = 0.998650101968434
InvertNormal
Функция InvertNormal вычисляет верхние процентные точки стандартного нормального распределения. По данному p (задается в долях единицы) функция вычисляет значение x, при котором
P { X >= x } = p.
Функция имеет один аргумент. Аргументом функции может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно находиться в пределях от
0.000000000000001 до 0.999999999999999.
Пример
X – переменная
X = InvertNormal (0.998650101968434) // X = 2.99999999999994
Hi2
Функция Hi2 вычисляет вероятностный интеграл от плотности хи-квадрат распределения (распределения К. Пирсона) с v степенями свободы. Функция имеет два аргумента. Обращение к функции выглядит следующим образом:
p = Hi2 (x, v),
185
где x – нижний предел интегрирования (верхний предел равен плюс бесконечность). Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть больше равно нулю;
v – число степеней свободы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть целым числом и находиться в диа-
пазоне от 1 до 2000000000;
Пример
P – переменная
P = Hi2 (30.0, 50) // P = 0.98883521972845
InvertHi2
Функция InvertHi2 вычисляет верхние процентные точки хи-квадрат распределения с v степенями свободы. По данному p функция вычисляет значение x, при котором
P { Xи2 (v) >= x } = p.
Функция имеет два аргумента. Обращение к функции выглядит следующим образом:
x = InvertHi2 (p, v),
где p – вероятность в долях единицы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно находиться в пределах от
0.00000000000001 до 0.99999999999999;
v – число степеней свободы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть целым числом и находиться в диа-
пазоне от 1 до 2000000000;
Пример
X – переменная
X = InvertHi2 (0.98883521972845, 50) // X = 30.0000000000001
Student
Функция Student вычисляет вероятностный интеграл t-распределения (распределения Стьюдента) с n степенями свободы. Функция имеет два аргумента. Обращение к функции выглядит следующим образом:
p = Student (x, n),
где x – верхний предел интегрирования (нижний предел равен минус бесконечность). Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента не ограничено;
186
n – число степеней свободы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть целым числом и находиться в диа-
пазоне от 1 до 2000000000;
Пример
P – переменная
P = Student (4.0, 20) // P = 0.999648238353436
InvertStudent
Функция InvertStudent вычисляет верхние процентные точки t-распределения с n степенями свободы. По данному p функция вычисляет значение x, при котором
P { t (n) >= x } = p.
Функция имеет два аргумента. Обращение к функции выглядит следующим образом:
x = InvertStudent (p, n),
где p – вероятность в долях единицы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка электронной таблицы, элемент блока параметров. Значение аргумента должно находиться в пределах от
0.000000000000001 до 0.999999999999999;
n – число степеней свободы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть целым числом и находиться в диа-
пазоне от 1 до 2000000000;
Пример
X, P – переменная
P = 0.999648238353436
X = InvertStudent (1–P, 20) // X = 4.00000000000036
Fisher
Функция Fisher вычисляет вероятностный интеграл F-распределения (распределения Р.Фишера) с v1 и v2 степенями свободы. Функция имеет три аргумента. Обращение к функции выглядит следующим образом:
p = Fisher (x, v1, v2),
где x – нижний предел интегрирования (верхний предел равен плюс бесконечность). Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть больше или равно нулю;
v1 – число степеней свободы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть целым числом и находиться в диа-
пазоне от 1 до 2000000000;
187
v2 – число степеней свободы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть целым числом и находиться в диа-
пазоне от 1 до 2000000000;
Пример
P – переменная
P = Fisher (6.3, 3, 32) // P = 0.0017559719113603
InvertFisher
Функция InvertFisher вычисляет верхние процентные точки F-распределения со степенями свободы v1 и v2. Для данного p функция вычисляет значение x, при котором
P { F (v1, v2) >= x } = p.
Функция имеет три аргумента. Обращение к функции выглядит следующим образом:
x = InvertFisher (p, v1, v2),
где p – вероятность в долях единицы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно находиться в пределах от
0.000000000000001 до 0.999999999999999;
v1 – число степеней свободы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть целым числом и находиться в диа-
пазоне от 1 до 2000000000;
v2 – число степеней свободы. Аргументом может быть числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть целым числом и находиться в диа-
пазоне от 1 до 2000000000;
Пример
X – переменная
X = InvertFisher (0.0017559719113603, 3, 32) // X = 6.29999999999985
Геофизические функции
Chart
Геофизическая функция Chart выполняет расчет по одной из палеток, находящейся в текущем альбоме палеток. Функция Chart имеет пять аргументов. Обращение к функции Chart выглядит следующим образом:
Chart ('Имя палетки', Имя1, Имя2, Имя3, Имя4),
где 'Имя палетки' – имя палетки используемой для расчета; Имя1 и Имя2 – имена столбцов таблицы с исходными данными для расчета;
188
Имя3 и Имя4 – имена столбцов таблицы, в которые будет помещен результат расчета. В случае отсутствия в таблице столбцов с именами Имя3 и (или) Имя4 эти столбцы будут автоматически добавлены в таблицу.
Пример
Chart ('Палетка Кп (АК, НКТ) ', W, АК, Литология, Кп)
Nomogram
Геофизическая функция Nomogram выполняет расчет по одной из номограмм, находящейся в текущем альбоме палеток. Функция Nomogram имеет четыре аргумента. Обращение к функции Nomogram выглядит следующим образом:
Nomogram ('Имя номограммы', Имя1, Имя2, Имя3),
где 'Имя номограммы' – имя номограммы используемой для расчета; Имя1 и Имя2 – имена столбцов таблицы с исходными данными для расчета;
Имя3 – имя столбца таблицы, в который будет помещен результат расчета. В случае отсутствия в таблице столбца с именем Имя3 этот столбец будет автоматически добавлен в таблицу.
Пример
Nomogram ('Кпр_Кп_Апс (Комсомольское м-е) ', Кп, Апс, Кпр)
Relation
Геофизическая функция Relation выполняет расчет по одной из зависимостей, находящейся в текущем альбоме палеток. Функция Relation имеет три аргумента. Обращение к функции Relation выглядит следующим образом:
Relation ('Имя зависимости', Имя1, Имя2),
где 'Имя зависимости' – имя зависимости используемой для расчета; Имя1 – имя столбца таблицы с исходными данными для расчета;
Имя2 – имя столбца таблицы, в который будет помещен результат расчета. В случае отсутствия в таблице столбца с именем Имя2 этот столбец будет автоматически добавлен в таблицу.
Пример
Relation ('Зависимость Р_Кп', Кп, Р)
ArithMean
Функция ArithMean находит среднее арифметическое в столбце Электронной таблицы. Функция имеет 1 аргумент. Аргументом функции должно быть имя столбца Электронной таблицы.
Пример А – переменная; Кп – столбец в таблице
A = ArithMean (Кп) // Переменная A содержит среднее арифметическое // значение столбца Кп
189
ArithMeanByIndex
Функция ArithMeanByIndex находит среднее арифметическое в столбце Электронной таблицы с использованием в качестве фильтра целочисленного индекса. Функция имеет 3 аргумента. Обращение к функции выглядит следующим образом:
A = ArithMeanByIndex (Имя1, Имя2, Индекс),
где Имя1 – имя столбца Электронной таблицы, для которого будет производиться расчет среднего арифметического;
Имя2 – имя столбца Электронной таблицы, содержащего целочисленные индексы;
Индекс – числовая константа, внутренняя переменная программы, ячейка Электронной таблицы, элемент блока параметров. Значение аргумента должно быть целым числом. Этот аргумент является фильтром, который отбирает для расчета среднего арифметического только те элементы из столбца Имя1, для которых соответствующие значения элементов столбца Имя2 равны Индексу.
Пример А – переменная; Кп – столбец в таблице, содержащий коэффициенты порис-
тости; ХН – столбец в таблице, содержащий индексы флюидов от 1 до 5, при этом 1 соответствует – воде, 2 – воде с нефтью, 3 – нефти с водой, 4 – нефти, 5 – газу.
с
сВ этом фрагменте программы определяется среднее арифметическое
сзначение коэффициента пористости для нефтяной части залежи
с
A = ArithMeanByIndex (Кп, ХН, 4)
GeomMean
Функция GeomMean находит среднее геометрическое в столбце Электронной таблицы. Функция имеет 1 аргумент. Аргументом функции должно быть имя столбца Электронной таблицы.
Пример
G – переменная; Кп – столбец в таблице
G = GeomMean (Кп) // Переменная G содержит среднее геометрическое // значение столбца Кп
GeomMeanByIndex
Функция GeomMeanByIndex находит среднее геометрическое в столбце Электронной таблицы с использованием в качестве фильтра целочисленного индекса. Функция имеет 3 аргумента. Обращение к функции выглядит следующим образом:
G = GeomMeanByIndex (Имя1, Имя2, Индекс),
где Имя1 – имя столбца Электронной таблицы, для которого будет производиться расчет среднего геометрического;
190