17586

МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ В MATHCAD

Лабораторная работа

Информатика, кибернетика и программирование

ЛЕКЦИЯ 4. Модульное программирование в Mathcad Общая идея модульного программирования состоит в следующем: реализации вычислительных процессов в виде отдельных программных единиц модулей; в обращении к этим модулям в других программах с передачей данных необход

Русский

2013-07-04

1.42 MB

13 чел.

ЛЕКЦИЯ 4.

Модульное программирование в Mathcad

 Общая идея модульного программирования состоит в следующем:

реализации вычислительных процессов в виде отдельных программных единиц - модулей;

в обращении к этим модулям в других программах с передачей данных, необходимых для вычислительного процесса.

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

Модульное программирование в пакете Mathcad можно реализовать двумя методами:

модульное программирование в пределах одного документа Mathcad;

модульное программирование в нескольких документах Mathcad.

4.1. Модульное  программирование  в  одном документа

Этот метод характеризуется тем, что:

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

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

 Пример 1. Реализуем в виде программы-функции вычисление определенного интеграла   вида

                                                   

используя формулу Симпсона с автоматическим выбором числа узлов. При этом программа-функция Simpson(f,a,b,N) вычисляет определенный интеграл по формуле Симпсона при фиксированном числе интервалов N, а программа-функция Adapt(f,a,b) выбирает по заданной точности вычисления интеграла (равной 10-8 ) количество интервалов.

 

Используя эти программы - функции вычислим определенный интеграл от функции  f(x) = x2  на отрезке [0,1]. Точное значение интеграла равно 1/3=0.33333333333333... Обращение к программе-функции Adapt дает результат

                                

Перед обращением  к программе-функции Adapt необходимо описать функцию пользователя f(x) в виде

                                        f(x) : = x2,

так как имя функции f(x) используется в качестве фактического параметра.

4.2. Модульное    программирование

в   нескольких   документах   Mathcad

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

невозможность  параллельной разработки программ несколькими разработчиками;

невозможность  "автономной" отладки  программ-функций и их модификации  в процессе эксплуатации программного обеспечения;

невозможность использования  разработанной программы-функции в нескольких документах без дублирования описания программы-функции.

Для преодоления этих недостатков  описание программы-функции выполняют в одном документе MathCAD, а  ее вызов размещается в другом документе (этот прием широко используется в современных алгоритмических языках высокого уровня). Однако при этом возникает вопрос : как при вызове программы-функции в одном документе "присоединить" файл с другим документом MathCAD, в котором находится описание вызываемой программы-функции? Для такого присоединения служит специальный оператор Reference, который записывается в виде, показанном на рис. 4.1.

                    Рис. 4.1. Структура  оператора   Reference

Оператор Reference вставляется в текст документа, в котором вызывается программа-функция перед ее вызовом. Для вставки этого оператора необходимо выполнить следующие шаги:

 Шаг 1. Щелкнуть левой кнопкой мыши в том месте, куда будет вставлен оператор Reference.

 Шаг 2. Обратиться к пункту меню  Insert  и выполнить команду Reference.

 Шаг 3. В  поле ввода появившегося диалогового окна ввести полное имя файла, содержащего документ с описанием вызываемой функции. Для задания имени можно щелкнуть кнопку Browse и в появившемся диалоговом окне указать диск, папку и имя файла ( в поле ввода отразится полное имя файла).

 Шаг 4. После выполненных установок щелкнуть кнопку  OK

После выполнения этих шагов в документе появится оператор Reference, показанный на рис. 4.1.

Таким образом реализация модульного программирования в нескольких документах МаthCAD включает следующие этапы (которые будем иллюстрировать на примере вычисления определенного интеграла с использованием программ-функций примера 1) :

Описание в документе МаthCAD необходимых программ-функций и сохранение этого документа в файле в нужной папке и под нужном именем (в нашем примере документ будет включать описание двух программ-функций Simpson и Adapt и документ будет сохранен на диске D: в папке MathCad_Apll в файле под именем Adapt_Integration.mcd).

Вставка оператора Reference в документе, в котором вызываются описанные программ-функций путем выполнения шагов 1 - 4. В нашем примере вставленный оператор Reference будет иметь вид:

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

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

ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ

Ниже приводится дополнительная информацию о некоторых объектах и конструкциях MathCAD, используемых при программировании в этом пакете.

Наборные  панели MathCAD. Для ввода в текст документа MathCAD заготовок-шаблонов математических знаков и конструкций программирования (знаков арифметических операций, матриц, знаков интегралов, производных и т.д.) используются так называемые наборные панели. Кнопки вывода на экран наборных панелей занимают пятую сверху строку программного окна MathCAD и  назначение  наборных панелей пояснено  в следующей таблице.

                                                                                                      

Значок  кнопки

      Назначение  наборной панели

         

Ввод знаков арифметических операций, цифр

       

   Ввод знаков отношений, используемых    при записи условий

       

   Построение различных графиков

       

    Ввод матричные  операторы

       

    Ввод операторов суммирования,    интегрирования и дифференцирования

       

Ввод конструкций  программирования   ( панель Программирования)

       

    Ввод операторов символьной

    математики

       

    Ввод букв греческого алфавита

Для вызова на экран нужной наборной панели достаточно щелкнуть левой кнопкой мыши на значке, а затем приемом "перетащить-и-оставить" разместить раскрывшуюся наборную панель в удобном для работы месте программного окна MathCAD.

Для ввода конструкций программирования будет необходима наборная панель Программирования, в которую входят конструкции, показанные на следующем рисунке:

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

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

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

имя—функции(список формальных параметров) : =

арифметическое выражение, зависящее от формальных параметров 

Пример 2. Определим функцию dist(x,y), вычисляющую расстояние между точкой с координатами (x,y) и началом координат.  Вводим следующие символы:

                      dist(x,y): x^2+y^2

Ввод двоеточия “ : ” вставляет на экране символ : = и на экране появляется следующее описание  функции пользователя

                   dist(x,y) : =

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

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

Возможные варианты использования функции dist(x,y), описанной в вышеприведенном примере :

Напомним, что описание  функции пользователя должно опережать обращение к ней.

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

 используя выделяющую рамку, выделить объекты, к которым применяется оператор;

нажать одновременно клавиши [ Ctrl ] и "Минус", чтобы применить оператор векторизации ( объекты, к которым применяется оператор  вверху имеют стрелку).

Оператор векторизации меняет смысл операций. Например, А некоторая матрица. Тогда запись  exp(A) некорректна, так как аргументом функции exp  должна быть простая переменная, а не матрица. Применение к этой функции оператора векторизации приводит к вычислению функции exp от каждого элемента матрицы и результатом также является матрица. Это иллюстрирует следующий фрагмент:

           

Аналогичный пример можно привести с функцией "корень квадратный"

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


 

А также другие работы, которые могут Вас заинтересовать

20242. Основи методу Монте-Карло 146.5 KB
  точки та розрахувати в кожному полож. точки її енергію з частинками системи. Будується ланцюг випадкових переміщень однієї точки. точки; 2 обрати модель потенціальної енергії; 3задати температуру та довжину кроку відображ.
20243. Полімерний стат. клубок 46.5 KB
  клубок Полімерні молекули – ланцюги з великої кількості ланок вони можуть відрізнятися сладом однакові ланки або різні степенем гнучкості числом гілок та заряджених груп. Найпростіша полімерна молекула – послідовність великої кількості атомних груп з`єднаних у ланцюг ковалентними хімічними зв`язками. N масі ланцюга. Полімерний ланцюг має N 1 N 102 104 Полімерні молекули поділяються на лінійні та тривимірні.
20244. Спектральний склад розсіяного світла в газах. Ефект Мандельштама-Брілюена 85 KB
  Спектральний склад розсіяного світла в газах. Розсіяння світла – це зміна якоїсь характеристики потоку оптичного випромінювання світла при його взаємодії з речовиною. Цими характеристиками можуть бути просторовий розподіл інтенсивності частотний спектр поляризація світла. Фізична причина розсіяння світла в чистій речовині полягає в тому що в силу статистичної природи теплового руху молекул середовища в ньому виникають флуктуації густини.
20245. Особливості реологічної неньютонівської рідини 90 KB
  Не ньютонівська течіяпри різних швидкостях течії рідина характеризується різними в‘язкостями. Для того щоб визначити поняття не ньютонівської рідини згадаємо що таке ньютонівська рідина. Бінгалівська рідина межа пластичностітобто в системі існує область де напруження не впливає на зсув характерною ознакою є те що течія починається коли дотичне напруження τ перевищує межу пластичності θ. ; немає зсуву шарів рідина рухається як жорсткий стержень.
20246. Взаємодія повільних нейтронів 57 KB
  Зіткнення нейтрона з ядром може відбуватись двома шляхами: або 1без утворення проміжного ядра коли нейтрон розсіюється безпосередньо силовим полем ядрапружне та непружне розсіяння 2або з утворенням проміжного збудженого ядра з наступним його розпадом по одному з можливи каналів: Авипромінювання γ – квантів процес радіаційного захвату нейтрона ядром Б випромінювання заряджених частинок В ділення ядра В області повільних нейтронів енергія 1еВ основні процеси пружне ядерне розсіяння радіаційний захват нейтрона ядрома бо...
20247. Теорія капілярного віскозиметра 63.5 KB
  Віскозиметр – прилад для визначення в’язкості. Визначення в’язкості капілярним віскозиметром базується на законі Пуазейля і полягає в визначенні часу протікання визначеної кількості рідини або газу через вузькі трубки круглого прерізу при заданому перепаді тисків. Прилади для вимірювання в’язкості можна розділити на дві групи: 1Ті які використовують стаціонарні типи руху рідин капілярний метод метод падаючої кульки; 2 Використовуються нестаціонарні типи руху в основному обертальноколивальний рух коливання твердого тіла зануреного в...
20248. Розрахунок бінарної кореляційної функції числовими методами 61.5 KB
  Розглянемо як розрахувати бінарну кореляційну функцію цими методами: МК В окремих точках матимемо де середня кількість сусідів від відображаючої точки на відстані ri яка може бути обрахованою за наступною формулою: кількість сусідів у j – му положенні відображаючої точки S – кількість частинок в комірці. МД кількість частинок на відстані ri від μї частинки в момень часу n. l – кількість частинок в комірці р – кількість проміжків часу.
20249. Основи методу хвильової спектроскопії 89 KB
  З уширення спектральних ліній береться інформація про міжмолекулярну взаємодію. Є три причини уширення: 1.природня ширина ліній лише в основному стані нема уширення; 2.доплерівське уширення відбувається за рахунок молекул що знаходяться в тепловонму русі; 3.
20250. Термодинамічна теорія флуктуацій. Розподіл Гаусса. Флуктуації об’єму та температури 70.5 KB
  Термодинамічна теорія флуктуацій. Покладемо x0=0 то Врахуємо Підставимо 2 в 1 це фактично розподіл але треба знайти А функція розподілу Гауса або гаусіан для флуктуацій 3 загальна формула для знаходження флуктуацій основних фізичних величин однокомпонентної системи. 43 та порівняємо з : середньоквадратичні флуктуації об’єму ізотермічна стисливість середньоквадратичні флуктуації температури теплоємність при сталому V Висновки термодинамічної теорії флуктуацій: як...