- •А. В. Лыкин
- •В задачах электроэнергетики Учебное пособие
- •Предисловие
- •1. Краткое руководство по работе в системе MathCad
- •1.1. Интерфейс MathCad 3.0
- •1.2. Переменные
- •1.3. Векторы и матрицы
- •1.4. Функции
- •1.5. Ввод и редактирование математических выражений
- •1.6. Ввод и редактирование текста
- •1.7. Ввод и вывод данных
- •1. 8. Решение уравнений
- •1.9. Графические возможности
- •1.10. Символьная математика
- •1.11. Использование размерностей физических величин
- •1.12. Описание зависимостей
- •1.13. Интерполяция
- •1.14. Статистический анализ данных и сортировка
- •2. Решения задач
- •2.1. Расчет режима электрической сети (линейная модель)
- •2.2. Расчет режима электрической сети (нелинейная модель)
- •2.3. Исследование корней уравнений установившегося режима
- •2.4. Определение мощности компенсирующего устройства из баланса реактивной мощности
- •2.5. Регулирование напряжения в электрической сети
- •6. Оптимизация режима работы неоднородной электрической сети
- •2.7. Распределение мощностей между тепловыми электростанциями
- •2.8. Проверка статической устойчивости системы автоматического регулирования
- •2.9. Расчет токов короткого замыкания в электрической сети
- •Список использованных источников
- •Использование клавиатуры
- •Математические функции
1.13. Интерполяция
В системе MathCAD v. 3.0 предусмотрено два вида интерполяции:
линейная интерполяция - для соединения точек отрезками прямой линии;
кубическая сплайн-интерполяция - для соединения точек отрезками кубоид.
Линейная интерполяция.
linterp(vx.vy,x) Возвращает линейно интерполированное значение x для векторов vx и vy.
vx является вектором вещественных данных, расположенных в возрастающем порядке. Они соответствуют значениям x.
vy является вектором вещественных данных. Значения его элементов соответствуют значениям y. Число элементов в векторе vy такое же, что и в векторе vx.
x является значением независимой переменной, для которой необходимо найти интерполированное значение y. Для получения хороших результатов значение x должно быть в промежутке между значениями данных в векторе vx.
Пример линейной интерполяции.
i := 0 .. 5 vxi := i
linterp(vx,vy,1.5) = 7.7
Для x, равного 1,5, интерполированное значение y равно 7,7.
Кубическая сплайн-интерполяция.
cspline(vx,vy) Возвращает вектор вторых производных для векторов данных vx и vy. Этот вектор становится первым аргументом в функции interp. Результирующая кривая является отрезками кубоид между парами соседних значений.
pspline(vx,vy) Так же, как и cspline, но результирующая кривая является отрезками парабол между парами соседних значений.
lspline(vx,vy) Так же, как и cspline, но результирующая кривая является отрезками прямых линий между парами соседних значений.
interp(vs,vx,vy,x) Возвращает значение y в точке x, полученное сплайн-интерполяцией.
vs является вектором, сгенерированным либо cspline, либо pspline, либо lspline.
vx является вектором вещественных данных, расположенных в возрастающем порядке. Они соответствуют значениям x.
vy является вектором вещественных данных. Значения его элементов соответствуют значениям y. Число элементов в векторе vy такое же, что и в векторе vx.
x является значением независимой переменной, для которой необходимо найти интерполированное значение y. Для получения хороших результатов значение x должно быть в промежутке между значениями данных в векторе vx.
Пример кубической сплайн-интерполяции.
i := 0 .. 10 x := 0,.25 .. 10
vxi := i vyi := rnd(1)
vs := cspline(vx,vy)
f(x) := interp(vs,vx.vy,x)
Здесь определена интерполирующая функция f(x), состоящая из отрезков кубоид между соседними точками данных.
1.14. Статистический анализ данных и сортировка
В MathCAD имеется ряд статистических функций, функций распределения вероятностей и функция генерации последовательности случайных чисел.
Для выполнения расчетов со статистическими данными в MathCAD имеются следующие функции:
mean(v) Среднее арифметическое элементов вектора v:
;
stdev(v) Стандартное отклонение элементов вектора v:
.
Чтобы получить несмещенную оценку стандартного отклонения следует умножить функцию stdev(v) на ;
var(v) Дисперсия элементов вектора v:
.
Чтобы получить несмещенную оценку дисперсии следует умножить функцию stdev(v) на ;
corr(v,w) Коэффициент корреляции по Пирсону для векторов v и w:
.
hist(interv,data) Возвращает вектор с элементами, являющимися числами значений вектора data, попадающими между i - м и i + 1 - м значениями вектора interv, элементы которого должны быть расположены в возрастающем порядке.
Функции распределения:
Гамма-функция Эйлера .
z является вещественной или комплексной скалярной величиной, но не может быть 0, -1, -2,...
Для комплексной z (z) является аналитическим расширением вещественной функции.
Нижеследующие соотношения, включающие гамма-функцию, могут оказаться полезными:
(z+1) = z(z),
(z)(1-z) = csc(z)
(n+1) = n!
Функция погрешностей erf(x)
x является вещественной скалярной величиной.
Чтобы определить дополняющую функцию погрешностей, рекомендуется дополнить создаваемый документ функцией:
cerf(x) := 1 - erf(x)
Нормальная функция распределения:
cnorm(x)
x является вещественной скалярной величиной.
Чтобы получить функцию нормального распределения со средним значением и стандартным отклонением , рекомендуется включить в создаваемый документ функцию:
Cnorm(x,,) := (cnorm(x - ) / ).
Генерация последовательности случайных чисел:
rnd(x) Возвращает случайное число из равномерно распределенной последовательности на интервале между 0 и x.
x является вещественной скалярной величиной.
Для того, чтобы получить случайные числа с равномерным распределением на интервале между а и b, можно определить функцию:
RND(a,b) := (b - a)rnd(1) + a
Для того, чтобы получить случайные целые числа на интервале между m и n, можно определить:
RND_INT(m,n) := m + floor(rnd(n - m) + 1))
Функция rnd для генерации последовательности случайных чисел использует начальное число 0. Чтобы сгенерировать другую последовательность случайных чисел, следует изменить начальное число с помощью команды меню Math|Randomize.
Чтобы заново начать генерацию последовательности случайных чисел без ее изменения, следует выбрать команду меню Math|Randomize и использовать то же самое начальное число.
Для сортировки векторов (массивов) имеются следующие функции сортировки:
sort(v) возвращает вектор, в котором элементы вектора v расположены в возрастающем порядке;
csort(A,n) возвращает массив, сформированный из строк матрицы A до колонки n, элементы которого расположены в возрастающем порядке;
rsort(A,n) возвращает массив, сформированный из строк матрицы A до строки n, элементы которого расположены в возрастающем порядке;
reverse(v) возвращает вектор, в котором элементы вектора v расположены в убывающем порядке.