40
Министерство образования и науки Российской Федерации Дальневосточный федеральный университет Инженерная школа К.А. Молоков, А.В. Славгородская, М.В. Китаев КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ В МАШИНОСТРОЕНИИ Методические указания к выполнению практических работ для студентов направления 150700.68 «Машиностроение» 180100.68 «Кораблестроение, океанотехника и системотехника объектов морской инфраструктуры» и других технических специальностей вузов всех форм обучения Учебное электронное издание Владивосток Издательский дом Дальневосточного федерального университета 2013

Молоков. Компьютерные технологии в машиностроении 26.08.13

Embed Size (px)

Citation preview

Page 1: Молоков. Компьютерные технологии в машиностроении 26.08.13

Министерство образования и науки Российской Федерации Дальневосточный федеральный университет

Инженерная школа

К.А. Молоков, А.В. Славгородская, М.В. Китаев

КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ

В МАШИНОСТРОЕНИИ

Методические указания

к выполнению практических работ для студентов направления 150700.68

«Машиностроение» 180100.68 «Кораблестроение, океанотехника

и системотехника объектов морской инфраструктуры»

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

всех форм обучения

Учебное электронное издание

Владивосток Издательский дом Дальневосточного федерального университета

2013

Page 2: Молоков. Компьютерные технологии в машиностроении 26.08.13

2

УДК 621:004 ББК 34

М75

Рецензент: Леонтьев Л.Б., д.т.н., профессор кафедры сварочного производства Инженерной школы ДВФУ, руководитель образовательной программы «Машиностроение» (Дальневосточный федеральный университет, Владивосток).

Авторы: Молоков Константин Александрович, к.т.н., доцент кафедры сварочного

производства Инженерной школы (Дальневосточный федеральный университет, Владивосток); Славгородская Александра Владимировна, к.т.н., доцент, доцент кафедры самолето- и

вертолетостроения Инженерной школы (Дальневосточный федеральный университет, Владивосток);

Китаев Максим Владимирович, ст. преподаватель кафедры кораблестроения и океанотехники Инженерной школы (Дальневосточный федеральный университет, Владивосток).

Молоков, К.А.

М75 Компьютерные технологии в машиностроении: метод. указания к выполнению практических работ для студентов направления 150700.68 «Машиностроение» 180100.68 «Кораблестроение, океанотехника и системотехника объектов морской инфраструктуры» [Электронный ресурс] / К.А. Молоков, А.В. Славгородская, М.В. Китаев ; Дальневосточный федеральный университет, Инженерная школа. – Электрон. дан. – Владивосток : Издательский дом Дальневост. федерал. ун-та, 2013. – 40 с. – Acrobat Reader, Foxit Reader либо любой другой их аналог.

– Режим доступа: http://www.dvfu.ru/web/is/metodiceskie-rekomendacii Излагаются основные подходы работы с пакетами прикладных программ, цели, задачи и

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

Для студентов ДВФУ, обучающихся по направлениям 180100.68 «Кораблестроение, океанотехника и системотехника объектов морской инфраструктуры» и 150700.68 «Машиностроение», и других смежных направлений, могут использоваться студентами дистанционной формы обучения и экстерната при выполнении лабораторных и практических работ по следующим дисциплинам «Численные методы», «Компьютерные технологии в машиностроении», «Информационные технологии в жизненном цикле морской техники», «Информационные технологии».

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

УДК 621:004 ББК 34

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

и защиты окружающей среды Инженерной школы ДВФУ

Методические указания подготовлены

редакционно-издательским отделом

Инженерной школы ДВФУ

Технический редактор И.А. Гончарук

Компьютерная верстка Н.О. Ковтуна

Формат PDF, объем 1,6 МБ [усл. печ. л. 4,7]

Выпускаются в авторской редакции

© Молоков К.А., Славгородская А.В., Китаев М.В., 2013

© Дальневосточный федеральный университет, 2013

© Издательский дом Дальневосточного

федерального университета, оформление, 2013

Издательский дом Дальневосточного федерального университета

690990, Владивосток, ул. Пушкинская, 10

тел./факс (423) 222-12-40, 245-77-70

E-mail: [email protected], [email protected]

Page 3: Молоков. Компьютерные технологии в машиностроении 26.08.13

3

СОДЕРЖАНИЕ

СОДЕРЖАНИЕ .............................................................................................................................................. 3

ВВЕДЕНИЕ .................................................................................................................................................... 4

ПРАКТИЧЕСКАЯ РАБОТА № 1. БАЗОВЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ОПЕРАЦИИ И ВСТРОЕННЫЕ

ЭЛЕМЕНТАРНЫЕ ФУНКЦИИ (4 ЧАСА) ....................................................................................................................... 5

1. ЦЕЛЬ РАБОТЫ .................................................................................................................................................. 5

2. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ, ПОЯСНЕНИЯ И ПРИМЕРЫ ............................................................................... 5

3. ПОРЯДОК ВЫПОЛНЕНИЯ ................................................................................................................................. 10

4. ФОРМА ОТЧЕТНОСТИ ...................................................................................................................................... 10

СПИСОК ЛИТЕРАТУРЫ ................................................................................................................................10

ПРАКТИЧЕСКАЯ РАБОТА № 2. ЧТЕНИЕ И ЗАПИСЬ ИНФОРМАЦИИ В ФАЙЛЫ (4 ЧАСА) ............................11

1. ЦЕЛЬ РАБОТЫ ................................................................................................................................................ 11

2. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ, ПОЯСНЕНИЯ И ПРИМЕРЫ ............................................................................. 11

3. ФУНКЦИИ SAVE И LOAD ................................................................................................................................... 11

4. ТЕКСТОВЫЕ ФАЙЛЫ ........................................................................................................................................ 12

5. ПОРЯДОК ВЫПОЛНЕНИЯ ................................................................................................................................. 18

6. ФОРМА ОТЧЕТНОСТИ ...................................................................................................................................... 18

СПИСОК ЛИТЕРАТУРЫ ................................................................................................................................19

ПРАКТИЧЕСКАЯ РАБОТА № 3. РЕАЛИЗАЦИЯ МЕТОДА КОНЕЧНЫХ ЭЛЕМЕНТОВ ДЛЯ РЕШЕНИЯ

ИНЖЕНЕРНЫХ ЗАДАЧ (5 ЧАСОВ) .............................................................................................................................20

1. ЦЕЛЬ РАБОТЫ ................................................................................................................................................ 20

2. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ................................................................................................................. 20

2.1. Основы теории построения математического аппарата МКЭ для инженерных задач ...... 20

2.2. Пример и основы реализации МКЭ в MATLAB ............................................................................... 25

3. ПОРЯДОК ВЫПОЛНЕНИЯ ................................................................................................................................. 27

4. ФОРМА ОТЧЕТНОСТИ ...................................................................................................................................... 28

5. КОНТРОЛЬНЫЕ ВОПРОСЫ ................................................................................................................................ 28

СПИСОК ЛИТЕРАТУРЫ ................................................................................................................................28

ПРАКТИЧЕСКАЯ РАБОТА № 4. СОЗДАНИЕ ПРИЛОЖЕНИЯ В MATLAB ДЛЯ ЗАДАЧИ

РЕШАЕМОЙ МКЭ (5 ЧАСОВ) .....................................................................................................................................29

1. ЦЕЛЬ РАБОТЫ ................................................................................................................................................ 29

2. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ................................................................................................................. 29

2.1. Основные особенности MATLAB .................................................................................................... 29

2.2. Разработка алгоритма работы приложения ............................................................................. 29

2.3. Разработка интерфейса, создание приложения в среде GUIDE ................................................ 35

2.4. Пример работы приложения ......................................................................................................... 37

3. ПОРЯДОК ВЫПОЛНЕНИЯ ................................................................................................................................. 40

4. ФОРМА ОТЧЕТНОСТИ ...................................................................................................................................... 40

СПИСОК ЛИТЕРАТУРЫ ................................................................................................................................40

Page 4: Молоков. Компьютерные технологии в машиностроении 26.08.13

4

Введение

В связи с бурным развитием информационных технологий и систем

автоматизированного проектирования САПР, вопросам автоматизации инженерных расчетов

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

судостроительной отрасли.

MATLAB (сокращение от англ. «Matrix Laboratory», в русском языке произносится как

«Матлаб») является наиболее успешной системой, ориентированной на автоматизацию

инженерных расчетов и ориентированная на работу с массивами данных.

С одной стороны MATLAB – это пакет прикладных программ для решения

разнообразных инженерных и научных вычислительных задач, с другой – одноимённый язык

программирования, используемый в этом пакете.

MATLAB допускает на разработку собственных, независимых инженерных

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

М-файлов, поддерживает работу в программном и интерактивном режиме с векторами и

матрицами, позволяет решать системы уравнений, выполнять численное интегрирование,

дифференцирование, имеет широкие возможности по работе с графикой и др.

Методические указания ориентированы на студентов имеющих базовые знания по

информатике и основам программирования, математическому анализу, векторной алгебре и

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

Компьютерные технологии в машиностроении и Численные методы. Каждая лабораторная

работа содержит краткое описание теории, методов вычислений, примеры, порядок

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

самостоятельной работы и более глубокого изучения программы MATLAB.

Первые две работы являются вводными и знакомят студентов с базовыми встроенными

функциями, принципами организации расчетов, операторами и математическими операциями,

используемыми в MATLAB при решении различных задач, возникающих в инженерной

деятельности. Последующие лабораторные работы ориентированы на знакомство с методикой

и принципами создания независимых приложений инструментами MATLAB, программную

реализацию независимых приложений и практическое использование метода конечных

элементов (МКЭ).

Page 5: Молоков. Компьютерные технологии в машиностроении 26.08.13

5

Практическая работа № 1.

Базовые вычислительные операции

и встроенные элементарные функции (4 часа)

1. Цель работы

Изучение базовых вычислительных операций и работа со встроенными функциями

языка MATLAB.

2. Краткие теоретические сведения, пояснения и примеры

В настоящей работе рассматривается задача вычисления значений функции

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

выражения. Данная задача широко распространена в инженерной практике и требует особого

рассмотрения.

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

образом:

Задача А. С постоянным шагом изменения аргументов.

Задача В. С произвольным набором значений аргумента.

В среде программирования MATLAB указанные задачи можно решить двумя

способами:

1) алгоритм решения реализуется посредством организации цикла;

2) используются поэлементные операции с векторами.

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

заданных значениях аргумента.

При выполнении простых вычислений, не требующих многократного повторения,

удобно использовать интерактивный режим MATLAB, который является аналогом режима

калькулятора.

Если пользователю необходимо многократно повторять вычисления или

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

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

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

рабочую папку. В противном случае при выполнении программы М-файл по умолчанию

запишется в текущую рабочую папку и ему присвоится имя Untitled.m (Безымянный).

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

повторения однотипных вычислительных процедур, целесообразно создавать и использовать

так называемые файл-программы (иногда их называют файл-сценарии или скрипт-файлы,

что больше соответствует терминологии языка программирования MATLAB),

представляющие собой последовательность команд MATLAB. Как правило, файл-программы

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

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

Основные отличия файл-сценариев от файл-функций представлены в табл. 1.

Page 6: Молоков. Компьютерные технологии в машиностроении 26.08.13

6

Таблица 1

Типы M-файлов в MATLAB

Файл-сценарии Файл-функции

Не используют входных и выходных

аргументов Используют входные и выходные аргументы

Оперируют с данными из рабочей области По умолчанию, внутренние переменные функции

являются локальными

Предназначены для автоматизации

последовательности простых вычислений,

которые нужно выполнять много раз

Предназначены для расширения возможностей

MATLAB (позволяют создавать библиотеки

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

программ и др.)

Далее рассмотрим несколько примеров, иллюстрирующих основные возможности

MATLAB применительно к вычислению значений функции.

Пример 1. Вычислить и вывести на экран значения функции:

3 22

222 )(sin1

xa

xby

;

при a = 1.35; b = 0.98; x1 = 12.8; x2 = 23.4; x3 = 27.2; x4 = 17.8; x5 = 16.3; x6 = 14.9.

В рассматриваемом примере для решения задачи, вязанной с вычислением значений

функции, используем способ, основанный на применении оператора цикла for.

В общем виде синтаксис оператора цикла for имеет следующий вид:

for <счетчик> = <начальное значение>:<шаг>:<конечное значение>

<операторы цикла>

end

По умолчанию шаг оператора цикла for равен 1. Шаг может отличаться от 1, в том

числе быть и отрицательным числом, но обязательно должен быть целым. При

положительных значениях шага цикла, выполнение прекращается, когда значение индекса

превышает конечное значение end; при отрицательных приращениях выполнение

прекращается, когда индекс становится меньше конечного значения.

При работе с векторами и массивами необходимо помнить, что нумерация элементов

векторов и массивов в MATLAB начинается с 1, т.е. первому элементу вектора x

соответствует индекс x(1), последнему x(end).

Файл-программа с описанием последовательности действий для вычисления значений

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

Рис. 1. Решение задачи с использованием оператора цикла

Page 7: Молоков. Компьютерные технологии в машиностроении 26.08.13

7

Результат решения задачи, листинг которой представлен на рис. 1, будет представлен в

командном окне в следующем виде:

y =

0.3609 0.2327 0.1473 0.1800 0.1771 0.1658

При этом в рабочей среде MATLAB создается вектор y состоящий их шести элементов.

Пример 2. Решим задачу из примера 1 без использования оператора цикла,

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

данный способ, представлена на рис. 2.

Рис. 2. Решение задачи без использования оператора цикла

Результат решения задачи будет представлен в командном окне в следующем виде:

y =

0.3609 0.2327 0.1473 0.1800 0.1771 0.1658

Первый и второй способ решения рассматриваемой задачи дают одинаковые

результаты. При разработке больших собственных приложений следует избегать (если это

возможно) использования оператора цикла, и использовать поэлементные операции с

векторами, что положительно сказывается на скорости вычислений и длине программного

кода. Время выполнения программного кода можно оценить, используя команды tic и toc.

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

использованием файл-функций.

Прежде всего, необходимо создать пользовательскую файл-функцию test1.m,

возвращающую значения y:

function [y] = test1(a,b,x)

y =(1+sin(b^2+x.^2).^2)./(a^2+x.^2).^(1/3)

Следующим этапом является создание скрипт-файла, в котором определяются

значения параметров, необходимых для вычисления значений функции test1.m, и записывается

строка вызова указанной функции. Описанные операции представлены на рис. 3.

Рис. 3. Вызов функции test1.m

Page 8: Молоков. Компьютерные технологии в машиностроении 26.08.13

8

Как и в примерах 1, 2 результатом работы файл-программы, листинг которой

представлен на рис. 3, является переменная y:

y =

0.3609 0.2327 0.1473 0.1800 0.1771 0.1658

Для визуализации данных в MATLAB широко используется функция plot(x,y), которая

работает с векторами числовых данных, а значения x и y в данном случае являются векторами

одинаковой длины.

Функция plot(x,y) предназначена для построения двумерных графиков, количество

которых, стиль и свойства определяет пользователь.

Напомним общий синтаксис функции plot:

plot(x,y, x1,y1, …, xn,yn) – построение n штук двумерных графиков.

plot(x,y, LineSpec,…) – строит график и заданным цветом, типом линии и символом маркера.

plot(... , 'PropertyName', PropertyValue,...) устанавливает свойство всех построенных

линий и маркеров указанное строкой 'PropertyName', в соответствие с его значением,

заданным в PropertyValue (см. пример ниже).

Помимо цвета и стиля имеется также возможность задавать и другие графические

характеристики линий (более подробное описание этих свойств дано в описании функции line):

LineWidth – задание ширины линии в точках (points), где 1 точка равна 1/72 дюйма.

MarkerEdgeColor – задание цвета маркера или цвета граней маркера для маркеров

замкнутой формы (кружков, квадратов, ромбов и др.).

MarkerFaceColor – задание цвета поверхности заполненных маркеров.

MarkerSize – задание размера маркера в единицах точки.

На рис. 4 приведен скрипт-файл, иллюстрирующий использование функции plot, для

построения графика функции, заимствованной из примера 1.

Рис. 4. Построение графика функции

Результат работы указанного листинга представлен на рис. 5.

Рис. 5. Графическая визуализация результатов вычислений

Page 9: Молоков. Компьютерные технологии в машиностроении 26.08.13

9

Для более полного ознакомления с возможностями функции plot, средствами и

возможностями графической визуализации результатов вычислений в MATLAB используйте

справку, для этого напишите plot, выделите это слово и нажмите клавишу F1.

ЗАДАНИЕ

Используя один из методов, рассмотренных в основной теории, составить программу

вычислений значений функции yi для заданных значений аргумента xi и параметрах a и b.

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

yi от аргумента xi (yi = f(xi)).

Варианты заданий приведены в табл. 2.

Таблица 2

Варианты заданий для самостоятельного решения

Page 10: Молоков. Компьютерные технологии в машиностроении 26.08.13

10

3. Порядок выполнения

Порядок выполнения работы соблюдать согласно последовательности рассмотрения

примеров и теоретических аспектов, изложенных в разделе основной теории.

4. Форма отчетности

Отчет выполняется согласно требованиям к курсовым и дипломным работам [3]. Он

должен содержать следующие составляющие, части и описание:

1. Титульный лист.

2. Цель, задачи практической работы и ключевую часть основной теории.

3. Справочные данные использованных встроенных функций.

4. Листинг и описание работы программы в MATLAB.

5. Результаты вычислений и график функции своего варианта.

6. Выводы (заключение).

СПИСОК ЛИТЕРАТУРЫ

1. Ануфриев И.Е., Смирнов А.Б., Смирнова Е.Н. MathLab 7. СПб.: БХВ-Петербург, 2005.

1104 с.

2. Наместников С.М. Основы программирования в MatLab: Сборник лекций. УлГТУ:

Ульяновск, 2011. 55 с.

Page 11: Молоков. Компьютерные технологии в машиностроении 26.08.13

11

Практическая работа № 2.

Чтение и запись информации в файлы (4 часа)

1. Цель работы

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

2. Краткие теоретические сведения, пояснения и примеры

При разработке собственных инженерных приложений часто требуется сохранить

результаты расчетов в файлы для их дальнейшего анализа, обработки, хранения и т.п. В связи

с этим в MATLAB реализованы различные функции по работе с файлами, содержащие данные

в самых разных форматах.

Рассмотрим наиболее простые и полезные функции для сохранения и загрузки

результатов работы собственных инженерных приложений из файлов различных форматов.

3. Функции save и load

Для сохранения и последующей загрузки каких-либо данных в MATLAB

предусмотрены две функции

save <имя файла> <имена переменных> % сохранение данных

load <имя файла> <имена переменных> % загрузка данных

Функция save предназначена для сохранения данных их рабочей среды MATLAB в

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

поддиректория work). По умолчанию файл с данными будет иметь расширение .mat.

Соответственно функция load позволяет загрузить из указанного mat-файла ранее

сохраненные данные? Причем в один файл могут быть сохранены различные типы данных,

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

Рассмотрим простой пример использования данных функций, для этого создадим

пустой М-файл и введем в него следующий скрипт:

%% Использование функций save и load

% Очистка командного окна и рабочей среды MATLAB

clc;

clear all;

% Инициализация переменных

x = [1:1.25:10];

y = 12555;

s = 'Text';

% Сохранение переменных в файл Var.mat

save Var x y s;

%% Загрузка переменных в рабочую среду MATLAB

% Очистка командного окна и рабочей среды MATLAB

clc;

clear all;

% Загрузка переменных x, y, z из файла Var.mat

load Var x y s;

% Вывод переменных x, y, z в CommandWindow

disp(x);

Page 12: Молоков. Компьютерные технологии в машиностроении 26.08.13

12

disp(y);

disp(s);

Следует обратить внимание на то, что функция load позволяет загружать из mat-файла

не все, а только указанные пользователем переменные, например:

load Var.mat x; % загружает только значение переменной x

load Var.mat y; % загружает только значение переменной y

load Var.mat x s; % загружает значения переменных x и s

Для управления форматами файлов следует в команде save в дополнение к имени файла

и списку переменных использовать следующие флаги, приведенные в табл. 1.

Таблица 1

Форматы файлов

Флаг Пояснение

-mat Двоичный MAT-файл (по умолчанию)

-ascii ASCII-формат (8 цифр)

-ascii -double ASCII-формат (16 цифр)

-ascii -double -tabs Формат с разделителями и метками табуляции

-v4 Формат версии MATLAB 4

-append Добавить данные к сущесвующему MAT-файлу

При использовании флага v4 можно сохранить только те данные, которые совместимы

с данными, используемыми в версии MATLAB 4; это означает, что сохранить такие типы

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

Когда содержимое рабочей области сохраняется в ASCII-формате, то рекомендуется

единовременно сохранять только одну переменную. Если сохраняется более одной

переменной, то система MATLAB создаст файл ASCII-файл, который нельзя будет в

дальнейшем загрузить в MATLAB, используя команду load.

Команды load и save допускают использование группового символа (*) в кaчестве

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

Например, команда save Test1 x* сохраняет все переменные, имена которых

начинаются с символа x в файле с именем Test1.mat.

Точно также команда load Test1 var*40 загружает все переменные, имена которых

начинаются с символов 'var' и заканчиваются символами '40', независимо от того, какие

символы размещены между ними.

4. Текстовые файлы

Ввод текстовой информации

Работа с текстовыми файлами состоит и трех этапов: открытие файла, считывание или

запись данных, закрытие файла.

Для открытия файла используется команда fopen:

[fid, mes] = fopen(filename, permission) — открывает файл с именем filename и

параметром, определенным в permission, и возвращает идентификатор fid, присвоенный файлу

(порядковый номер файла), в mes – содержится информация об открытии файла или

сообщение об ошибке.

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

ввода-вывода. Имя файла filename может содержать путь к файлу.

Параметр permission может принимать одно из следующих значений:

Page 13: Молоков. Компьютерные технологии в машиностроении 26.08.13

13

'r' — открытие файла для чтения (по умолчанию);

' r+' — открытие файла для чтения и записи;

'w' — удаление содержимого существующего файла или создание нового и открытие

его для записи;

'а' — создание и открытие нового файла или открытие существующего для записи с

добавлением в конец файла.

Команда fclose закрывает файл. Она имеет следующие варианты.

status = fclose(fid) — закрывает файл, если он открыт. Возвращает статус файла status,

равный 0, если закрытие завершилось успешно, и -1 в противном случае. Аргумент fid — это

идентификатор, связанный с открытым файлом.

Далее рассмотрим особенности записи информации в текстовые файлы.

Добавление строки в текстовый файл осуществляется функцией fprintf с двумя

входными аргументами – идентификатором файла и строкой с текстом или любыми другими

символами и знаками, вводимыми с клавиатуры.

Рассмотрим несколько примеров иллюстрирующих применение команд fopen, fclose и fprintf:

%%Пример 1 – Применение команд fopen, fclose и fprintf

% Очистка командного окна и рабочей среды MATLAB

clc; clear all;

% Создание файла Example1.txt и открытие его для записи

[fid,mes]= fopen('Example1.txt', 'w')

% Запись строки в файл Example1.txt

fprintf(fid, 'Строка добавлена командой fprintf');

% Закрытие файла Example1.txt

fclose(fid);

Последующая команда fprintf выводит заданную строку сразу за предыдущей без на

следующую строку текстового файла.

Для ввода текста в текстовый файл с новой строки следует добавить символ перехода

на новую строку \n, при этом возможны два варианта:

в начале строковой переменной

fprintf(fid, '\n.');

в конце строковой переменной

fprintf(fid, 'Перевод каретки на новую строку. \n ');

%%Пример 2 – Применение команд fopen, fclose и fprintf

clc; clear all;

% Создание файла Example1.txt и открытие его для записи

[fid,mes]= fopen('Example1.txt', 'w')

% Запись строки в файл Example1.txt

fprintf(fid, 'Строка добавлена командой fprintf. ');

% Запись строковой переменной и перевод каретки на новую строку

fprintf(fid, 'Второе предложение. \n ');

% Запись информации с новой строки

fprintf(fid, 'Текст добавлен с новой строки.');

% Закрытие файла Example1.txt

fclose(fid);

% Просмотр содержимого текстового файла в CommandWindow

type Example1.txt

Page 14: Молоков. Компьютерные технологии в машиностроении 26.08.13

14

%%Пример 3 – Персональные данные студента.

% Очистка командного окна и рабочей среды MATLAB

clc; clear all;

% Создание файла Data.txt и открытие его для записи информации

[fid,mes]= fopen('Data.txt', 'w');

fprintf(fid, 'Персональные данные студента \n');

fprintf(fid, '----------------------------\n');

fprintf(fid, 'Фамилия: ');

fprintf(fid, 'Иванов \n');

fprintf(fid, 'Имя: ');

fprintf(fid, 'Имя: Иван \n');

fprintf(fid, 'Отчество: ');

fprintf(fid, 'Иванович \n');

fprintf(fid, 'Год рождения: ');

fprintf(fid, '1990 \n');

fprintf(fid, 'Группа: ');

fprintf(fid, 'С3539 \n');

% Закрытие файла Example1.txt

fclose(fid);

% Просмотр содержимого текстового файла в CommandWindow

type Data.txt

Результатом работы описанной программы будет следующая информация, выведенная

в командное окно:

Персональные данные студента

----------------------------------------

Фамилия: Иванов

Имя: Имя: Иван

Отчество: Иванович

Год рождения: 1990

Группа: С3539

Форматный вывод числовых данных

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

Запись текстовых строк достаточно проста, а вот для записи в текстовый файл чисел

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

используется функция fprintf.

Занесение чисел или значений текстовых переменных требует использования

форматного вывода. Схема использования команды fprintf при работе с числовыми

переменными такова:

fprintf(идентефикатор файла, 'формат', список переменных)

Первый аргумент команды fprintf является идентификатором файла, второй - строка со

специальными символами, определяющими формат вывода чисел в текстовый файл, третий –

список выводимых переменных.

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

CommandWindow, а не в текстовый файл.

Рассмотрим применение форматного вывода на следующем примере.

Необходимо записать значения переменных x = 0:/2:2 и функции y = sin(x) в

Page 15: Молоков. Компьютерные технологии в машиностроении 26.08.13

15

текстовый файл, в формате с плавающей точкой, оставляя четыре цифры после запятой для

значений x и две цифры для y. Для этого составим следующую программу:

% Очистка CommandWindow и Workspace

clc; clear all;

% Создание файла Example2.txt

[fid,mes] = fopen('Example2.txt', 'w');

% Вычисление значений агрумента x и функции y

x = 0:pi/2:2*pi;

y = sin(x);

% Конструирование матрицы значений x,y

M=[x;y];

% Вывод информации в файл 'Example2.txt'

fprintf(fid, 'Таблица значений функции \n y = sin(x)\n');

fprintf(fid, '----------------------\n');

fprintf(fid, '| x | y |\n');

fprintf(fid, '----------------------\n');

% Форматный вывод значений матрицы

fprintf(fid, '|%7.3f |%10.4f |\n', M);

fprintf(fid, '----------------------\n');

% Закрытие файла Example2.txt

fclose(fid);

% Вывод содержимого файла Example2.txt в CommandWindow

type Example2.txt

В результате работы описанной программы создается файл Example2.txt, содержимое

которого приведено ниже:

Таблица значений функции

y = sin(x)

----------------------

| x | y |

----------------------

| 0.000 | 0.0000 |

| 1.571 | 1.0000 |

| 3.142 | 0.0000 |

| 4.712 | -1.0000 |

| 6.283 | -0.0000 |

----------------------

Обратите внимание на второй аргумент команды fprintf предназначенной для

форматного вывода значений матрицы M. Последовательность %7.3f %10.4f задает формат

вывода переменных x и y, составляющих основу матрицы M. Знак процента указывает на

начало формата, цифра 7 означает, что под значение переменной x всего отводится семь

позиций, цифра три, после разделителя-точки – обеспечивает точность отображения

результата – четыре цифры после запятой. Символ f указывает на то, что результат выводится

в формате с плавающей точкой. Аналогичным образом работает формат %10.4f для

переменной y. Таким образом, количество форматов вывода, должно соответствовать

Page 16: Молоков. Компьютерные технологии в машиностроении 26.08.13

16

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

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

которая запишется в текстовый файл между соответствующими значениями выводимых

переменных, например:

clc; clear all;

a = 12.5;

b = 135.22;

fprintf(' Вывод значений переменных \n');

fprintf('| a = %4.2f | b = %6.3f | \n', a, b)

В результате работы программы в командное окно будет выведен следующий

результат:

Вывод значений переменных

| a = 12.50 | b = 135.220 |

Более подробно с видами форматов, при выводе числовой информации в текстовый

файл можно ознакомиться, набрав в командной строке fprintf и нажав клавишу F1.

Считывание информации из текстовых файлов

Для считывания информации из текстовых файлов и записи их в переменные

подходящих типов предназначена функция fscanf, осуществляющая обратное действие по

отношению к fprintf.

Вызов функции fscanf производится с тремя входными аргументами –

идентификатором файла, строкой с форматом и числом, считываемых в данном формате

объектов, и одним выходным аргументом, предназначенном для записи результата

считывания:

A = fscanf(идентификатор, формат, число считываемых элементов)

Функция fscanf допускает считывать матрицы числовых значений размерностью [n m],

где n – количество строк, m – количество столбцов.

Как правило, в состав любого текстового файла входят такие элементы как текст и

числа. Текст всегда считывается в строковые переменные, а числа можно занести как в

строковые, так и в числовые переменные.

Для считывания строки предназначен формат %s, для целых чисел – %d, для

вещественных – %g.

Рассмотрим применение функции fscanf на следующем примере.

Необходимо выполнить следующие действия:

1) Вычислить значение функции: y = ex, где x = [0:0.1:1].

2) Записать результаты вычислений в текстовый файл exp.txt.

3) Считать информацию из текстового файла exp.txt в три переменные рабочей среды

MATLAB:

Н – заголовок таблицы;

Vr – обозначение аргумента и функции в текстовом файле;

А – матрица значений аргумента и функции.

clc; clear all;

% Создание таблицы значений функции

x = 0:.1:1;

Page 17: Молоков. Компьютерные технологии в машиностроении 26.08.13

17

y = [x; exp(x)];

% Создание и открытие файла для записи

fid = fopen('exp.txt', 'w');

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

fprintf(fid, 'Таблица значений функции \n');

fprintf(fid, ' x y \n');

fprintf(fid, '%6.2f %12.8f\n', y);

% Закрытие файла

fclose(fid);

% Просмотр содержимого текстового файла в CommandWindow

type exp.txt

% Открытие текстового файла

fid = fopen('exp.txt');

% Чтение и запись информации в переменные рабочей среды

H = [fscanf(fid,'%s',1),' ',fscanf(fid,'%s',1),' ',fscanf(fid,'%s',1)]

Vr = [fscanf(fid,'%s',1), ', ', fscanf(fid,'%s',1)]

A = fscanf(fid, '%g %g', [2 inf]);

% Закрытие файла

fclose(fid);

% Транспонирование матрицы – все строки записать столбцами

A = A'

Результат работы программы, будет представлен в командном окне в следующем виде:

Таблица значений функции

x y

0.00 1.00000000

0.10 1.10517092

0.20 1.22140276

0.30 1.34985881

0.40 1.49182470

0.50 1.64872127

0.60 1.82211880

0.70 2.01375271

0.80 2.22554093

0.90 2.45960311

1.00 2.71828183

H = Таблица значений функции

Vr =x, y

A =

0 1.0000

0.1000 1.1052

0.2000 1.2214

0.3000 1.3499

0.4000 1.4918

0.5000 1.6487

0.6000 1.8221

0.7000 2.0138

Page 18: Молоков. Компьютерные технологии в машиностроении 26.08.13

18

0.8000 2.2255

0.9000 2.4596

1.0000 2.7183

ЗАДАНИЕ 1

Создайте текстовый файл, содержащий следующую информацию о студенте:

Персональные данные студента

Фамилия: Иванов

Имя: Иван

Отчество: Иванович

Год рождения: 1990

Группа: С3539

Специальность: Кораблестроение и океанотехника

ЗАДАНИЕ 2

Используя ранее полученные результаты при выполнении Практического задания 1.3,

запишите значения переменных x и функции y в текстовый файл, в формате с плавающей

точкой, оставляя две цифры после запятой для значений аргумента x и три цифры для

значения функции y.

ЗАДАНИЕ 3

Вычислите значения функции, соответствующей Вашему варианту в таблице,

запишите значения аргумента и функции в текстовый файл, затем произведите чтение

информации из текстового файла и создайте матрицу М, содержащую значения функции и

аргумента.

№ варианта Функция Аргумент

1 y = 2(1.2 – 3.2 x2) + 3 sin(x) x = [0:0.5:5];

2 y = 5 ex + 2 cos(x) x = [0:0.25:4];

3 y = 3 sin(x) + 2 ex x = [0:0.1:1];

4 y = 4 x1/3

- x2/3

x = [1:1.5:10];

5 y = 2.5 x + ln(x) x = [10:2.5:20];

6 y = sin(2.5 + 4x)3.5

x = [0:0.25:5];

7 y = 1 + x ex x = [0:0.5:6];

8 y = ln(1 + x2) + 1 x = [3:1:12];

9 y = ex cos

2x x = [0:0.1:0.5];

10 y = ln2x/x x = [2:1:6];

5. Порядок выполнения

Порядок выполнения работы соблюдать согласно последовательности рассмотрения

примеров и теоретических аспектов, изложенных в разделе основной теории.

6. Форма отчетности

Отчет выполняется согласно требованиям к курсовым и дипломным работам [3]. Он

должен содержать следующие составляющие, части и описание:

Page 19: Молоков. Компьютерные технологии в машиностроении 26.08.13

19

1. Титульный лист.

2. Цель, задачи практической работы и ключевую часть основной теории.

3. Листинги программ и описание используемых функций.

4. Текстовые файлы с результатами значений функции своего варианта (результаты

расчетов можно скопировать в отчет, но обязательно присутствие отдельного текстового

файла с результатами расчетов).

5. Выводы (заключение).

СПИСОК ЛИТЕРАТУРЫ

1. Глушаков С.В., Жакин И.А., Хачиров Т.С. Математическое моделирование. Mathcad 2000.

Matlab 5.3. М.: АСТ, 2001. 432 с.

2. Половко А.М., Бутусов П.Н. MATLAB для студента. СПб.: БЧВ–Петербург, 2005. 320 с.

Page 20: Молоков. Компьютерные технологии в машиностроении 26.08.13

20

Практическая работа № 3.

Реализация метода конечных элементов

для решения инженерных задач (5 часов)

1. Цель работы

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

(СЛАУ), приобрести опыт численной реализации алгоритма метода конечных элементов

(МКЭ) на ЭВМ.

2. Краткие теоретические сведения

2.1. Основы теории построения математического аппарата МКЭ

для инженерных задач

Основным расчетным элементом при оценке напряженно-деформированного

состояния рам судового корпуса является стержневой элемент. Практически в каждом

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

жесткости для таких конечных элементов.

С развитием современных компьютерных средств инженерного анализа остается не

решенным класс задач, преимущественно обратных, по оптимизации геометрии и параметров

внешнего воздействия. Метод конечных элементов является в коне универсальным

численным методом для решения инженерных задач в разных областях. Инженеру полезно

знать и уметь применять его для решения стоящих перед ним задач. Поэтому иногда важно

вернуться к истокам метода конечных элементов как основе современных средств расчета

судостроительных конструкций. Считается, что развитие МКЭ началось с развитием

компьютерной техники приблизительно с 1940-х годов, однако известно, что Эйлер не имел в

распоряжении вычислительных средств, но хорошо владел численными методами

интегрирования, позволившими ему оставить потомкам уравнение устойчивости сжатой

пружины без выводов в аналитической форме.

Рассмотрим преимущества способа матричной формы расчета стержневых элементов,

на основе закона Гука. На примере определения упругой реакции растяжения или сжатия

отдельного элемента конструкции продольного усилия N (рис. 1). Усилия и перемещения по

концам стержней 1 и 2 имеют положительные направления, указанные на рис. 1, и

обозначаются соответственно N1, N2 и u1, u2 .

Рис. 1. Схема элемента стержня, нагруженного вдоль оси

Стержень имеет длину и поперечное сечение F. Его удлинение l=u2–u1. Согласно

закону Гука ( E ), из соотношений

Δε,

A

Nσ можно записать связь между

Page 21: Молоков. Компьютерные технологии в машиностроении 26.08.13

21

усилием и удлинением рассматриваемого элемента стержня

EAΔN2 , где Е – модуль

упругости материала (модуль Юнга). Из уравнения равновесия 0NN 21 следует, что

21 NN .

Таким образом, соотношение между усилиями и перемещениями для этого стержня

можно выразить в виде

). u - u (k = N

), u - u (k - = N

122

121 (2.1)

где

EAk означает жесткость элемента, т.е. усилие, возникающее в сечении

элемента стержня при его удлинении равном единице. Эти уравнения могут быть записаны в

матричной форме:

2u

1u

k

k

k

k

2N

1N, (2.2)

или N = K u, (2.3)

где матрицы N, K и u обозначают соответствующие им по порядку следования

части уравнения (2.2), причем матрица K может быть названа матрицей жесткости

элемента.

Когда перемещения u1 и u2 известны, уравнение (2.2) может быть прямо использовано

для нахождения соответствующих усилий N1 и N2. Однако когда определены усилия N1 и N2

(при этом N1 = – N2 по условиям равновесия), не трудно убедиться, что уравнение может быть

решено не относительно перемещений u1 и u2, а только относительно их разности. Физическое

объяснение этого состоит в том, что усилия, приложенные к концам стержня, не фиксируют

его абсолютные перемещения, а определяют лишь удлинение стержня, т.е. перемещение

одного конца относительно другого. Таким образом, чтобы решить уравнение (2.2)

относительно перемещений, необходимо указать как минимум одно граничное условие на

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

Если, например, принять условие u1 = 0 вместе с граничным условием на усилие

N1 = – P, то из уравнения (2.2) следует

u2 = k

P, N1 = – P. (2.4)

Далее рассмотрим более сложный случай: соединение двух стержней (рис. 2.2). Для

решения этой задачи сначала построим схему (рис. 3), в которой стержни 1 и 2 представлены

как элементы, отделенные от узлов.

Внутренние усилия (действующие на концы элемента со стороны узлов) здесь

обозначены N11 , N2

1 и т.д. Верхний индекс указывает на номер элемента, а нижний – на номер

узла, соответствующего нумерации, принятой на рис. 3. Например, N21 обозначает внутреннее

усилие, действующее на элемент 1 в узле 2. Внешние узловые усилия обозначены P1, P2, P3,

при этом индекс указывает на номер узла. Эти усилия могут быть либо приложены

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

перемещения узлов. На основании уравнения (2) можно написать следующее соотношение

между усилиями и перемещениями для отдельных элементов:

Page 22: Молоков. Компьютерные технологии в машиностроении 26.08.13

22

). u - u ( k = N ), u - u ( k =N

), u - u ( k- = N ), u - u ( k- = N

232

2

3121

1

2

232

2

2121

1

1 (2.5)

где

2

222

1

111

FEk,

FEk

. (2.6)

В дополнение к этому из условия равновесия свободных от закрепления элементов под

действием приложенных к ним внешних и внутренних усилий получим:

P1= N11, P2= N2

1 _ N2

2, P3= N3

2 . (2.7)

Объединив уравнения (2.5) и (2.6), получим

.uk+u-k=P

,uk- )uk+(ku-k=P

,uk-uk=P

33223

32221112

21111

(2.8)

Эти уравнения можно представить в матричной форме:

3

2

1

2

2

2

21

1

1

1

3

2

1

u

u

u

k

k

0

k

kk

k

0

k

k

P

P

P

, (2.9)

или

uKP ][ , (2.10)

где матрицы P, K и u обозначают соответствующие им по порядку следования

части уравнения (2.8). Матрица K является матрицей жесткости системы.

Матрица жесткости системы, как это видно из уравнения (2.9), симметричная, т.е. ее

первая, вторая и третья строки равны соответственно первому, второму и третьему столбцам.

Подобное положение сохраняется и в отношении матрицы жесткости отдельных элементов,

что отвечает общему свойству упругих систем, заключающемуся в том, что, например,

смещение сечения 2 системы вызывает в сечении 1 усилие, равное тому, которое возникает в

сечении 2 при смещении сечения 1, таком же, какое было в сечении 2.

Для определения реакции системы рассмотрим уравнение (2.8). При этом следует

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

в случае расчета элемента, представленного одним стержнем, необходимо задать, по крайней

мере, одно граничное условие на перемещения, если мы хотим получить из уравнения (2.8)

перемещение любой точки.

Если задать граничные условия в виде u1 = 0, P2 = P2, P3 = P3, то уравнение (2.8)

упростится и получит следующий вид:

P1 = – k1u2 (2.11)

Рис. 2. Система двух стержней при осевом нагружении

Page 23: Молоков. Компьютерные технологии в машиностроении 26.08.13

23

Рис. 3. Схема расчленения системы на узлы и элементы

или

3

2

2

2

2

21

3

2

u

u

k

k

k

kk

P

P. (2.12)

Таким образом, уравнение (2.11) может быть использовано для нахождения

перемещений u2 и u3 по заданным усилиям P2 и P3, а уравнение (2.10) – для определения

неизвестного усилия P1, отвечающего граничному условию. Решение этого матричного

уравнения относительно перемещений u2 и u3 можно представить в виде

u = K-1

P, (2.13)

где K-1

является обратной матрицей по отношению K , причем в нашем случае:

211

111

k

1

k

1

k

1

k

1

k

1

K . (2.14)

Внутренние усилия получаются из уравнений (2.5):

. P = N -=N

,P +P = -N=N

3

2

2

2

3

32

1

1

1

2 (2.15)

Соответствующие им нормальные напряжения 1 и 2 в элементах 1 и 2 могут быть

найдены путем деления внутренних усилий на площади поперечных сечений элементов А1 и

А2. Полагая положительными растягивающие напряжения, получаем

1 =

1

32

1

12

A

PP

A

N и 2 =

2

3

2

23

A

P

A

N .

Поскольку для примера принято одно граничное условие u1=0, то система является

статически определимой, т.е. опорная реакция P1 и внутренние усилия N11, N2

1,... могут быть

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

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

Если же мы поставим граничные условия u1 = u3 = 0 совместно с условиями на усилия

P2 = P, система станет статически неопределимой, и, чтобы найти опорные реакции и

внутренние усилия, уравнения статики необходимо сочетать с уравнениями, содержащими

жесткостные характеристики элементов, т.е. такими, как в матричных выражениях. В этом

случае из матричного уравнения (2.8) следует

,Pkk

kPP,

kk

kP,

k+k

Pu

21

23

21

11

212

(2.16)

а из соотношений между усилиями и перемещениями для отдельных элементов

N11

= –N21 =

21

1

kk

k

P, N2

2 = – N3

2 =

21

2

kk

k

P. (2.17)

Page 24: Молоков. Компьютерные технологии в машиностроении 26.08.13

24

Матричная форма расчета не делает различия между статически определимыми и

статически неопределимыми системами и позволяет рассчитывать и те и другие

единообразно. Явным преимуществом матричной формы расчета является то, что она делает

возможным систематическое определение неизвестных перемещений и усилий. Матрица

жесткости стержневой системы, полученная в выражении (2.9), может быть представлена в

виде суммы двух отдельных матриц, т.е.

2

2

2

21

1

1

1

2

2

2

21

1

1

1

k

k0

k

k 0

000

000

0

k

k

0 kk

k

k0

k

kk

k

0 kk

(2.18)

Первая матрица в правой части равенства – это матрица жесткости элемента 1,

дополненная нулевыми элементами (третьей строкой и третьим столбцом), указывающими на

то, что элемент не включает третье сечение системы. Аналогично вторая матрица в правой

части равенства представляет собой матрицу жесткости элемента 2 с нулевыми первой

строкой и первым столбцом, указывающими на то, что элемент не включает сечение 1

стержневой системы. Это положение справедливо для любого числа элементов и показывает

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

жесткости отдельных элементов путем поэлементного сложения матриц жесткости отдельных

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

Если представить составляющие усилий и соответствующих им перемещений в виде

матриц

}{][}{ uKf

где ][K – матрица жесткости элемента, каждому элементу которой – коэффициенту

жесткости можно придать следующий смысл: он численно равен реакции в i-й связи на j-е

перемещение, равное единице, при наложенных связях на все степени свободы.

Формирование матрицы жесткости системы из матриц жесткости отдельных стержней

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

также способов соединения стержней между собой и с недеформируемым неподвижным

основанием.

Матрицы всех стержней суммируются с помощью матрицы (таблицы) соответствия

индексов. Основой расчетов служит уравнение связи между внешними узловыми силами и

узловыми перемещениями

[K]{∆}={P}

;

.

.

.

2

1

1

1

1

1

1

x

z

y

x

z

y

x

f

m

m

m

f

f

f

f

.

.

.

2

1

1

1

1

1

1

u

w

u

u

z

y

x

Page 25: Молоков. Компьютерные технологии в машиностроении 26.08.13

25

где ][K – матрица жесткости стержневой конструкции ; {∆} – вектор узловых

перемещений; {Р} – вектор внешних сил, приведенных к узлам .

Метод известен в матричной форме расчета сооружений как метод прямой жесткости. На

практике построение матрицы жесткости системы может быть достигнуто этим методом без

расширения матриц жесткости отдельных элементов нулевыми строками и нулевыми столбцами.

Она может быть сформирована путем установления положения в ней ненулевых коэффициентов

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

жесткости являются условия равновесия узлов соединения стержней, согласно которым

внутренние усилия должны уравновешиваться внешними силами.

2.2. Пример и основы реализации МКЭ в MATLAB

Рассмотрим на примере задания последовательность этапов реализации МКЭ в ЭВМ на

языке MATLAB.

Пусть требуется численно найти перемещения сечений жестко закрепленной балки

длиной L , имеющей разную площадь сечения S , под действием растягивающей нагрузки P

приложенной горизонтально (рис. 4). Для этого лучше разбить балку на элементы сечением

так, что бы сечение совпадало с точкой, для которой необходимо найти «точное» значение

перемещения сечения. Пусть нам в задаче не сказано, для каких именно точек по длине балки

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

Рис. 4. Жёстко закрепленная балка разного сечения: длина балки L,

растягивающая нагрузка P, площадь сечения элемента S

Исходными данными также в нашей задаче будут:

максимальное число узлов N задается пользователем – число узлов на единицу

больше чем число элементов балки

длина балки L задается пользователем

перемещение в точке закрепления (жесткой заделки) 01 u

растягивающая нагрузка Р задается пользователем

сечение балки S для каждого элемента балки n задается пользователем

однородный стержень постоянного сечения, упруго деформируемый вдоль оси,

имеет коэффициент жёсткости LSEk /

модуль Юнга Е.

Основное расчетное ядро МКЕ может быть представлено следующими этапами:

1. Формирование матрицы связанных индексов – номеров элементов балки по номерам

узлов, например: элемент балки 1 – индексы 1,2; элемент балки 2 – индексы 2,3; элемент

балки 3 – индексы 3,4, для N=4 (3 элемента балки).

2. Формируем для каждого элемента балки свою матрицу жесткости (локальная матрица

жесткости).

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

Page 26: Молоков. Компьютерные технологии в машиностроении 26.08.13

26

4. Формирование матрицы граничных условий.

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

элементов на главной диагонали глобальной матрице жесткости с граничными условиями

не должно быть (из условия успешного решения СЛАУ).

6. Формируем вектор столбец сил P .

7. Решаем СЛАУ }{}{][ PuK , решением будет искомый вектор перемещений }{u (2.13).

На рис. 2 приведен реализованный код на языке MATLAB по пунктам 1–7.

Рис. 5. Реализация расчетного ядра МКЭ

Page 27: Молоков. Компьютерные технологии в машиностроении 26.08.13

27

Матрица граничных условий представлена в программе вектором строкой, так как

только один узел (первый) жестко заделан и не имеет перемещения, задаем перемещение

первого узла равное gu(1,1) = 0. Все перемещения остальных узлов в граничных условиях

задаем единице, чтобы все остальные элементы матрицы не поменяли своего значения после

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

Так как по условию задачи нагрузка приложена только к концу балки (последний узел),

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

которого равна P . В случае если нагрузка P будет во всех узлах (другие граничные условия),

задача может быть решена без изменения этапов расчета и расчетного ядра программы. Так

обеспечивается универсальность данного численного метода, МКЭ.

ЗАДАНИЯ

1. Используя код на рис. 2, разработать ядро МКЭ на языке MATLAB и реализовать его для

задачи (рис. 1), если нагрузка приложена на сжатие, а сечение балки изменяется по закону

1,01

001,02

xS , где x – расстояние от заделки до рассматриваемого сечения балки, м;

S – сечение балки, 2м . Найти перемещения сечения }{u на расстоянии 1/3 и 1/2 от

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

2. Используя код, на рис. 2 разработать ядро МКЭ на языке MATLAB и реализовать его для

задачи (рис. 1), если нагрузка P приложена в центре вдоль оси, балка закреплена жестко с

двух концов, а сечение балки изменяется по закону 101

00102

,x

,S , где x – расстояние от

заделки до рассматриваемого сечения балки, м; S – сечение балки, 2м . Найти

перемещения сечения }{u на расстоянии 1/4 от каждой заделки исходной длины балки.

Принять, что балка работает только в упругой области.

3. Привести задачу к методу конечных элементов и реализовать расчетное ядро метода в

MATLAB. Тело массой 1 кг поднятое над поверхностью земли падает с высоты H. Сила

сопротивления среды (воздуха) F линейно зависит от набираемой скорости по закону

VF 2 . Численно найти: 1) скорость тела V на каждой 1/10 своего пути H; 2) ускорение

тела на каждой 1/10 своего пути. Известно, что начальная скорость свободного падения

тела равна нулю.

4. Привести задачу к методу конечных элементов и реализовать расчетное ядро метода в

MATLAB. Пусть некоторое материальное тело массой m движется прямолинейно по

пути x из состояния покоя под действием силы, зависящей от времени )t(F , сила

сопротивления среды прямо пропорциональна скорости тела через коэффициент k . Найти

численно закон движения тела в зависимости от времени )t(x с интервалом в 10 секунд на

отрезке времени )(t 1000 секунд.

3. Порядок выполнения

1. Освойте основы построения и использования МКЭ для различных инженерных задач.

2. Изучите или повторите средства для программирования алгоритмов на языке MATLAB.

Необходимы знания и умения: работы с матрицами, организации циклов, векторизации

алгоритмов, решения СЛАУ.

3. Запишите математическую модель для вашей задачи.

4. Продумайте и запишите порядок действий в соответствие с рис. 2 для МКЭ,

применительно к вашей инженерной (физической) задаче. Дайте название глобальной

матрице системы в вашей задаче, матрице, которая выступает в роли матрицы под

названием «матрица коэффициентов жесткости» в задаче упругости.

5. Реализуйте алгоритм МКЭ и отладьте его на языке MATLAB.

Page 28: Молоков. Компьютерные технологии в машиностроении 26.08.13

28

4. Форма отчетности

Отчет выполняется согласно требованиям к курсовым и дипломным работам [3]. Он

должен содержать следующие составляющие, части и описание:

1. Титульный лист.

2. Цель, задачи практической работы и ключевую часть основной теории.

3. Постановку решаемой задачи (задание).

4. Разработку и описание сведения задачи к решению МКЭ.

5. Записанный алгоритм МКЭ для задачи на языке MATLAB (отлаженный расчетный

модуль, результаты вычислений на базе одного тестового набора).

6. Краткое описание реализации алгоритма для задачи на языке MATLAB.

7. Выводы (заключение).

5. Контрольные вопросы

1. Приведите этапы сведения решения задачи к СЛАУ.

2. Опишите алгоритм получения (формирования) глобальной матрицы жесткости системы.

3. Что лежит в основе метода прямой жесткости.

4. Запишите математически, как может быть представлена глобальная матрица системы в

виде суммы отдельных (локальных) матриц системы.

5. Каким преимуществом обладает матричная система расчета в МКЭ.

СПИСОК ЛИТЕРАТУРЫ

1. Дуатов Р.З. Программирование МКЭ в MATLAB: учеб. пособие. Казань: Изд-во КГУ,

2010. 71 с.

2. Дьяконов А.Г. Среда для вычислений и визуализации MATLAB. М.: МГУ, 2010. 84 с.

3. Квалификационные работы. Курсовые работы и проекты: методические рекомендации / сост.

В.Н. Нечмиров, А.А. Фаткулин, В.Г. Шамшин. Владивосток: Изд-во ДВГТУ, 2006. 28 с.

4. Молоков К.А. Основы информатики и программирование под Windows: учеб. пособие.

Владивосток: Изд-во ДВГТУ, 2007. 222 с.

Page 29: Молоков. Компьютерные технологии в машиностроении 26.08.13

29

Практическая работа № 4.

Создание приложения в matlab

для задачи решаемой МКЭ (5 часов)

1. Цель работы

Научиться использовать ЭВМ и пакеты прикладных программ для реализации МКЭ в

программном виде. Закрепить практику работы с MATLAB.

2. Краткие теоретические сведения

2.1. Основные особенности MATLAB

Язык MATLAB является высокоуровневым языком программирования, включающим

основанные на матрицах структуры данных, широкий спектр функций, интегрированную

среду разработки, объектно-ориентированные возможности и интерфейсы к программам,

написанным на других языках программирования. Широко используется в таких отраслях

промышленности как авиационно-космическая, автомобильная, коммуникационная и

промышленная автоматизация, концепция модельно-ориентированного проектирования

основывается на моделировании систем высокого уровня. Любой современный технический

специалист нуждается повсеместно в современных точных расчётах, представлениях и

упрощении своей трудовой деятельности в виде автоматизации пакетами прикладных

программ различного рода, что существенно позволяет экономить рабочие время для решения

других задач. MATLAB позволяет это всё осуществить и помочь инженеру в его работе.

Ключевые особенности:

платформонезависимый высокоуровневый язык программирования

ориентированный на матричные вычисления и разработку алгоритмов;

интерактивная среда для разработки кода, управления файлами и данными;

функции линейной алгебры, статистики, анализ Фурье, решение

дифференциальных уравнений и др.;

богатые средства визуализации, 2-D и 3-D графика;

встроенные средства разработки пользовательского интерфейса для создания

законченных приложений на MATLAB;

средства интеграции с C/C++, наследование кода, ActiveX технологии.

В данной практической работе требуется освоить методологию создания независимого

приложения на основе использования MATLAB для решения своих будущих практических

задач и понять основы программирования, которые являются неотъемлемой частью в

современном производстве и промышленностей любой из отраслей.

Расчетное ядро МКЭ для нашей задачи было разработано и отлажено в предыдущей

практической работе. Поэтому эта работа направлена больше на практику применения средств

визуального проектирования для представления в удобном виде результатов численного

расчета МКЭ.

2.2. Разработка алгоритма работы приложения

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

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

Page 30: Молоков. Компьютерные технологии в машиностроении 26.08.13

30

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

Средства создания оконных приложений в MATLAB позволяют проявить творчество

при разработке интерфейса приложения. Для задачи растяжения балки жестко закрепленной с

одного конца работу приложения можно разделить на две части:

1. Ввод исходных данных для численного расчета;

2. Расчет и представление результатов расчета. Все это следует отразить в нашем разрабатываемом интерфейсе приложения, как

показано на рис. 1.

Рис. 1. Разработка интерфейса приложения: главное и единственное окно приложения

Изначально MATLAB воспринимает, в приложениях с окнами, все вводимые данные P,

L, N, E, n, Sn в окна как текст, для того чтобы он оперировал с вводимыми командами

применяется функция str2num( ) для преобразования текста в число. Первоначально требуется

при конкретном количестве узлов узнать, сколько потребуется элементов балки. Для этого

напишем функцию обработки события на нажатие кнопки «Элементов балки». Обработка

реализуется в следующей функции на рис. 2.

Рис. 2. Программный код для расчёта количества элементов

Page 31: Молоков. Компьютерные технологии в машиностроении 26.08.13

31

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

массивы, как показано на рис. 3. Приведенные строки кода позволяют осуществить

перечисленные выше действия.

Рис. 3. Использование глобальных переменных

Объявление глобальной переменной необходимо дублировать в той области

видимости, где будет ее использование. Если она будет использоваться в трех различных

функциях то, следовательно, ее надо объявить (описать), global ss, в этих трех функциях.

Далее нам требуется осуществить ввод сечения S балки для каждого элемента n балки,

это можно сделать добавлением отдельной кнопки «принять» и написать функцию обработки

события, как показано на рис. 4. Ввод площади сечения каждого энного элемента должно

соответствовать номеру этого элемента, который должен быть введен и быть актуальным,

перед тем как сработает функция обработки события. Последняя строка кода мгновенно после

нажатия кнопки «принять» отображает значение площади сечения на bar диаграмме.

Рис. 4. Функция обработки события для кнопки «принять»

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

значений xi, рис. 5. Данный программный код сначала переводит вводимые символы из окон

ввода в числовые значения. В данном случае это окна ввода: числа узлов (sNuzl), коэффициент

натяжения (E), длина балки (Lbalki) и сила растяжения (PP), а также (xi) – это массив значений

координат сечений по длине балки.

Page 32: Молоков. Компьютерные технологии в машиностроении 26.08.13

32

Рис. 5. Часть кода обработки события по нажатию на кнопку «расчет перемещений»

Теперь формируем само ядро программы, нужно задать матрицу индексов,

определиться с граничными условиями и создать матрицу жёсткости. Для этого потребуется

определиться с граничными условиями, по заданию в задаче, и сформировать глобальную

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

график зависимости перемещения от длины L. Основные части коды ядра программы

приведены ниже на рис. 6, 7, 8.

Рис. 6. Первая часть кода ядра программы

Page 33: Молоков. Компьютерные технологии в машиностроении 26.08.13

33

Рис. 7. Граничные условия ядра программы

Рис. 8. Вторая часть кода ядра программы

Перечислим основные операции, специальные символы, операторы и функции которые

могут понадобиться при создании приложения:

Page 34: Молоков. Компьютерные технологии в машиностроении 26.08.13

34

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

старшинства.

+ (сложение);

– (вычитание);

(умножение);

/ (деление);

^ (возведение в степень);

‘ апостроф (комплексно сопряженное транспонирование);

() (определение порядка вычисления);

Специальные символы:

[ ] – квадратные скобки используют для создания матриц и векторов;

– пробел служит для разделения элементов матриц;

, – запятая применяется для разделения элементов матриц и операторов в строке

ввода;

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

(команды) отменяет вывод результата на экран;

: – двоеточие используется для указания диапазона (интервала изменения

величины) и в качестве знака групповой операции над элементами матриц;

% – знак процента обозначает начало комментария;

! – отмечает начало команды DOS;

’ – апостроф указывает на символьные строки.

Функции и операторы:

1. plot – позволяет непосредственно выводить графики любых зависимостей Функция plot

имеет различные формы, связанные с входными параметрами, например plot(y) создает

кусочно-линейный график зависимости элементов у от их индексов. Если вы задаете два

вектора в качестве аргументов, plot(x,y) создаст график зависимости у от х. Функция plot

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

на экране. Если же оно существует, то plot использует его по умолчанию. Для открытия

нового окна и выбора его по умолчанию, наберите figure.

2. grid on – включает сетку координат в графическое окно вывода.

3. axis – имеет несколько возможностей для настройки масштаба, ориентации и

коэффициента сжатия. (Функция axis заменяет значения по умолчанию предельными

значения, вводимыми пользователем axis([xmin xmax ymin ymax])).

4. global – позволяет пользователю контролировать исполнение алгоритмов, изменять

исходный код, а также создавать свои собственные функции и процедуры.

5. str2num – перевод текста в число.

6. guide – создание GUI.

7. сlruprop – удалить свойство объекта.

8. getuprop – запросить свойство объекта.

9. setuprop – установить свойство объекта.

10. hidegui – скрыть/открыть объекты GUI.

11. edtext – интерактивное редактирование объектов text.

12. getstatus – запросить свойства строки объекта figure.

13. end – указывает на завершение программного кода.

14. if – оператор для создания условий.

15. setstatus – установить свойства строки объекта figure.

16. popupstr – запросить свойства строки выпадающего меню.

17. for – указывает и задаёт длительность цикла.

Page 35: Молоков. Компьютерные технологии в машиностроении 26.08.13

35

18. guide – создание окна графического окна для создания приложения в программе

MATLAB.

19. bar – представляет графические данные в виде гистограммы (используем для

представления вводимых площадей сечений элементов балки).

Мы использовали коэффициент жесткости, он учитывает жёсткость материала, в ядре

программы он представлен в следующем виде (рис. 9). Коэффициент упругости (иногда

называют коэффициентом Гука, коэффициентом жёсткости) – коэффициент, связывающий в

законе Гука удлинение упругого тела и возникающую вследствие этого удлинения силу

упругости. Однородный стержень постоянного сечения, упруго деформируемый вдоль оси,

имеет коэффициент жёсткости

LSEk /

где Е – модуль Юнга; S – сечение элемента балки; L – длина балки.

Рис. 9. Коэффициент жёсткости в ядре программного кода

В данном случае величина Е называется модулем Юнга и, в отличие от коэффициента

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

аналогично исходной формулы. SS(jj) – в коде программы обозначена площадь поперечного

сечения элемента балки. Lel – это длина единичного элемента балки. Значение Е задаётся

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

задаются значения сечений каждого элемента балки и длины самой балки.

2.3. Разработка интерфейса, создание приложения в среде GUIDE

Интерфейс является очень важной частью программы, поскольку позволяет

пользователю удобно и наглядно решать свою задачу. Разработка интерфейса также требует

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

который, возможно, будет использовать вашу программу (приложение).

Перейдите в среду GUIDE, для этого можно после приглашения «>>» в окне command

window выполнить команду

>> guide

Появляется диалоговое окно GUIDE Quick Start с двумя вкладками. Мы выбираем

вкладку Create New GUI (создание нового приложения), которая нам сейчас понадобится. На

ней можно выбрать четыре заготовки: Blank GUI (пустое окно приложения), GUI with

Uicontrols (заготовка с кнопками, переключателями и областями ввода), GUI with Axes and

Menu (заготовка с осями, меню, кнопкой и раскрывающимся списком), Modal Question Dialog

(заготовка для модального окна).

Вторым этапом разработки интерфейса является создание окон входных параметров,

кнопки расчёта элементов балки и изображение самой балки в схематичном варианте, как

приведено на рис. 10.

Page 36: Молоков. Компьютерные технологии в машиностроении 26.08.13

36

Рис. 10. Входные параметры и схематичное изображение балки

Третьим этапом создание окон ввода сечений балки для каждого элемента, создание

кнопки ввода данных и графического окна вывода в виде диаграммы введённых данных (рис. 11).

Рис. 11. Ввод площадей сечений для элементов балки

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

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

инструментов для удобного и быстрого создания приложений в Guide (рис. 12).

Рис. 12. Панель инструментов GUIDE

Page 37: Молоков. Компьютерные технологии в машиностроении 26.08.13

37

Четвёртым окончательным пунктом создания нашей программы является создание кнопки

«Расчёт перемещения» (рис. 13), к которой привязываются все входные параметры и в которой

содержится основное ядро программы, а также создания окна вывода графика (axes2) куда и будет

выводиться в графическом виде результат всего расчёта метода конечных элементов.

Рис. 13. Кнопка расчёта и окно вывода результата

Работа в Guide среде достаточно проста – элементы управления (кнопки,

раскрывающиеся списки и т.д.) размещаются при помощи мыши, а затем программируются

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

Приложение может состоять как из одного основного окна, так и нескольких окон и

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

отдельные окна. Ряд функций MatLab предназначен для создания стандартных диалоговых

окон открытия и сохранения файла, печати, выбора шрифта, окна для ввода данных и др.,

которыми можно пользоваться в собственных приложениях.

2.4. Пример работы приложения

1. Задаем входные параметры – это длина балки, натяжение, количество узлов в данной

балки и коэффициент жёсткости, он задан по умолчанию для металлов, для расчёта прочих

материалов необходимо задать пользователю.

Page 38: Молоков. Компьютерные технологии в машиностроении 26.08.13

38

2. Нажимаем кнопку «элементов балки» и рядом появляется расчетное количество

элементов балки, которое понадобится при задании сечений каждого элемента балки. В

программе предусмотрена блокировка, в случае задания большего числа элементов, никаких

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

Например:

при вводе значений N=3 расчетное число элементов балки n=2, как приведено на рис.

14. При вводе несуществующего номера элемента, например 3, после нажатия на кнопку

«принять» никаких действий на bar диаграмме не произойдет (рис. 15), что будет являться

признаком неверного значения введенного номера элемента.

Рис. 14. Пример расчёта элементов балки

Рис. 15. Ввод площади сечения для первого элемента балки

и отображение его на диаграмме

3. Вводим для каждого элемента балки нужное сечение и нажимаем «Принять» после

каждого ввода нового сечения или при изменении номера элемента. Например: при

количестве элементов балки n=2, результирующая диаграмма, показывающая наглядность

введенных данных, будет выглядеть как на рис. 16.

Page 39: Молоков. Компьютерные технологии в машиностроении 26.08.13

39

Рис. 16. Ввод площади сечения для второго элемента балки

и отображение его на диаграмме

В первом случае для первого элемента балки мы задали сечение балки 20 мм2, а во

втором 12 мм2, как видно, программа работает правильно, показала верные значения.

Визуализация таким графиком наиболее наглядна для данного случая, в других случаях может

потребоваться другая диаграмма для визуализации.

4. Проделав все три предыдущих пункта, нажимаем кнопку «Расчёт перемещений»,

которой запускается весь расчет, после этого получаем график зависимости перемещений от

длины узлов. На рис. 17 показаны полученные ранее результаты расчета.

Рис. 17. Представление решения в графическом виде

Page 40: Молоков. Компьютерные технологии в машиностроении 26.08.13

40

ЗАДАНИЯ

1. Разработайте независимое приложение (для задачи № 1 практической работы 3) с

графическим интерфейсом как описано в примере, проверьте правильность работы

приложения, протестируйте его и поэкспериментируйте с исходными значениями.

2. Разработайте независимое приложение (для задачи № 2 практической работы 3) с

графическим интерфейсом как описано в примере, проверьте правильность работы

приложения, протестируйте его и поэкспериментируйте с исходными значениями.

3. Разработайте независимое приложение (для задачи № 3 практической работы 3) с

графическим интерфейсом как описано в примере, проверьте правильность работы

приложения, протестируйте его и поэкспериментируйте с исходными значениями.

4. Разработайте независимое приложение (для задачи № 4 практической работы 3) с

графическим интерфейсом как описано в примере, проверьте правильность работы

приложения, протестируйте его и поэкспериментируйте с исходными значениями.

3. Порядок выполнения

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

2. Изучите основные инструменты для создания графического интерфейса.

3. Составьте укрупненный алгоритм работы приложения.

4. Разработайте интерфейс для ввода и вывода данных, визуализируйте расчетные данные и

представьте результаты расчета.

5. Напишите код всех необходимых функций.

6. Отладьте программу и сохраните результаты работы в виде скрин-шотов в отчете.

4. Форма отчетности Отчет выполняется согласно требованиям к курсовым и дипломным работам [3]. Он

должен содержать следующие составляющие, части и описание: 1. Титульный лист. 2. Цель, задачи практической работы и ключевую часть основной теории. 3. Листинг программы и описание используемых функций. 4. Результаты расчетов в виде графиков на скрин-шотах. 5. Выводы (заключение).

СПИСОК ЛИТЕРАТУРЫ

1. Бадриев И.Б., Бандеров В.В., Задворнов О.А. Разработка графического пользовательского

интерфейса в среде MATLAB: учеб. пособие. Казань: Казанский государственный

университет, 2010. 113 с.

2. Давыдов В.Г. Программирование и основы алгоритмизации: учеб. пособие. М.: Высш. шк.

2003. 448 с.

3. Иглин С.П. Математические расчеты на базе Matlab. СПб.: BHV–Санкт-Петербург, 2005. 640 с.

4. Коткин Г.Л., Черкасский В.С. Компьютерное моделирование физических процессов с

использованием MATLAB: учеб. пособие. Новокузнецк: Кузбассвузиздат, 2004. 376 с.

5. Манжосов В.К. Расчет статически неопределимой плоской рамы методом перемещений:

метод. указания. Ульяновск: УлГТУ, 2007. 48 с.

6. Поршнев С.В. MATLAB 7. Основы работы и программирования: учебник. М.: БИНОМ.

Лаборатория знаний, 2006. 320 с.

7. Хлебородов А.В. Расчет простых статически неопределимых систем методом сил: метод.

указания. Хабаровск: Изд-во ДВГУПС, 2001. 30 с.