|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Пояснения. Суть используемого численного метода
Корень локализован в интервале поиска [a,b]. Условие локализации: корень в интервале единственный и значения функции на концах интервала имеют разные знаки (произведение этих значений меньше ноля). В процессе поиска на каждом шаге последовательного приближения к корню (на каждой итерации) из интервала поиска выделяется половина, содержащая корень. Условием этого является наличие разных знаков значений функции на левой границе интервала поиска и в его середине (в середине интервала берется пробная точка, делящая его пополам, отсюда происходит содержательное название метода – “деление отрезка пополам”). Основным условием окончания процесса поиска является сокращение длины интервала поиска до задаваемой малой величины, определяющей допустимую погрешность вычисления корня (например, 0,01). Дополнительным условием окончания процесса поиска служит равенство нолю значения функции в пробной точке (в центре интервала поиска), когда длина интервала еще большая. Алгоритм метода поиска корня формально описан во вспомогательной подпрограмме с именем “Расчет”. При записи в подпрограмме оператора цикла Do…Loop со служебным словом While (пока), помещенным в начале, составное условие для входа и продолжения цикла должно быть истинным, когда длина интервала поиска и значение функции в пробной (центральной) точке больше допустимой погрешности. Такое соединение условий реализуется логической операцией “And” (“и”). Нарушение хотя бы одного из указанных выше условий входа в цикл обращает составное условие в ложь и приводит к выходу из цикла. А если в самом начале пробная точка окажется в точке корня, то входа в цикл не будет. Последняя ситуация (нет входа в цикл) приводит к неопределенности динамического массива с именем “mas”, содержащего приближения к корню (координаты центральных точек интервала поиска) и наращиваемого по длине по мере надобности (количество элементов определяется счетчиком N). Если не было входа в цикл (N=0), то искусственно массив формируется из одного элемента, которому передается значение координаты первой пробной точки, являющейся точкой корня. Динамический массив “mas” определяется в два этапа: сначала в инструкции “Dim” с помощью двух подряд круглых скобок (открывающей и закрывающей), помещаемых после имени массива, принципиально объявляется массив; далее в цикле с помощью инструкции “ReDim” (Re turn Dim ension – возврат к определению размерности) задаются границы нумерации элементов массива. Служебное слово “Preserve” является обязательным, без этого слова значения элементов массива не сохраняются в памяти. В подпрограмме “Расчет” (в самом ее начале) проверяется условие локализации. В условном операторе, выполняющем эту проверку, фигурирует обратное условие. Если оно истинно, то выводится соответствующее сообщение и выполняется выход (Exit) из подпрограммы. А перед этим величине “x” (переменной универсального типа Variant, соответствующей фактическому параметру “корень”, присваивается значение некоторой символьной константы (символы помещаются в кавычки, например, “???”; возможна пустая строка – двое кавычек (открывающих и закрывающих) подряд; тогда на форме проекта поле значения корня будет пустым). Если бы определить формальную переменную “x” и соответствующую ей в главной подпрограмме фактическую переменную “корень” как числовую, а при отсутствии корня в интервале поиска не присвоить этой переменной никакого значения, то в поле вывода автоматически был бы вывод значения “0” (ноль), что не соответствует истине. Дополнительно в данный проект включена возможность наблюдать за процессом последовательных приближений к корню. Для этого в подпрограмме расчета накапливается упомянутый выше массив “mas”. В конце данной подпрограммы этот массив передается на форму в списковое поле с именем “List1” (стандартное имя ListBox). В программу еще включена возможность отображать на форме значения функции при отдельных значениях приближений к корню. Это реализуется в подпрограмме с именем “List1”. Она выполняется при щелчке ЛКМ на выбранной строке в поле “List1”. Значение, отображенное символьно в строке, считывается и в преобразованном числовом виде передается как аргумент функции с именем “F”, определяющей выражение уравнения, а вычисленное значение функции выводится на форму в поле с именем “Text5”. В качестве примера в данном проекте взято уравнение, выражающееся функцией f(x)=(x-1)^2-1 и имеющее два корня: x1=0 и x2=2. В процессе работы следует выполнить 4 варианта поиска корня: 1) на интервале [1,6]; 2) на интервале [1,3]; 3) на интервале [3,6]; 4) на интервале [-1,6]. Первые два варианта дают решение x=2. В варианте 3 нет решения, так как на заданном интервале корня нет. В варианте 4 также нет решения, но в данном случае так как на заданном интервале имеется два корня. 16. Завершить работу щелчком ЛКМ на пункте «Завершение сеанса <имя группы>». Содержание отчета Отчет должен содержать: · номер, название и цель работы; · краткую теоретическую часть, включающую описание формата оператора цикла с условием, алгоритма метода бисекции поиска корня нелинейного уравнения; · результаты выполнения работы согласно заданию, выданному преподавателем, а именно, текст составленных программ с пояснениями к ним, структуру окна формы задачи, описание действий по выполнению программ, результаты выполнения программы; · заключение по работе.
Контрольные вопросы
1. Синтаксис оператора цикла с условием. 2. До каких пор продолжается выполнение цикла Do While … Loop? 3. До каких пор продолжается выполнение цикла Do Until … Loop? 4. С помощью какого оператора реализуется преждевременный выход из цикла? 5. Где в цикле Do While … Loop размещается условие?
ЛАБОРАТОРНАЯ РАБОТА №17
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |