Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Компьютерные технологии в машиностроении. Основы работы в системе Mathca

.pdf
Скачиваний:
20
Добавлен:
15.11.2022
Размер:
2.13 Mб
Скачать

 

1

m1

1

m1 n1

mean(V )=

Vi , mean(A)=

Ai, j ;

 

 

 

m i=0

m n i=0 j=0

median(A) находит медиану массива. Медианой называется величина, выше или ниже которой в вариационном ряду находится равное количество членов. Если массив имеет четное число элементов, медиана вычисляется как среднее арифметическое двух центральных величин; var(V) или var(A) вычисляет (вариацию) дисперсию элементов

массива согласно формуле

 

1

m1

1

m1 n1

var(V )=

(Vi − mean(V ))2 , var(A)=

(Ai, j mean(A))2 ;

 

 

 

m i=0

m n i=0 j=0

stdev(V) или stdev(A) вычисляет среднеквадратичное отклонение (квадратный корень из дисперсии) элементов массива:

stdev(V )=

var(V ) , stdev(A)= var(A) ;

corr(A,B) функция,

определяющая коэффициент корреляции

для двух массивов А и В:

corr(A,B)=

cvar(A,B)

;

var(A) var(B)

erf(x) функция ошибок.

Как уже отмечалось, система Mathcad позволяет генерировать случайные числа, имеющие разнообразное распределение вероятностей, и определять плотность распределения. Далее представлены некоторые из этих функций:

rnd(x) позволяет получать ряд случайных чисел с равномерным распределением на отрезке [0…x];

rnorm(m,μ,σ) позволяет получать ряд случайных чисел с нормальным распределением, σ > 0;

rt(m,d) позволяет получать ряд случайных чисел с t-распреде- лением Стьюдента, d > 0;

rpois(m,λ) позволяет получать ряд случайных чисел, имеющих распределение Пуассона, λ > 0.

51

Стр. 51

ЭБ ПНИПУ (elib.pstu.ru)

Рис. 5.2. Фрагмент рабочего документа Mathcad

Для построения гистограмм имеется специальная функция hist(int,data). Она вырабатывает вектор частот попадания данных data в заданные интервалы, определяемые значением элементов вектора int. Система Mathcad интерпретирует int как набор точек, определяющих последовательность интервалов в гистограмме. Значения в int должны быть расположены в порядке возрастания. Результатом этой функции является вектор f, в котором fi есть число значений data, удовлетворяющих условию

int i data < int i+1.

Mathcad игнорирует данные, меньшие, чем первое значение в int, или большие, чем последние значение в int. На рис. 5.2 показан пример использованиянекоторыхстатистическихфункцийипостроениягистограмм.

5.3. Функции интерполяции, сглаживания и регрессии

Интерполяция использует значения некоторых функций, заданные в ряде точек, чтобы предсказать значения функции между ними. В системе Mathcad можно соединять точки данных прямыми линиями (линейная интерполяция) или соединять их отрезками кубического полинома (кубическая сплайн-интерполяция):

52

Стр. 52

ЭБ ПНИПУ (elib.pstu.ru)

linterp(vx,vy,x) линейная интерполяция, соединяет точки данных отрезками прямых, создавая таким образом ломаную. Данная функция использует векторы данных vx и vy, чтобы получить интерполируемое значение y, соответствующие третьему аргументу x. Векторы данных vx и vy должны быть одинаковой длины. Вектор vx должен содержать вещественные значения, расположенные в порядке возрастания.

interp(vs,vx,vy,x) кубическая сплайн-интерполяция, возвращает интерполируемое значение y, соответствующие аргументу x. Вектор vs вычисляется на основе векторов данных vx и vy одной из трех функций lspline, pspline или cspline. Векторы данных vx и vy также должны быть одинаковой длины, а вектор vx должен содержать вещественные значения, расположенные в порядке возрастания.

Приведенные выше функции lspline, pspline или cspline отличаются только граничными условиями:

lspline(vx,vy) генерирует кривую сплайна, которая приближается к прямой линии в граничных точках;

pspline(vx,vy) генерирует кривую сплайна, которая приближается к параболе в граничных точках;

cspline(vx,vy) генерирует кривую сплайна, которая может быть кубическим полиномом в граничных точках.

Фрагмент документа с применением интерполяционных функций представлен на рис. 5.3.

Рис. 5.3. Примеры использования интерполяционных функций

53

Стр. 53

ЭБ ПНИПУ (elib.pstu.ru)

В системе Mathcad есть ряд функций, позволяющих провести линейную и полиномиальную регрессию данных.

Функции регрессии позволяют получить кривую или поверхность определенного типа, которая минимизирует ошибку между собой и имеющимися данными. Конечным результатом регрессии является аппроксимирующая функция.

Функции линейной регрессии, аппроксимирующие значения данных по линии вида y(x) = ax + b:

slope(vx,vy) определяет значение коэффициента a, т.е. наклон линии регрессии;

intercept(vx,vy) определяет значение параметра b, смещение по оси ординат линии регрессии.

Функция regress(vx,vy,n) позволяет аппроксимировать значения данных с помощью полинома любого порядка n. Эта функция используется совместно с функцией interp. Фрагмент рабочего документа с применением регрессионных функций показан на рис. 5.4.

Рис. 5.4. Примеры использования регрессионных функций

Сглаживание данных предполагает использование набора значений y и возвращение нового набора значений y, который является более гладким, чем исходный набор. В отличие от интерполяции и регрессии, сглаживание приводит к новому набору значений y, а не к функции, которая

54

Стр. 54

ЭБ ПНИПУ (elib.pstu.ru)

может оценить значения между заданными точками данных. К функциям сглаживания данных относятся следующие:

medsmooth(vy,n) сглаживает данные вектора с помощью скользящей медианы (рис. 5.5), n ширина окна, по которому происходит сглаживание; n должно быть нечетным числом, меньшим, чем число элементов вектора;

ksmooth(vx,vy,b) сглаживает данные вектора при помощи гауссова ядра данных vy. Параметр b управляет окном сглаживания и должен быть установленв несколькораз большевеличины интерваламежду точками x.

Рис. 5.5. Сглаживание данных с помощью medsmooth

5.4. Данные файлового типа и функции доступа к ним

Еще один важный тип данных системы Mathcad файловые данные.

Всущности, это те же векторы и матрицы, но с элементами, которые могут записываться в виде файлов, имеющих свои имена. Файлы данных

всистеме представляют собой запись матриц в их естественной форме.

Входе создания файла система считывает значения элементов векторов и матриц поэлементно (для матриц слева направо и сверху вниз).

Читая файлы данных, можно брать данные из различных источников и анализировать их в Mathcad. Записывая файлы данных, можно экспортировать результаты Mathcad в текстовые процессоры, электронные таблицы и другие прикладные программы. Mathcad читает файлы, которые состоят

55

Стр. 55

ЭБ ПНИПУ (elib.pstu.ru)

из чисел, отделенных запятыми, пробелами или возвратами каретки. Создаваемые или используемые ими файлы легко просмотреть с помощью любого текстового редактора, воспринимающего текстыв видеASCII-кодов.

Для чтения и создания файлов данных система Mathcad использует функции доступа к файлам (табл. 5.2).

 

Таблица 5.2

 

 

Функция

Назначение

READ(file)

Считывает значения из файла данных с указанным именем

 

file. Обычно она используется для присваивания значений

 

векторам, например: vi := READ (data). Здесь элементы

 

вектора vi получают значения, считанные из файла с име-

 

нем data. Файл должен существовать на диске, иначе си-

 

туация будет считаться ошибочной. Для указания полного

 

имени файла (если он не в текущем каталоге системы)

 

следует использовать общеупотребительные для MS-DOS

 

составные имена, например D: \EXPER\ data, если файл

 

data расположен на диске D в каталоге EXPER. Файл дол-

 

жен иметь расширение dat.

READPRN(file)

Считывает данные в виде двумерного массива матрицы.

 

Каждая строка в файле данных становится строкой в мат-

 

рице. Число элементов в каждой строке должно быть оди-

 

наково. Файл должен иметь расширение prn. Обычно дан-

 

ная функция используется в виде

 

А:= READPRN (data)

WRITE(file)

Записывает значения в файл данных и присваивает ему

 

указанное имя. Данные могут порождаться математиче-

 

ским выражением, например:

 

WRITE (file) := Выражение

 

Выражение должно создавать данные векторного типа vi

WRITEPRN(file)

Записывает матрицу в файл данных с указанным именем.

 

Каждая строка матрицы становится строкой в файле.

 

Должна использоваться в определениях следующего вида:

 

WRITEPRN(file) := А

 

 

APPEND(file)

Дописывает данные в конец уже существующего файла.

 

Должна использоваться в определениях следующего вида:

 

APPEND (file) := vi

APPENDPRN(file)

Дописывает матрицу к существующему файлу. Каждая

 

строка матрицы становится новой строкой в файле дан-

 

ных. Должна использоваться в определениях следующего

 

вида: APPENDPRN (file) := А. Существующий файл дол-

 

жен иметь столько же столбцов, сколько и матрица А

 

 

56

 

Стр. 56

ЭБ ПНИПУ (elib.pstu.ru)

Задания для самостоятельного выполнения

1.С помощью функции rnd(x) создайте массив из 200 или 300 случайных чисел и постройте гистограмму их распределения. Определите среднее значение, дисперсию, среднеквадратичную погрешность, максимальное и минимальное значения.

2.Постройте для массива HB (см. предыдущий раздел) гистограмму

иопределите все перечисленные статистические характеристики.

3.Считайте файл opt.prn с диска, постройте график зависимости твердости шва (Y) по ширине (X), произведите сглаживание графика данных с помощью различных функций.

4.Создайте векторы из 10 случайных чисел, полученных равномерным распределением, проведите линейную и кубическую интерполяцию, найдите уравнения линейной и кубической регрессии для этих данных.

57

Стр. 57

ЭБ ПНИПУ (elib.pstu.ru)

6. РЕШЕНИЕ УРАВНЕНИЙ

Система Mathcad позволяет решать как одно уравнение с одним неизвестным, так и системы уравнений и несколькими переменными. Максимальное число уравнений и неизвестных в системе равно 50.

6.1. Решение одного уравнения

Для решения одного уравнения с одним неизвестным используется функция root(f(x), x), аргументами которой являются f(x) выражение и x переменная, входящая в это выражение. В системе Mathcad функция root использует для поиска корня уравнения метод секущих. С помощью данной функции определяется значение переменной, при которой выражение f(x) обращается в ноль. Оба аргумента функции должны быть скалярными.

Первый аргумент (f(x)) функции root может быть задан либо выражением, либо функцией, определенной где-либо в рабочем документе. Второй аргумент (x) имя переменной, используемое в выражении, варьируя которую Mathcad будет пытаться обратить выражение в ноль. Этой переменной (x) перед использованием функции root необходимо присвоить числовое значение. Система Mathcad использует его как начальное приближение для поиска корня. На рис. 6.1 представлен пример нахождения корня уравнения ex = x3.

Рис. 6.1. Применение функции root

Для того чтобы применить функцию root, необходимо уравнение выразить либо в виде выражения

x3 ex = 0, либо в виде функции f(x).

58

Стр. 58

ЭБ ПНИПУ (elib.pstu.ru)

Если уравнение имеет несколько корней, то Mathcad будет искать корень, ближайший к заданному первоначальному значению. В этом случае для поиска всех корней следует использовать несколько начальных приближений, а график функции позволит определить число корней уравнения (рис. 6.2).

Имеют место случаи, когда функция root не сходится. Часто это связано с тем, что при очередном приближении значение выражения f(x) становится меньше значения встроенной переменной TOL = 10–3, корень считается не найденным. В этом случае необходимо переопределить значение переменной TOL, например 10–6.

Рис. 6.2. Пример решения уравнения с несколькими корнями

Рис. 6.3. Решения уравнения при многократном изменении одного из параметров

59

Стр. 59

ЭБ ПНИПУ (elib.pstu.ru)

Предположим, что нужно решить уравнение многократно при изменении одного из параметров этого уравнения. Например, пусть требуется решить уравнение ex = а x2, для нескольких значений параметра а. Сначала следует задать функцию f(a,x) := root(ex a x2, x), затем присвоить рад значений параметру а и начальное значение переменной x0. Начальное приближение x0 позволит определить корень уравнения для первого значения параметра а. Чтобы найти корень уравнения для каждого последующего значения параметра а, нужно задать xа как функцию f(a, xа–1). В этом случаи начальное приближение для каждого значения параметра а будет корень, соответствующий предыдущему значению параметру а. Как это выглядит в рабочем документе Mathcad – показано на рис. 6.3, здесь же проведена проверка правильности решения данного уравнения при многократном изменении одного из параметров.

6.2. Нахождение корней полинома

Для нахождения корней выражения, имеющего вид v0 +v1 x+v2 x2 +...+vn xn ,

используется функция polyroots(v). Она возвращает корни полинома степени n. В отличие от функции root, функция polyroots не требует начального приближения. Кроме того, функция polyroots определяет сразу все корни, как вещественные, так и комплексные.

Коэффициенты полинома должны находиться в векторе v длины n + 1. Вектор должен начинаться с константы v0, и в него должны входить все коэффициенты, в том числе равные нулю. Пример нахождения корней полинома показан ни рис. 6.4.

Рис. 6.4. Применение функции polyroots

60

Стр. 60

ЭБ ПНИПУ (elib.pstu.ru)