Презентация на тему: Глобальные переменные, отладка кода, матрицы

Глобальные переменные, отладка кода, матрицы
Глобальные переменные и глобальное присваивание в документе Mathcad
Примеры локального и глобального присваивания
Порядок выполнения присваивания
Примеры локального и глобального присваивания
Глобальное определение пользовательской функции
Системные (встроенные) переменные Mathcad
Локальные и глобальные переменные относительно описания программы-функции
Оператор on error и функция error
Тестирование и отладка программ в пакете MathCAD
Инструменты отладки в системе Mathcad
Встроенная функция trace
Пример работы функции trace
Особенности работы функции trace
Встроенная функция pause
Инструменты палитры Отладка
Работа с векторами и матрицами
Работа с векторами и матрицами
Задание матрицы
Задание матрицы
Работа с векторами и матрицами
Примеры использования индексированных переменных
Примеры использования индексированных переменных
Примеры использования индексированных переменных
Установка значений встроенных переменных
Особенности переопределения ORIGIN
Некоторые функции Mathcad, работающие с массивами
Примеры работы функций mean, max, min
Некоторые функции Mathcad, работающие с массивами
Некоторые функции Mathcad, работающие с массивами
Примеры работы функций Re, Im, augment, stack, submatrix
Функции генерации матриц
Примеры работы функций identity, diag и matrix
Вычисление обратной матрицы
Работа с векторами и матрицами
Решение системы линейных алгебраических уравнений
Примеры решения СЛАУ
Функции сортировки для векторов и матриц
Выбор столбца из матрицы
Работа с векторами и матрицами
Примеры выбора столбца
Векторные и матричные операторы
Векторные и матричные операторы (продолжение)
Векторные и матричные операторы (продолжение)
Использование массивов в скалярных выражениях
Векторизация
Пример: X D сравните с
Код, эквивалентный
1/48
Средняя оценка: 4.5/5 (всего оценок: 81)
Код скопирован в буфер обмена
Скачать (666 Кб)
1

Первый слайд презентации: Глобальные переменные, отладка кода, матрицы

Лекция 8

Изображение слайда
2

Слайд 2: Глобальные переменные и глобальное присваивание в документе Mathcad

1. Локальное присваивание должно идти ДО использования переменной в выражении, иначе переменная считается неопределенной, а выражение ошибочным. Локальное присваивание: Имя_переменной := выражение вводится : Глобальное присваивание: Имя_переменной  выражение вводится ~ 2. Присваивание может происходить в любом месте документа. Даже если оператор присваивания стоит в конце документа, присваивание действует на весь документ 3. Значение глобального присваивания может изменено локальным присваиванием Можно использовать панель Evaluation

Изображение слайда
3

Слайд 3: Примеры локального и глобального присваивания

x = Переменная х не определена и поэтому ln( x )= недоступна для применения. x:=5 Переменной x присвоено значение, теперь она ln(x)= 1.609 доступна. ln(y)=2.303 Переменная y доступна, так как ей присвоено глобальное значение в конце документа. y:=123 Значение переменной y может быть y=123 переопределено локально. e=2.718 Системная переменная e – основание натурального логарифма. e:=10 Системная переменная может быть e=10 переопределена, но это не рекомендуется. y 10 y присвоено глобальное значение 10. This variable or function is not defined above/

Изображение слайда
4

Слайд 4: Порядок выполнения присваивания

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

Изображение слайда
5

Слайд 5: Примеры локального и глобального присваивания

При вычислении y используется глобальное значение x, так как y было определено глобальным присваиванием.

Изображение слайда
6

Слайд 6: Глобальное определение пользовательской функции

Распространяется на весь документ: Использование функции выше ее определения

Изображение слайда
7

Слайд 7: Системные (встроенные) переменные Mathcad

Переменная Ввод Назначение  Ctrl+Shift+p Число  (3.1415…) e e Основание натурального логарифма  Ctrl+Shift+z Символ бесконечности и максимальное вещественное значение % % Процент (0.01) i, j 1i, 1j Мнимая единица TOL Погрешность численных методов (0.001) CTOL Погрешность некоторых численных методов (0.001) ORIGIN Начальное значение индекса массива PRNCOLWIDTH Число столбцов оператора WRITEPRN (8) PRNPRECISION Число десятичных знаков оператора WRITEPRN ( 4 ) CWD Строка, содержащая путь к текущей папке …

Изображение слайда
8

Слайд 8: Локальные и глобальные переменные относительно описания программы-функции

Внутреннее, локальное присваивание: Имя_переменной ←выражение Переменная сохраняет присвоенное значение только в теле функции. За пределами функции значение переменной или не определено, или имеет значение. заданное локальным := или глобальным присваиванием. Пример. X:=5 F:= X X+1 X F=6 X=5 Обратите внимание: программа-функция может не иметь формальных (входных) параметров, так как она может использовать глобальные относительно функции переменные.

Изображение слайда
9

Слайд 9: Оператор on error и функция error

Выражение_1 on error Выражение_2 Пример: f(x):=  on error f(2)=1×10 307 Функция error(S) - выводит маленькое желтое окно, в котором отображается S ( строка-константа (любая фраза в кавычках) или значение строковой переменной S ). Окошко появляется только после щелчка мыши на выделенном красном вызове подпрограммы-функции. Пример 1 : G(3 )= No value Здесь может быть текст в “ ” Кнопка панели инструментов Программирование

Изображение слайда
10

Слайд 10: Тестирование и отладка программ в пакете MathCAD

В ранних версиях пакета MathCAD (до 13 версии) отсутствуют какие-либо инструменты отладки. Начиная с версий MathCAD 13-14, появились следующие инструменты отладки программы: две встроенных функции trace и pause ; окно трассировки программы; панель с четырьмя кнопками отладки.

Изображение слайда
11

Слайд 11: Инструменты отладки в системе Mathcad

Изображение слайда
12

Слайд 12: Встроенная функция trace

Функция возвращает строку, содержащую значения аргументов x, y, z, которая выводится в Окне трассировки. Обращение к этой функции имеет вид: trace ( S,x,y,z ) Параметр S задает очередность вывода информации в окне трассировки и сопровождающий текст. Если выводится значение только одной переменной, то параметр S в обращении к функции можно опустить.

Изображение слайда
13

Слайд 13: Пример работы функции trace

Изображение слайда
14

Слайд 14: Особенности работы функции trace

для получения данных в Окне трассировки необходимо пересчитать весь документ MathCAD (нажать клавиши [Ctrl+F9] даже при установленном автоматическом режиме вычислений); для работы с данными Окна трассировки можно использовать команды контекстного меню ; в параметре S порядковый номер вывода значений (номер задается в фигурных скобках {}) обязательно должен начинаться с нулевого значения (независимо от значения системной переменной ORIGIN); пояснения к выводимым значениям, задаваемые в параметре S, могут содержать пробелы и другие символы (включая русские буквы), что повышает читаемость информации, выводимой в Окне трассировки.

Изображение слайда
15

Слайд 15: Встроенная функция pause

Функция возвращает строку (также как функция trace), но после этого выполнение вычисления прерывается. Для продолжения вычислений необходимо нажать кнопку Run ( зеленый треугольник) палитры инструментов Отладка Обращение к функции имеет вид: pause ( S,x,y,z ) Формальные параметры имеют то назначение, что и параметры функции trace.

Изображение слайда
16

Слайд 16: Инструменты палитры Отладка

Возобновить вычисления (при нажатии кнопки процесс вычисления продолжается – часто используется с функцией pause). Прервать вычисления (прекращается процесс вычисления – для продолжения нажать клавиши [Ctrl+F9]). Переключение режима отладки (нажать на кнопку для включения режима отладки). Включение или выключение окна трассировки (при нажатии кнопки появляется окно трассировки).

Изображение слайда
17

Слайд 17: Работа с векторами и матрицами

Изображение слайда
18

Слайд 18: Работа с векторами и матрицами

Шаблон для задания матриц Шаблон для задания индекса Вычисление обратной матрицы Вычисление детерминанта Векторизация Выбор столбца Вычисление скалярного произведения векторов Вычисление векторного произведения векторов Вычисление суммы элементов вектора транспонирование матрицы Вектор – это вектор-столбец!

Изображение слайда
19

Слайд 19: Задание матрицы

1 способ – использование шаблона. Его вызов: Главное меню / Вставка / Матрица или кнопка панели «Матрица».

Изображение слайда
20

Слайд 20: Задание матрицы

2 способ – задание значений некоторым элементам матрицы (индексированным переменным). Индексы элементов матрицы – нижние индексы. Нижние индексы можно ввести: Используя шаблон с панели «Матрица» Используя шаблон с панели инструментов «Форматирование» Набором символа [ Индексы строки и столбца отделяются запятой.

Изображение слайда
21

Слайд 21: Работа с векторами и матрицами

Шаблон для задания матриц Шаблон для задания индекса Вычисление обратной матрицы Вычисление детерминанта Векторизация Выбор столбца Вычисление скалярного произведения векторов Вычисление векторного произведения векторов Вычисление суммы элементов вектора транспонирование матрицы Вектор – это вектор-столбец!

Изображение слайда
22

Слайд 22: Примеры использования индексированных переменных

Набираем: v[0 = Если вектор v существует, то в документе Mathcad будет выведено, например: v 0 =2 Пусть вектор w не существует. Набираем: w[2 :2 На экране отображается: w 2 :=2 Набираем: w[5 : 8 На экране отображается: w 5 := 8 Набираем: w= Получаем: Неопределенные элементы массива заполняются нулями Пробел указывает, что набор индекса закончен

Изображение слайда
23

Слайд 23: Примеры использования индексированных переменных

3. Набираем: M 0,0 :=1 M 0,1 :=3 M 0,2 :=5 M 0,1 :=2 M 1,1 :=6 M= Получаем: 4. Набираем M 2,2 = индекс вне границ Здесь используется значение ORIGIN=0 по умолчанию

Изображение слайда
24

Слайд 24: Примеры использования индексированных переменных

5. В новом документе устанавливаем ORIGIN в значение 1 ( Origin 1 или с помощью команды TOOLS / BUILT-IN Variables главного меню –см. следующий слайд ). Задаем матрицу M: Выводим значения элементов матрицы: M 2,2 = 4 M 3,1 =5 M 3,3 =1 M 0,0 = индекс вне границ набираем ~ ORIGIN=1

Изображение слайда
25

Слайд 25: Установка значений встроенных переменных

Tools / Worksheet Options / Built-in Variables (Сервис / Опции документа / Встроенные переменные)

Изображение слайда
26

Слайд 26: Особенности переопределения ORIGIN

Если ORIGIN определяется в рабочем документе, а не с помощью команды  Встроенные переменные, используйте одно глобальное определение. Хотя можно переопределять ORIGIN с помощью  :=, это приведет к путанице. Если изменить ORIGIN в середине рабочего документа, Mathcad будет показывать, что массивы имеют  n  элементов, где  n  — разница между старым и новым значением ORIGIN. Когда ORIGIN устанавливается в диалоговом окне  Встроенные переменные, его значение применяется ко всем массивам документа. Невозможно сделать так, чтобы одни массивы использовали один ORIGIN, а другие — другой. Если сослаться на элемент массива с нижним индексом меньшим, чем ORIGIN, Mathcad отмечает обращение к массиву сообщением об ошибке “ индекс вне границ ”. Это же сообщение выводится при выходе индекса за верхнюю границу массива. Если неосторожно определить массив, начиная с первого элемента, когда ORIGIN установлен на своё значение по умолчанию, равное нулю, будут получаться неожиданные ответы от функций массива, подобных  mean. Дело в том, что Mathcad будет автоматически определять x0 = 0  для всех этих массивов. Этот дополнительный элемент искажает значения, возвращаемые функциями массива. Чтобы избежать этой проблемы, выберите  Встроенные переменные  из меню  Математика  и установите ORIGIN равным 1 в диалоговом окне   “Встроенные переменные”.

Изображение слайда
27

Слайд 27: Некоторые функции Mathcad, работающие с массивами

mean(A) - возвращает среднее арифметическое элементов массива A. max(A) - возвращает самый большой элемент в массиве A.  Если A имеет комплексные элементы, возвращает наибольшую вещественную часть плюс  i, умноженную на наибольшую мнимую часть. min(A) - возвращает самый маленький элемент в массиве A. Если A имеет комплексные элементы, возвращает наименьшую вещественную часть плюс  i, умноженную на наименьшую мнимую часть.

Изображение слайда
28

Слайд 28: Примеры работы функций mean, max, min

Изображение слайда
29

Слайд 29: Некоторые функции Mathcad, работающие с массивами

tr(A) - возвращает сумму диагональных элементов (след) матрицы A (только для квадратных матриц). rank(A) - возвращает ранг вещественной матрицы A. Примеры работы функций tr, rank matrix must be square This value must be a matrix of real numbers

Изображение слайда
30

Слайд 30: Некоторые функции Mathcad, работающие с массивами

Re(A) - возвращает массив, состоящий из элементов, которые являются вещественными частями элементов A. Im ( A ) - возвращает массив, состоящий из элементов, которые являются коэффициентами при мнимых частях элементов A. augment (A, B ) - возвращает массив, сформированный расположением массивов A и B бок о бок. Массивы A и B должны иметь одинаковое число строк. stack (A, B) - возвращает массив, сформированный расположением A над B. Массивы A и B должны иметь одинаковое число столбцов. submatrix (A, i1, i2, j1, j1 ) - возвращает подматрицу, состоящую из всех элементов, содержащихся в строках с i1 по  i2  и столбцах с  j1  по  j1. Чтобы поддерживать порядок строк и-или столбцов, удостоверьтесь, что   i1<= i2   и j1 <=j 2, иначе порядок строк и-или столбцов будет обращен.

Изображение слайда
31

Слайд 31: Примеры работы функций Re, Im, augment, stack, submatrix

Изображение слайда
32

Слайд 32: Функции генерации матриц

identity(n) – возвращает единичная матрица размером n x n (все диагональные элементы равны 1, остальные элементы равны 0). diag( v ) - возвращает диагональную матрицу, содержащую на диагонали элементы вектора v. matrix(n,m,f) – возвращает матрицу, в которой элемент с индексами i,j равен f(i,j), где i=0,1, …, n, j=0,1, …, m, f(i,j) – некоторая функция.

Изображение слайда
33

Слайд 33: Примеры работы функций identity, diag и matrix

Изображение слайда
34

Слайд 34: Вычисление обратной матрицы

С помощью кнопки панели инструментов «Матрица». С помощью операции возведения в степень, допустимой для квадратных матриц. Выражение M n набирается с помощью клавиши ^. При n=-1 получаем обращение матрицы. Использование функции geninv( A ). Она вычисляет левую обратную к A матрицу L такую, что: L A = I, где I - единичная матрица, имеющая то же самое число столбцов, что и A. Матрица А - n x m вещественная матрица, где n >= m. Соответственно L имеет размер m x n, I - m x m.

Изображение слайда
35

Слайд 35: Работа с векторами и матрицами

Шаблон для задания матриц Шаблон для задания индекса Вычисление обратной матрицы Вычисление детерминанта Векторизация Выбор столбца Вычисление скалярного произведения векторов Вычисление векторного произведения векторов Вычисление суммы элементов вектора транспонирование матрицы Вектор – это вектор-столбец!

Изображение слайда
36

Слайд 36: Решение системы линейных алгебраических уравнений

Ax=b Использование обратной матрицы d:=|A| x:=i f   ( d 0, A -1 b, ″ матрица вырождена ″ ) x:=i f   ( |d| >TOL, A -1 b, ″ матрица почти вырождена ″ ) 2. Использование функции lsolve(A,b) решения СЛАУ.

Изображение слайда
37

Слайд 37: Примеры решения СЛАУ

Изображение слайда
38

Слайд 38: Функции сортировки для векторов и матриц

sort(v) – сортировка вектора в порядке возрастания их значений. reverse(v) – перестановка элементов вектора в обратном порядке (например, после sort)/ csort(M,n) – перестановка строк матрицы таким образом, чтобы отсортированным оказался n- й столбец. rsort(M,n) – перестановка столбцов матрицы таким образом, чтобы отсортированной оказалась n- я строка.

Изображение слайда
39

Слайд 39: Выбор столбца из матрицы

Выбор столбца из матрицы осуществляется использованием верхнего индекса. Значение верхнего индекса – номер столбца. Верхний индекс заключается в угловые скобки. Набор верхнего индекса осуществляется с помощью панели «Матрица» или комбинацией клавиш Ctrl+6.

Изображение слайда
40

Слайд 40: Работа с векторами и матрицами

Шаблон для задания матриц Шаблон для задания индекса Вычисление обратной матрицы Вычисление детерминанта Векторизация Выбор столбца Вычисление скалярного произведения векторов Вычисление векторного произведения векторов Вычисление суммы элементов вектора транспонирование матрицы Вектор – это вектор-столбец!

Изображение слайда
41

Слайд 41: Примеры выбора столбца

This array index is invalid for this array

Изображение слайда
42

Слайд 42: Векторные и матричные операторы

Изображение слайда
43

Слайд 43: Векторные и матричные операторы (продолжение)

Изображение слайда
44

Слайд 44: Векторные и матричные операторы (продолжение)

Изображение слайда
45

Слайд 45: Использование массивов в скалярных выражениях

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

Изображение слайда
46

Слайд 46: Векторизация

Векторизация – одновременное проведение некоторой скалярной математической операции над всеми элементами вектора или матрицы, помеченными знаком векторизации. Векторизация В системе MATLAB: скалярные операции.

Изображение слайда
47

Слайд 47: Пример: X D сравните с

Изображение слайда
48

Последний слайд презентации: Глобальные переменные, отладка кода, матрицы: Код, эквивалентный

Преимущества векторизации: Краткость и универсальность записи. Запись с векторизацией, показывает что над элементами массивов с одинаковыми номерами выполняются одинаковые действия. Таким образом, векторизация – первый шаг к распараллеливанию вычислений. В системе MATLAB параллельные вычисления – это реальность. Предположение: матрицы имеют одинаковые размеры.

Изображение слайда