Mathcad: получаем вектор значений функции
Часто задаваемый вопрос - как получить из значений функции, посчитанной в заданных пределах с заданным шагом именно вектор значений (а не ранжированную переменную, она же переменная-диапазон, она же дискретный аргумент).
Допустим, нам нужно табулировать функцию f(x)
в интервале изменения значений x
от a
до b
включительно с известным шагом по x
, равным h
.
Решить задачу с помощью дискретного аргумента очень просто, достаточно задать нужный дискретный аргумент и взять от него функцию:
табулирование функции в Mathcad с помощью ранжированной переменной (нижняя часть списка значений отрезана)
Оператор "равно" не сработает в одном действии с "присвоить" для аргумента-диапазона.
Важней здесь другое - в диапазоне величины не занумерованы, как в массиве, соответственно, нельзя по номеру "вытащить" нужную величину и нельзя воспользоваться стандартными функциями для обработки векторов.
Чтобы получить вектор значений функции, рассчитаем требуемое количество узлов сетки по формуле
n = (b-a)/h + 1
, затем сформируем вектор t
из требуемых значений аргумента (не будем переопределять уже занятое ранжированной переменной наименование "x
", хотя это и возможно), а затем вычислим значения функции по формуле yi = f(ti)
, все эти действия показаны на втором рисунке:
табулирование функции в Mathcad с сохранением вектора значений (показаны только первые элементы вектора)
Замечания.
1. Предполагаем, что количество узлов сетки n = (b-a)/h + 1
получается целым, если это не так, всегда можно взять вместо n
величину ceil(n)
(значение, округлённое вверх), как и сделано на скрине, правда, мы рискуем при этом "прихватить" лишнюю область определения, например, при a = 1
, b = 3
, h = 0.3
, имеем n = 7.667
, ceil(n) = 8
, а последнее вычисленное значение x
будет равно a + h * (ceil(n)-1) = 3.1
.
2. Также предполагается, что системная переменная ORIGIN
(начало нумерации элементов для векторов и матриц) не менялась и равна нулю.
Код проверялся в актуальной сборке Mathcad 15 под Windows 10.
Скачать этот документ Mathcad 14/15 .xmcd в архиве .zip (12 Кб)
Примечание. В новой линейке Mathcad Prime вектору уже можно непосредственно присваивать диапазон, если сразу выполнить ":=" и "=", хотя различие по контексту между векторами и диапазонами остаётся:
Mathcad Prime - присваиваем диапазон вектору
08.06.2020, 19:47 [5268 просмотров]