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

книги / Моделирование функционирования изделий и технологических процессов в системах компьютерной математики

..pdf
Скачиваний:
1
Добавлен:
12.11.2023
Размер:
1.6 Mб
Скачать

РАЗДЕЛ 6. РЕШЕНИЕ ЗАДАЧ ПРОГРАММИРОВАНИЯ C ИСПОЛЬЗОВАНИЕМ СИСТЕМЫ MathCAD

6.1. Общие сведения о возможностях применения классических процедур программирования в системе MathCAD

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

лась в ранних версиях MathCAD и в расширенном варианте имеется в новых версиях системы. Средства программирования сосредоточены в палитре (панели инструментов) программных элементов, показанной на рис. 39.

Рис. 39. Панель инструментов «Программирование»

Программный модуль в системе MathCAD – это самостоятельный модуль, выделяемый в тексте документа жирной вертикальной чертой. Модуль может вести себя как безымянная функция без параметров, но возвращающая результат, а может выполнять

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

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

81

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

Несмотря на то, что подчёркивается эквивалентность программ и простых выражений, программы имеют два существенных преимущества:

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

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

Рассмотрим базовые операторы и технологии их использования (типовые средства программирования).

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

Add Line – оператор, создающий и при необходимости расширяющий жирную вертикальную линию, справа от которой в шаблонах задаётся запись программного блока;

– символ локального присваивания (в теле модуля);

if – условный оператор;

for – оператор задания цикла с фиксированным числом повторений;

while – оператор задания цикла, действующего до тех пор, пока выполняется некоторое условие;

otherwise – оператор иного выбора (обычно применяется с if);

break – оператор прерывания;

continue – оператор продолжения;

return – оператор возврата;

on error – оператор обработки ошибок.

Использование указанных операторов программирования подчиняется общей логике разработки программ и классическим подходам, принятым при использовании языков программирования высокого уровня [10].

82

Оператор добавления линии. Оператор Add Line выполняет функции расширения программного блока. Расширение фиксируется удлинением вертикальной черты программных блоков или их древовидным расширением. Благодаря этому, в принципе, можно создавать сколь угодно большие программы.

Оператор внутреннего присваивания. Оператор выполня-

ет функции внутреннего, локального присваивания. Например, выражение х123 присваивает переменной х значение 123. Локальный характер присваивания означает, что такое значение х сохраняет только в теле программы. За пределами тела программы значение переменной х может быть неопределённым либо равным значению, которое задаётся вне программного блока операторами локального := или глобального присваивания.

Условный оператор. Оператор if является оператором для создания условных выражений. Он задаётся в виде:

Выражение if Условие

Если условие выполняется, то возвращается значение выражения. Совместно с этим оператором часто используются операторы прерывания break и иного выбора otherwise.

Оператор цикла for. Оператор for служит для организации циклов с заданным числом повторений. Он записывается в виде:

for Var Nmin . . Nmax

Эта запись означает, что выражение, помещённое в расположенный ниже шаблон, будет выполняться для значений переменной Var, меняющихся от Nmin до Nmax с шагом +1. Переменную счётчика Var можно использовать в исполняемом выражении.

Оператор цикла while. Оператор while служит для организации циклов, действующих до тех пор, пока выполняется некоторое условие. Этот оператор записывается в виде:

while Условие

Выполняемое выражение записывается в расположенный ниже шаблон.

83

Оператор иного выбора. Оператор иного выбора otherwise

используется совместно с оператором if. Это поясняет следующая программная конструкция:

f(x) := 1 if х > 0 – возвращает 1, если х > 0;

– 1 otherwise – возвращает –1 во всех остальных случаях.

Оператор прерывания. Оператор break вызывает прерывание работы программы всякий раз, как он встречается. Он используется совместно с оператором условного выражения if и операторами циклов while и for, обеспечивая переход в конец тела цикла.

Оператор продолжения. Оператор continue используется для продолжения работы после прерывания программы. Он также чаще всего используется совместно с операторами задания циклов while и for, обеспечивая возвращение в точку прерывания и продолжение вычислений.

Оператор возвращения. Особый оператор return прерывает выполнение программы и возвращает значение операнда, стоящего следом за ним. Например, конструкция return 0 if x<0 будет возвращать значение 0 при любом x < 0.

Оператор и функция обработки ошибок. Оператор обработ-

ки ошибок позволяет создавать конструкции обработчиков ошибок. Этот оператор задаётся в виде:

Выражение_1 on error Выражение_2

Если при выполнении Выражения_1 возникает ошибка, то выполняется Выражение_2. Для обработки ошибок полезна также функция error(S), которая, будучи помещённой в программный модуль, при возникновении ошибки выводит всплывающую подсказку с надписью, хранящейся в символьной переменной S.

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

84

раций присваивания и реализацию различных итерационных и рекурсивных процедур.

По-видимому, раздел программирования в MathCAD изначально был задуман для создания несложных программных модулей, необходимых для многократного вычисления небольших расчётных блоков из нескольких операторов. Но даже в имеющемся объёме средства программирования позволяют решать задачи достаточно высокой сложности.

6.2. Пример решения задачи программирования

Для хранения авиационного горючего требуется спроектировать бак, компоновка которого показана на рис. 40. Бак должен представлять собой тело вращения, изготовленное из трёх кусков металлического листа. Готовый бак имеет вид цилиндра с коническими передним и задним днищами. Изделие изготавливается методом сварки трёх листовых заготовок. Объём бака должен составлять 1 м3. Каковы должны быть геометрические параметры бака L1, L2 и D, чтобы выполнялось это требование?

Рис. 40. Схема конструкции бака

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

Программа расчёта оптимальных параметров конструкции методом градиента [14] представлена на рис. 41.

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

85

зована программа-функция mdp, аргументами которой являются начальные значения управляемых параметров L1 и L2, изменяющиеся в процессе расчёта.

Метод градиента

V := 1 Задание ограничения объёма

D ( L1 , L2 ) :=

 

 

V

 

 

 

3.14

L1 +

3.14

L2

 

 

 

 

4

6

 

 

 

 

Выражение диаметра через указанные управляемые параметры с учётом ограничения объёма

F ( L1 , L2 ) := h := 0.001 mdp ( L1 , L2 )

3.14 D ( L1 , L2 ) L1

+

D ( L1 , L2 ) D ( L1 , L2 )

+ L2

2

 

 

 

 

 

 

 

 

4

 

 

g := 0.00001 Задание параметров метода градиента

 

 

 

 

F ( L1 + g , L2 ) F ( L1 g , L2 )

 

 

:=

G1

 

 

 

 

 

 

 

 

 

 

2 g

 

 

 

G2

F ( L1 , L2 + g) F ( L1 , L2 g)

 

 

 

 

 

 

 

 

 

 

2 g

 

 

 

R F ( L1 , L2 )

 

 

 

 

 

GRAD

G1 2 + G2 2

 

 

 

while

GRAD 0.1

 

 

 

 

 

 

 

L1 L1 h G1

 

 

 

 

 

 

 

 

 

 

 

 

 

L2 L2 h G2

 

 

 

 

 

 

 

G1

F ( L1 + g , L2 ) F ( L1 g , L2 )

 

 

 

 

 

 

 

 

 

 

2 g

 

 

 

 

 

 

G2

F ( L1 , L2 + g) F ( L1 , L2 g)

 

 

 

 

 

 

 

 

 

 

2 g

 

 

 

 

 

 

GRAD

G1 2 + G2 2

 

 

 

 

 

 

R F ( L1 , L2 )

 

 

 

 

 

 

 

d D ( L1 , L2 )

 

 

 

 

return

( L1

L2

d

R )

 

 

mdp ( 0.05 , 0.05 ) = ( 0.541 0.514 1.201 5.019 )

Рис. 41. Программа определения оптимальных параметров конструкции методом градиента

86

В процессе реализации вычислительного алгоритма рассчитываются составляющие градиента G1 и G2, вычисляется модуль градиента GRAD. Во внутреннем цикле while последовательно происходит приближение к оптимальным управляемым параметрам, обеспечивающим минимальное значение критерия оптимальности. При выполнении условия окончания цикла (уменьшения градиента до значения, равного или меньшего 0,1) программа возвращает вектор параметров конструкции: длинL1 иL2, диаметраD иплощади боковойповерхности F.

Контрольные вопросы и задания

1.Какая панель инструментов используется для применения операторов программирования в документах MathCAD?

2.Какие виды циклов используются в модуле программирова-

ния MathCAD?

3.Для чего могут применяться операторы return и continue?

4. Опишите технологию применения условного оператора

вблоках программирования.

5.Какие функции выполняют оператор Add Line и оператор

внутреннего присваивания?

6. Составить программу для решения уравнения вида f(x) = 0:

f(x) = 2x2 x4 1ln(x).

7.Составить программу для вычисления площади криволинейной трапеции, которая ограничена функцией f(x) в пределах зна-

чений x [2, 5]:

 

1

+ x

1

.

f(x) = ln

 

 

x

 

1x

 

 

8.Составить программу для определения «пересечения» двух произвольных векторов (одномерных массивов) числовых данных.

9.Разработать программу, которая выполняет решение обыкновенного дифференциального уравнения методом Эйлера:

dx(t) = x(t); dt

x(0) = 1.

87

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

6.72

10.5

11.02

14.99

14.23

18.19

17.43

21.85

20.62

25.5

0

0.5

1.0

1.500

2.0

3.0

3.5

4.0

4.3

5.0

2.2

2.83

3.6

4.66

5.98

9.86

12.66

16.26

18.89

26.8

4

8

12

16

20

24

30

36

42

50

2.67

4.37

4.473

5.88

5.39

6.68

6.12

7.38

7.25

7.98

0.1

0.3

0.5

0.8

1.1

1.2

1.3

1.4

1.5

1.6

-4.2

-5.56

-5.46

-6.93

-4.83

-4.65

-2.82

-1.49

0.67

3.39

0.0

2.0

4.0

7.0

10.0

11.0

12.0

13.0

14.0

15.0

0.0

10.5

18.0

37.1

45.0

57.75

54.0

66.95

67.9

76.5

0.08

0.24

0.40

0.64

0.88

0.96

1.04

1.12

1.20

1.28

0.81

0.65

0.41

0.295

0.155

0.154

0.112

0.11

0.09

0.08

0.63

1.26

2.51

3.77

5.02

6.3

7.54

8.79

10.05

11.31

1.54

0.65

-1.46

-1.72

0.55

2.10

0.56

-1.66

-1.58

0.62

0.40

0.8

1.6

2.4

3.2

4.0

4.8

5.6

6.4

7.2

3.48

0.94

-1.69

-3.71

-4.19

-5.82

-5.65

-7.1

-7.20

-8.05

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

6.72

10.5

11.02

14.99

14.23

18.19

17.43

21.85

20.62

25.5

0

0.5

1.0

1.500

2.0

3.0

3.5

4.0

4.3

5.0

2.2

2.83

3.6

4.66

5.98

9.86

12.66

16.26

18.89

26.8

4

8

12

16

20

24

30

36

42

50

2.67

4.37

4.473

5.88

5.39

6.68

6.12

7.38

7.25

7.98

0.1

0.3

0.5

0.8

1.1

1.2

1.3

1.4

1.5

1.6

-4.2

-5.56

-5.46

-6.93

-4.83

-4.65

-2.82

-1.49

0.67

3.39

0.0

2.0

4.0

7.0

10.0

11.0

12.0

13.0

14.0

15.0

0.0

10.5

18.0

37.1

45.0

57.75

54.0

66.95

67.9

76.5

0.08

0.24

0.40

0.64

0.88

0.96

1.04

1.12

1.20

1.28

0.81

0.65

0.41

0.295

0.155

0.154

0.112

0.11

0.09

0.08

0.63

1.26

2.51

3.77

5.02

6.3

7.54

8.79

10.05

11.31

1.54

0.65

-1.46

-1.72

0.55

2.10

0.56

-1.66

-1.58

0.62

0.40

0.8

1.6

2.4

3.2

4.0

4.8

5.6

6.4

7.2

3.48

0.94

-1.69 -3.71 -4.19

-5.82

-5.65

-7.1

-7.20

-8.05

0.03

0.06

0.12

0.18

0.24

0.30

0.36

0.42

0.48

0.54

2.32

2.7

3.64

4.92

6.64

8.96

12.1

16.33

22.05

29.76

88

ЗАКЛЮЧЕНИЕ

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

Тенденции рынка современного программного обеспечения – непрерывное и быстрое совершенствование как базового инструментария математических CAD-систем, так и эргономики их программного обеспечения (удобства работы пользователя, лёгкости освоения).

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

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

Автор надеется, что содержательная часть настоящего пособия позволяет будущим выпускникам инженерных вузов получить знания по теоретической части и приобрести начальные умения расчёта моделей технических объектов в СКМ, и полученные знания будут использоваться ими при решении прикладных задач в учебной работе и профессиональной деятельности.

89

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

1. Федеральный государственный образовательный стандарт высшего образования по направлению подготовки 15.03.05 «Конст- рукторско-технологическое обеспечение машиностроительных производств» (уровень бакалавриата): утв. приказом М-ва образования и науки РФ №1000 от 11.08.2016 (зарегистрирован в Минюсте РФ 25.08.2016, регистрационный номер 43412). – URL: http://www. consultant.ru/cons/cgi/online.cgi?req=doc&base=LAW&n=204035&fld=13 4&dst=100016,0&rnd=0.470006962312153#023333084885860278 (дата обращения: 10.06.2019).

2.Федеральный государственный образовательный стандарт высшего образования по направлению подготовки 15.03.01 «Машиностроение» (уровень бакалавриата): утв. приказом М-ва образования и науки РФ №957 от 03.09.2015 (зарегистрирован в Минюсте РФ 25.09.2015, регистрационный номер 39005). – URL: http://www.consultant.ru/documents/cons_doc_LAW_186768/fd891c2ace 98e2ec85bab0480f7e96baacf645ef/ (дата обращения: 10.06.2019).

3.Самарский А.А., Михайлов А.П. Математическое моделирование: идея, методы, примеры. – 2-е изд., испр. – М.: ФИЗМАТ-

ЛИТ, 2005. – 320 с.

4.Крюков А.Ю., Потапов Б.Ф. Математическое моделирование процессов в машиностроении: учеб. пособие. – Пермь: Изд-во Перм. гос. техн. ун-та, 2007. – 322 с.

5.Введение в математическое моделирование: учеб. пособие / В.Н. Ашихмин [и др.]; под ред. П.В. Трусова. – М: Логос, 2004. – 440 с.

6.Очков В.Ф. Mathcad 14 для студентов и инженеров (Рус. версия). – СПб.: БХВ-Петербург, 2009. – 498 с.

7.Дьяконов В.П. Энциклопедия MathCAD 2001i и Mathcad 11. – М.: Солон-Пресс, 2004. – 832 с.

8.Поршнев С.В. Компьютерное моделирование физических процессов с использованием пакета MathCAD: учеб. пособие для вузов. – М.: Горячая линия-Телеком, 2002. – 190 с.

90

Соседние файлы в папке книги