О. Г. КРУПЕННИКОВ
Д. В. КРАВЧЕНКО
УЧЕБНОЕ ПОСОБИЕ
КУРС ЛЕКЦИЙ ПО ОСНОВАМ
АЛГОРИТМИЗАЦИИ
И ПРОГРАММИРОВАНИЯ ЗАДАЧ
МАШИНОСТРОЕНИЯ
Ульяновск 2006 Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования Ульяновский государственный технический университет О. Г. Крупенников, Д. В. Кравченко
КУРС ЛЕКЦИЙ ПО ОСНОВАМ
АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
ЗАДАЧ МАШИНОСТРОЕНИЯ
Учебное пособие для студентов, обучающихся по специальностям 151001 – «Технология машиностроения», 150201 – «Машины и технология обработки металлов давлением», 190201 – «Автомобиле- и тракторостроение», 190601 – «Автомобили и автомобильное хозяйство»Ульяновск УДК 681.3:519.68(075) ББК 22.18я К Рецензенты: канд. техн. наук, зам. начальника производства – главный специалист ОАО «Автодеталь-Сервис» С. Е. Ведров; кафедра «Математическое моделирование технических систем» Ульяновского государственного университета.
Научный редактор: канд. техн. наук, профессор Карев Е. А.
Утверждено редакционно-издательским советом университета в качестве учебного пособия.
Крупенников О. Г.
К84 Курс лекций по основам алгоритмизации и программирования задач машиностроения: учебное пособие / О. Г. Крупенников, Д. В. Кравченко. – Ульяновск: УлГТУ, 2006. – 144 с.
ISBN 5-89146-803- Пособие разработано в соответствии с типовой и рабочей программами дисциплины «Информатика» для студентов первого курса всех форм обучения специальностей 151001, 150201, 190201, 190601.
Освещены общие правила построения блок-схем алгоритмов различных структур (линейной, ветвления, цикла) на примерах решения различных технологических задач, вопросы реализации ряда численных методов применительно к нахождению значений выходных параметров технологических систем. Рассмотрены примеры практической реализации этих методов для решения задач машиностроения с применением интегрированной среды программирования TURBO PASCAL 7.0.
Пособие написано на кафедре «Технология машиностроения» УлГТУ.
УДК 681.3:519.68(075) ББК 22.18я © О. Г. Крупенников, Д. В. Кравченко, © Оформление. УлГТУ, ISBN 5-89146-803- Учебное издание КРУПЕННИКОВ Олег Геннадьевич КРАВЧЕНКО Дмитрий Валерьевич
КУРС ЛЕКЦИЙ ПО ОСНОВАМ АЛГОРИТМИЗАЦИИ
И ПРОГРАММИРОВАНИЯ ЗАДАЧ МАШИНОСТРОЕНИЯ
Учебное пособие Редактор О. А. Фирсова Подписано в печать 16.01.2006. Формат 6084/16.Бумага офсетная. Печать трафаретная.
Усл. печ. л. 8,37. Уч.-изд. л. 8,10.
Тираж 300 экз. Заказ Ульяновский государственный технический университет 432027, Ульяновск, ул. Сев. Венец, 32.
Типография УлГТУ, 432027, Ульяновск, Сев. Венец, 32.
ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ ……………………………………………………………... 1. АЛГОРИТМИЗАЦИЯ ЗАДАЧ МАШИНОСТРОЕНИЯ ………………... 1. 2. Графические символы, используемые для построения алгоритмических структур ………………………………………………………. 1. 3. Разновидности алгоритмических структур для решения задач машиностроения ………………………………………………………… 1.4. Понятие программы. Связь программы с алгоритмической структурой …………………………………………………………………..2. МЕТОДЫ НАХОЖДЕНИЯ ПАРАМЕТРОВ ТЕХНОЛОГИЧЕСКИХ
2.1. Классификация и общий подход к реализации методов нахождения параметров технологических систем с нелинейной характеристикой …………………………………………………………………. 2.2. Метод деления отрезка пополам в нахождении корней уравнений с 2. 3. Метод простых итераций в нахождении корней уравнения с нелинейной характеристикой ……………………………………………..3. МЕТОДЫ НАХОЖДЕНИЯ ПАРАМЕТРОВ ТЕХНОЛОГИЧЕСКИХ
3.1. Основные понятия, классификация и общий подход к реализации методов нахождения параметров технологических систем с линейной характеристикой …………………………………………….. 3. 2. Метод Крамера в нахождении технологических параметров системы уравнений с линейными характеристиками …………………. 3. 3. Метод Гаусса в нахождении технологических параметров системы уравнений с линейными характеристиками …………………… 3. 4. Метод Зейделя в нахождении технологических параметров системы уравнений с линейными характеристиками ……………………4. АППРОКСИМАЦИЯ ТЕХНОЛОГИЧЕСКИХ ПАРАМЕТРОВ В
4. 2. Использование рядов и многочленов для аппроксимации технологических параметров ………………………………………………… 4. 3. Использование интерполирования для нахождения выходных параметров технологических систем …………………………………..5. ПРИМЕНЕНИЕ МЕТОДОВ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ
ДЛЯ НАХОЖДЕНИЯ ВЫХОДНЫХ ПАРАМЕТРОВ
6. ПРИМЕНЕНИЕ МЕТОДОВ ЧИСЛЕННОГО
ДИФФЕРЕРНЦИРОВАНИЯ ДЛЯ НАХОЖДЕНИЯ ВЫХОДНЫХ
6. 1. Основные понятия численного дифференцирования ……………… 6.2. Определение погрешности численного дифференцирования ……... 6.3. Основные понятия, связанные с дифференцированными уравнениями ………………………………………………………………….. 6.4. Методы решения обыкновенных дифференцированных уравнений 7. МЕТОДЫ ОПТИМИЗАЦИИ В ЗАДАЧАХ МАШИНОСТРОЕНИЯ ….. 7.2. Одномерная оптимизация ……………………………………………. 7.3. Многомерные задачи оптимизации …………………………………. 7.3.1. Задачи безусловной оптимизации …………………………….ПРЕДИСЛОВИЕ
Изучение дисциплины «Информатика» дает возможность решения большого спектра задач в области сбора, накопления, передачи, обмена и обработки информации. При этом основной акцент делается на необходимость использования средств вычислительной техники.
Информатика является одной из базовых дисциплин кафедры «Технология машиностроения» и необходима для изучения таких специальных дисциплин, как, например, «Основы технологии машиностроения», «Технология машиностроения», «Автоматизация производственных процессов в машиностроении», «Компьютерное обеспечение машиностроительного производства» и др.
Как показывает многолетняя практика, у многих студентов возникают определённые трудности в понимании ряда теоретических вопросов дисциплины.
Это вопросы связанные с построением алгоритмических структур решения технологических задач (правила построения) и реализации с помощью ЭВМ ряда численных методов нахождения приближенных значений выходных параметров технологических систем с заданной точностью при решении машиностроительных задач.
Учитывая вышесказанное, работа студентов с этим пособием позволит снять обозначенные трудности и дать четкое представление о правилах алгоритмизации и практической реализации методов нахождения выходных параметров технологических систем с нелинейной и линейной характеристиками, численного интегрирования и дифференцирования, оптимизации и аппроксимации этих параметров в задачах машиностроения с применением интегрированной среды программирования TURBO PASCAL 7.0.
1. АЛГОРИТМИЗАЦИЯ ЗАДАЧ МАШИНОСТРОЕНИЯ
Алгоритм – это точное предписание, определяющее вычислительный процесс, ведущий от варьируемых начальных данных к искомому результату.Алгоритм должен содержать конечную последовательность шагов или операций, однозначно определяющих процесс переработки исходных и промежуточных данных в искомый результат.
При разработке алгоритма решения той или иной задачи необходимо учитывать обеспечения этим алгоритмам следующих свойств:
- определенность;
- результативность;
- массовость;
- дискретность.
Определенность – это свойство алгоритма, обеспечивающее его однозначность, исключение произвольности толкования любого из предписаний и заданного порядка исполнения.
Результативность – это свойство алгоритма, обеспечение которого позволит через определенное число шагов получить конечный результат или сообщение о невозможности по тем или иным причинам решения поставленной задачи.
Массовость – это свойство алгоритма, обеспечивающее возможность использования этого алгоритма для решения n-го количества типовых задач.
Дискретность – это свойство алгоритма, обеспечивающее возможность разбиения вычислительного процесса на отдельные самостоятельные этапы.
Алгоритм может быть представлен в описательном виде (на словах) или с помощью зарезервированных графических символов: данных, процесса, линий, специальных основных и специфических.
1.2. Графические символы, используемые для построения Для построения алгоритмов можно использовать следующие графические символы, представленные в таблице 1.1.
Данные (основной символ данных) Запоминаемые данные (основной символ данных) Запоминающее устройство с последовательной выборкой Запоминающее устройство с прямым доступом (специфический символ данных) Документ (специфический символ данных) Ручной ввод (специфический символ данных) Дисплей (специфический символ данных) Процесс (основной символ процесса) Подготовка (специфический символ процесса) Решение (специфический символ процесса) Линия (основной символ линий) Пунктирная линия (специфический символ линий) Соединитель (специальный символ) Терминатор (специальный символ) Комментарий (специальный символ) Примечание: полный список графических символов представлен в ГОСТ 19.701- (ИСО 5807-85) ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения Графический символ «Данные» отображает данные, носитель которых не определен. В этот графический символ вписываются, например, имена переменных входных данных при вводе или имена переменных выходных данных при выводе.
Графический символ «Запоминаемые данные» отображает хранимые данные в виде, пригодном для обработки, носитель данных не определен.
Графический символ «Запоминающее устройство с последовательной выборкой» отображает данные, хранящиеся в запоминающем устройстве с последовательным доступом (магнитная лента, кассета с магнитной лентой, магнитофонная кассета).
Графический символ «Запоминающее устройство с прямым доступом»
отображает данные хранящиеся в запоминающем устройстве с прямым доступом (магнитный диск, магнитный барабан, гибкий магнитный диск).
Графический символ «Документ» отображает данные, представленные на носителе в удобочитаемом виде (микрофильм, рулон ленты с итоговыми данными, бланки ввода данных).
Графический символ «Ручной ввод» отображает данные, вводимые вручную во время обработки с устройства любого типа (клавиатура).
Графический символ «Дисплей» отображает данные (входные или выходные), представленные в человекочитаемой форме на носителе в виде отображающего устройства (экран).
Графический символ «Процесс» отображает функцию обработки данных любого вида. В этот графический символ, например, может быть вписана расчетная зависимость (формула).
Графический символ «Подготовка» используется в алгоритмических структурах повторения (цикла) и указывает на начало цикла. В этот графический символ вписывается имя переменной параметра цикла, который будет изменяться с шагом приращения равным «+ 1» или «– 1», начальное и конечное значение параметра цикла. Например: К = 12; 30, где К – имя переменной параметра цикла, а цифры 12 и 30, соответственно, начальное и конечное значение параметра цикла. С учетом того, что начальное значение параметра цикла меньше конечного, К будет принимать значения от 12 до 30 с шагом приращения «+ 1»: К = 12; 13; 14; 15, …, 30.
Графический символ «Решение» отображает решение, имеющее один вход и несколько альтернативных выходов, один и только – один из которых может быть активизирован после вычисления условий, определенных внутри этого символа. Условия могут быть представлены в виде ограничений равенств или ограничений неравенств. Символ используют для построения структур ветвления и повторения (цикла).
Графический символ «Линия» отображает поток данных или управления.
Соединяет между собой другие графические символы.
Графический символ «Пунктирная линия» отображает альтернативную связь между двумя или более символами.
Графический символ «Соединитель» отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения ее в другом месте. Соответствующие символы – соединители должны содержать одно и то же уникальное обозначение (цифра, буква, буквенноцифровое значение).
Графический символ «Терминатор» отображает выход во внешнюю среду и вход из внешней среды (начало или конец алгоритма, пуск или останов).
В случае выхода во внешнюю среду в этот символ вписывается слово «Конец», а в случае входа из внешней среды – «Начало».
Графический символ «Комментарий» используется для добавления описательных комментариев или пояснительных записей в целях объяснения или примечаний. Пунктирные линии в символе комментария связаны с соответствующим символом или могут обводить группу символов. Текст комментариев или примечаний должен быть помещен около ограничивающей фигуры.
Кроме отдельно взятых графических символов (см. табл. 1.1), для построения алгоритмических структур используются блочные символы в виде базовых управляющих конструкций (рис. 1.1).
а, б, в – соответственно следования, ветвления, повторения 1.3. Разновидности алгоритмических структур для решения Типовыми для решения задач, в том числе и задач машиностроения, являются алгоритмические структуры, такие как:
– алгоритм линейной структуры;
– алгоритм разветвленной структуры;
– алгоритм циклической структуры (с вложениями и без вложений);
– алгоритм итерационного цикла.
Алгоритм линейной структуры – это точное предписание, определяющее вычислительный процесс, в котором все действия от ввода варьируемых начальных данных до вывода искомого результата осуществляются последовательно одно за другим.
Пример 1. Составить алгоритм вычисления массы заготовки выполненной в виде пластины, если известны длина, ширина, толщина и плотность материала заготовки. Алгоритм решения задач представлен на рис. 1.2.
Рис. 1.2. Блок-схема алгоритма линейной структуры (постановка задачи см. пример 1) Алгоритм разветвленной структуры – это точное предписание, определяющее вычислительный процесс, в котором в зависимости от выполнения или не выполнения ограничивающего условия или условий последовательность действий может разветвляться на два или более направлений.
Пример 2. Составить алгоритм вычисления коэффициента ZV, учитывающего влияние окружной скорости V шестерни на ее износ в зубчатой передаче, если твердость H0 зубьев колес может быть меньше, равна или больше 350 единиц по шкале HB: ZV = 0,85 · V0,1 при H0 350HB; ZV = 0,925 · V0,05 при H0 > 350HB, где V – окружная скорость, м/мин; Н0 – твердость поверхности зубьев зубчатых колес.
Алгоритм решения задачи представлен на рис. 1.3.
Рис. 1.3. Блок-схема алгоритма разветвленной структуры на два направления Пример 3. Составить алгоритм, с помощью которого по величине среднего арифметического отклонения профиля Ra (мкм) микронеровностей поверхности рассчитывалась высота микронеровностей поверхности по 10-ти точкам Rz (мкм) детали: Rz = 4 · Ra, при Ra = 1,25 … 2,5; Rz = 5 · Ra, при Ra = 0,32 … 0,63; Rz < 0,1, при Ra < 0,04.
Алгоритм решения задачи представлен на рис. 1.4.
Алгоритм циклической структуры это точное предписание, определяющее вычислительный процесс, в котором одна и та же последовательность действий выполняется многократно с заранее известным числом повторений.
Пример 4. Составить алгоритм по определению интенсивности изнашивания фрезы U, если ширина фрезерования B изменяется от начального значения B0 = 40 мм до конечного значения Bn = 60 мм с шагом hB = 5 мм: U = (1 + 100/B) U0, где U0 = 16 мкм/км – начальный износ фрезы.
Алгоритм решения задачи представлен на рис. 1.5.
Результатом решения поставленной задачи в соответствии с алгоритмом (см. рис. 1.5) является формирование массива табличных значений выходного параметра – интенсивность изнашивания фрезы U в зависимости от одного входного параметра (параметра цикла) – ширина фрезерования B. Тем самым выявляется закономерность влияния ширины фрезерования B на интенсивность износа фрезы U. По получаемым табличным значениям U и B может быть построен график этой зависимости. Количество выводимых табличных значений U и B при известных исходных данных примера 4, а также и количество повторений однотипной последовательности действий (многократное обращение к одной и той же расчетной зависимости U= f(B)) можно рассчитать по формуле:
Пример 5. Составить алгоритм по определению скорости резания V при сверлении отверстия сверлом диаметром D, изменяющимся от начального значения D0 = 1 мм до конечного значения Dn = 4 мм с шагом hD = 1 мм, и подачей S, изменяющейся от начального значения S0 = 0,1 мм/об до конечного значения Sn = 0,4 мм/об с шагом hs = 0,1 мм/об: V = Сv · Dq · Kv / Tm · Sy, где Сv = 400;
q = m = y = 0,5; Kv = 1; T = 60 мин – период стойкости сверла.
Алгоритм решения задачи представлен на рис. 1.6.
Результатом решения поставленной задачи в соответствии с алгоритмом (см. рис. 1.6) является формирование массива табличных значений выходного параметра – скорость резания при сверлении V в зависимости от двух входных параметров (параметров внешнего и вложенного цикла) – диаметра сверла D и подачи S.
Рис. 1.4. Блок-схема алгоритма разветвленной структуры на три направления (постановка задачи см. пример 3) Рис. 1.5. Блок-схема алгоритма циклической структуры без вложений Значение скорости резания V определяется при всех возможных из указанного диапазона значениях D и S и при всех возможных сочетаниях этих значений. Количество выводимых табличных значений V, D и S при известных исходных данных примера 5, а следовательно, и количество повторений однотипной последовательности действий (многократное обращение к одной и той же расчётной зависимости) V = f(D, S)) можно рассчитать по формуле:
При D0 = 1 мм, Dn = 4 мм, hD = 1 мм, S0 = 0,1 мм/об, Sn = 0,4 мм/об, hS = 0, мм/об:
Алгоритм итерационного цикла – это точное предписание, определяющее вычислительный процесс, в котором одна и та же последовательность действий выполняется многократно с заранее неизвестным числом повторений.
Пример 6. Составить алгоритм нахождения такого значения скорости резания V при сверлении отверстия, при котором шероховатость обработанной поверхности по параметру RZ – высота микронеровностей профиля по десяти мм: D = 12 мм; S – подача, мм/об: S = 0,1 мм/об; V – скорость резания, м/мин.
Начальное значение скорости резания V0 = 12 м/мин, шаг изменения скорости резания hV = 0,1 м/мин.
Алгоритм решения задачи представлен на рис. 1.7.
Результатом решения поставленной задачи в соответствии с алгоритмом (см. рис. 1.7) является нахождение скорости резания V, при которой шероховатость поверхности RZ будет меньше заданного значения RZmin. Для этого V изменяют от начального значения V0 (при V0 условие RZ < RZmin не выполняется) с минимальным шагом приращения hv. При каждом новом значении скорости резания рассчитывают RZ и проверяют выполнение условия RZ < RZmin. Как только это условие выполнится осуществляется выход из тела итерационного цикла на вывод результата, того последнего значения V, при котором и обеспечилось выполнение условия RZ < RZmin.
V = CV ·Dq ·KV / Tm ·Sy Рис. 1.6. Блок-схема алгоритма циклической структуры с вложениями Связь программы с алгоритмической структурой В общем понимании программой называется набор команд, манипулирующих данными. Для реализации любой программы служат языки программирования, как одна из разновидностей программного обеспечения, с которым может работать пользователь электронно-вычислительной машины (ЭВМ).
Рассмотренные ранее способы описания алгоритмических структур обладают существенным недостатком. Записи предписаний в этих алгоритмических структурах, представленные в виде связанных друг с другом графических символов, не могут непосредственно быть воспринятыми ЭВМ. Они служат для предварительной работы с алгоритмом в расчете на то, что существуют средства описания алгоритмов. Таким средством описания алгоритмов и являются языки программирования. Они позволяют на основе строгих правил формировать последовательность предписаний, однозначно отражающих смысл и содержание частей алгоритма, с целью их последовательного выполнения с помощью ЭВМ. Выбор языка программирования, как средства описания алгоритмической структуры, зависит от характера решаемых задач, возможностей ЭВМ, наклонностей самого пользователя ЭВМ.
В основе всех языков программирования лежит понятие – оператор. Оператор – это самостоятельный этап алгоритмической структуры, представляющий самостоятельную единицу языка. Выделяется фиксированное количество операторов, каждый из которых указывает на выполнение определенных действий. Операторы бывают следующих типов: присваивания, перехода, процедур, функций, пустые операторы, условные операторы, операторы повторения (циклов), ввода данных, вывода данных, выбора, ветвления. Операторы обычно выполняются в той последовательности, в которой они вписаны в программе, за исключением некоторых случаев, когда эта последовательность может прерываться операторами перехода или сокращаться условными операторами. В построении операторов участвуют более мелкие единицы – выражения. Выражения по определенным правилам соединяются между собой ограничителями (выделенными словами). Выражения в свою очередь строятся с помощью знаков, операций, скобок, чисел, переменных, указателей, функций, логических значений и т. д.
Установим связь программы написанной на языке Turbo Pascal 7.0 с алгоритмической структурой при решении задачи в соответствии с примером 7.
Пример 7. Составить алгоритм и программу для определения усилия P, изгибающего оправку с торцовой фрезой под действием составляющих сил резания Pz и Py:
где P, Pz, Py в Н.
Структурная схема связи алгоритма и программы представлена на рис. 1.8.
На структурной схеме (см. рис. 1.8): по линии связи 1 происходит замена графического символа «Терминатор» зарезервированным языком программирования словом «Begin»; по линии связи 2 графический символ «Данные» заменяется зарезервированными структурой оператора вывода «Write» и ввода «Readln» силы резания Py; по линии связи 3 графический символ «Данные» заменяется зарезервированными структурой оператора вывода «Write» и ввода «Readln» силы резания Pz; по линии связи 4 графический символ «Процесс» заменяется зарезервированным оператором присваивания (расчет выходного параметра P); по линии связи 5 графический символ «Данные» заменяется зарезервированной структурой оператора вывод «Writeln» результата решения задачи; по линии связи 6 происходит замена графического символа «Терминатор»
зарезервированным словом «End». Таким образом, каждый из выше обозначенных операторов и зарезервированных слов языка Turbo Pascal 7.0 представляет самостоятельный этап алгоритмической структуры. Последовательность обращения к этим операторам в программе установлена в строгом соответствии с последовательностью следования графических символов в алгоритмической структуре, относящейся к линейной и предписывающей поэтапное выполнение действий, следующих одно за другим.
Ввод Py P = Py + Pz Вывод P Конец Рис. 1.8. Структурная схема связи алгоритма, представленного в виде блок-схемы, и программы
2. МЕТОДЫ НАХОЖДЕНИЯ ПАРАМЕТРОВ
ТЕХНОЛОГИЧЕСКИХ СИСТЕМ С НЕЛИНЕЙНОЙ
ХАРАКТЕРИСТИКОЙ
2.1. Классификация и общий подход к реализации методов нахождения параметров технологических систем с нелинейной характеристикой В большинстве случаев на практике выходные параметры технологических систем изменяются по законам, которые представлены в виде уравнений с нелинейной характеристикой (нелинейные уравнения). Как правило, при решении таких уравнений необходимо находить корни. Для нахождения корней используют прямые и итерационные методы.Реализация прямых методов основывается на нахождении корней уравнений с помощью конечных формул. Известны методы решения простых алгебраических, тригонометрических, логарифмических и показательных уравнений.
Реализация итерационных методов (методов пошагового приближения к искомым значениям корней или корня нелинейного уравнения) позволяет решить практически любые уравнения независимо от их сложности. Итерационные методы легко программируются и реализуются с помощью ЭВМ. К ним можно отнести:
метод деления отрезка пополам;
метод касательных;
метод простых итераций.
На первом этапе осуществляется поиск либо приближенного значения корня (метод касательных и простых итераций), либо отрезка, содержащего этот корень (метод деления отрезка пополам и метод хорд). Поиск приближенного значения корня уравнения с нелинейной характеристикой можно осуществить графически, путем построения графика рассматриваемой функции y = f(x) и нахождения такого значения входного параметра x, при котором выполняется условие – y = f(x) 0, где y – выходной параметр технологической системы.
Установить отрезок [a, b], содержащий корень уравнения – это значит доказать, что на концах этого отрезка функция y = f(x) меняет свой знак. Для проверки выполнения этого условия необходимо, чтобы произведение значений функции на концах отрезка [a, b] было числом отрицательным, а именно f(a) · f(b) < 0.
На втором этапе шаг за шагом осуществляется уточнение значения корня с заданной степенью точности E (E0: E=0,1; 0,01; 0,001;…), используя какойлибо метод из вышеперечисленных.
Наиболее распространенными из итерационных методов являются метод деления отрезка пополам и метод простых итераций.
2.2. Метод деления отрезка пополам в нахождении корней уравнений Пусть нам известно уравнение с нелинейной характеристикой y = f(x), описывающее закон изменения выходного параметра технологической системы y от входного параметра x. Необходимо найти такое значение х, при котором выполняется условие y = f(x) = 0.
В соответствии с первым этапом реализации итерационных методов (см. п.
2.1) установим отрезок [a, b], содержащий решение (корень) нелинейного уравнения. Для этого подберем такие значения левой a и правой b границу отрезка [a, b] изменения входного параметра x, при которых выполняется условие – f(a) f(b) < 0, т. е. на концах отрезка [a, b] функция y = f(x) будет менять свой знак.
Проверку правильности выбора границ отрезка [a, b] можно также подтвердить путем построения графика рассматриваемой функции y = f(x) (рис. 2.1).
Рис. 2.1. Схема к установлению границ отрезка, содержащего корень нелинейного уравнения:
a – левая граница отрезка со значением функции в этой точке f(a) < 0 (число отрицательное);
b – правая граница отрезка со значением функции в этой точке f(b) > 0 (число положительное);
xk – искомый корень уравнения y = f(x), который будет находиться на отрезке [a, b] Определившись с отрезком, содержащим корень уравнения с нелинейной характеристикой, перейдем к реализации второго этапа – уточнения значения корня с заданной степенью точности E. Для этого реализуется итерационный процесс по методу деления отрезка пополам. В рамках первой итерации (шага) найдем начальное приближение x0 к корню xk нелинейного уравнения, поделив отрезок [a, b] пополам – x0 = (a + b) / 2. Рассчитаем значение функции в точке начального приближения f(x0) и проверим выполнение условия f(x0) E. Если это условие выполняется, то искомое значение корня xk будет соответствовать начальному приближению x0 (xk = x0), в противном случае нужно продолжить процесс уточнения корня нелинейного уравнения, реализовав следующую итерацию (шаг). Предположим, что условие f(x0) E не выполнилось. Реализуем вторую итерацию. В рамках второй итерации сначала исследуем значения функции y = f(x) на концах отрезков [a, x0] и [x0, b], которые появились в результате деления отрезка [a, b] пополам точкой начального приближения x0 с первой итерации. Отрезок, на концах которого функция y = f(x) меняет свой знак, принимается содержащим корень нелинейного уравнения. Предположим, что условие f(a) · f(x0) < 0 не выполняется, а условие f(x0) · f(b) < 0 выполняется, следовательно дальнейшее уточнение значения корня нужно вести на отрезке [x0, b]. Для этого отрезок [x0, b], содержащий корень нелинейного уравнения, делим пополам – x1 = (x0 + b) / 2. Тем самым, найдена точка нового приближения со второй итерацией. Рассчитаем значение функции в этой точке f(x1) и проверим выполнение условия f(x1) E. Предположим, что условие выполнилось, следовательно, искомое значение корня xk будет соответствовать приближению x1 со второй итерации (xk = x1). Если бы условие f(x1) E не выполнилось, то необходимо было бы реализовать следующую (третью) итерацию по уточнению значения корня уравнения с нелинейной характеристикой xk аналогичную по своей структуре первой и второй.
Таким образом, итерационный процесс по методу деления отрезка пополам будет продолжаться до тех пор, пока не выполнится условие f(xn) E, где xn – уточнение корня нелинейного уравнения с n-ой итерации. Количество итераций зависит от степени точности E и длины исходного отрезка [a, b], который содержит корень xk нелинейного уравнения. Чем выше степень точности E и больше длина отрезка [a, b], тем больше число шагов для уточнения искомого корня нужно выполнить, что предопределяет необходимость использования ЭВМ для автоматизации процесса и сокращения затрат времени на решение поставленной задачи. В соответствии с вышеизложенным, алгоритм метода деления отрезка пополам может быть представлен в виде блок-схемы на рис. 2.2.
Пример 8. Определить величину внешнего усилия N, воздействующего на крепежный болт, изготовленный из стали 45, которое может выдержать этот болт, если его диаметр d1 = 3 мм:
где N – внешнее усилие (усилие растяжения болта), кгс; [p] – допустимое напряжение при растяжении, кгс/мм2: [p] = 7,2 кгс/мм2 – для стали 45; d1 – внутренний диаметр резьбы болта, мм. Степень точности E = 0,01.
РЕШЕНИЕ. При известных [p] = 7,2 кгс/мм2 и заданном в качестве ограничения d1 = 3 мм, искомое значение N должно удовлетворять условию:
Рис. 2.2. Блок-схема алгоритма метода деления отрезка пополам Определим границы отрезка, содержащего корень этого нелинейного уравнения. Для этого табулируем исходную функцию и построим ее график (рис. 2.3).
Опираясь на рис. 2.3, в качестве отрезка, содержащего корень (решение) уравнения, можно выбрать отрезок [NЛ, NП] = [45, 65], где NЛ – левая граница отрезка, кгс; NП – правая граница, кгс. На границах этого отрезка функция y = 0,18 N 3 меняет свой знак относительно границы 2:
y Л = f ( N Л ) = 0,18 45 3 = 0,154 ; y П = f ( N П ) = 0,18 65 3 = 0,421. Следовательно, условие f(NЛ) · f(NП) < 0 выполняется:
Реализуем первую итерацию. Поделим отрезок [NЛ, NП] пополам:
Рассчитаем значение функции при усилии растяжения N0 = 55 кгс:
Рис. 2.3. Зависимость внутреннего диаметра резьбы болта d1 от усилия растяжения болта N:
1 – кривая d1 = f(N); 2 – граница внутреннего диаметра резьбы болта (d1= 3 мм);
3 – точка пересечения кривых 1 и 2 (примерное решение задачи) Проверим выполнение условия f(N0) E. Условие не выполняется (0,15 0,1). Следовательно, N0 не может быть принято за искомое решение.
Реализуем вторую итерацию. Предварительно проверим, на каком из отрезков [NЛ, N0] или [N0, NП] функция y = 0,18 N 3 меняет свой знак:
Новым отрезком, содержащим корень, является отрезок [NЛ, N0]=[45, 55].
Разделим отрезок [NЛ, N0] пополам:
Рассчитаем значение функции при усилии растяжения N1=50 кгс:
Проверим выполнение условия f(N1) E. Условие выполняется (0 0,01).
Следовательно, искомое значение корня NK будет соответствовать приближению N1 со второй итерации (NK = N1 = 50 кгс). Таким образом, усилие растяжения, которое может выдержать болт с внутренним диаметром резьбы d1 = 3 мм, изготовленный из стали 45, не должно превышать 50 кгс или 500 Н.
В соответствии с поставленной задачей (см. пример 8) разработаем алгоритм (рис. 2.4) и программу USILIE ее решения на языке TURBO PASCAL.
Рис. 2.4. Блок-схема алгоритма нахождения усилия растяжения болта методом деления
ПРОГРАММА USILIE
Uses Crt;
Label 10,20,30;
Var E,Nl,Np,yl,yp,N,y,Nk:Real;
Clrscr;
Write(’Задайте степень точности Е:’);
Redln(Е);
10: Write(’Введите значение левой границы усилия’);
Writeln(’растяжения болта Nл в кгс:’);
Readln(Nl);
Write(’Введите значение правой границы усилия’);
Writeln(’растяжения болта Nп в кгс:’);
Readln(Np);
yl:=Sqrt(0.18*Nl)-3;
yp:=Sqrt(0.18*Np)-3;