Если Вы еще раз посмотрите вкладку Sourse для функции OnBt1() (см. рис. 8), то увидите, что неэффективной строкой осталась строка, содержащая условия выполнения метода, которую уже невозможно оптимизировать.
Рис. 8
Рис. 9
Второе изменение.
Т.к. все строки занимают достаточно малое время выполнения и содержат только простые операции, то исправлять в коде программы больше нечего. Существует другой метод решения нелинейного уравнения – комбинированный метод хорд и касательных.
Условия применения метода те же, что и для метода Ньютона.
Возможны два случая:
· если f (a)×f ¢¢ (x) > 0, то слева применяем метод Ньютона, а справа метод хорд.
Формулы метода:
· если f (b)× f ¢¢ (x) > 0, то слева применяем метод хорд, а справа метод Ньютона.
Формулы метода:
В качестве точек начального приближения выбираются: x0 = a, .
Условие остановки итерационного процесса: , при выполнении этого условия любую точку из отрезка можно принять за корень уравнения с точностью e. Чаще всего принимают: .
Вы можете сказать, что этот метод более громоздкий по сравнению с методом Ньютона. Давайте все-таки посмотрим.
· Закройте True Time.
На панели FileView имеется файл «методы.txt».
· Выберите двойным щелчком указанный файл.
В данном файле приводятся коды метода Ньютона и комбинированного метода хорд и касательных.
· Вставьте код комбинированного метода хорд и касательных в функцию OnBt1() вместо старого кода.
· Выполните компилирование программы (необходимо выбрать в меню VisualStudioBuild| Rebuildall), запустите программу на выполнение (Ctrl+F5) и посмотрите результаты.
· Теперь снова сделайте ремаркой последние три строки, откомпилируйте с TrueTime и запустите с TrueTime. Нажмите кнопку RunMethod и затем Exit.
Полученная статистика показана на рис. 10.
Время работы функции OnBt1() и общее время работы приложения еще немного уменьшилось.
· Посмотрите подробно выполнение функции OnBt1() (перейдите на вкладку Source [TTDlg.cpp]).
Основные формулы метода вызывались два раза. Таким образом, комбинированный метод хорд и касательных более эффективен, чем метод Ньютона.
В результате выполненных двух изменений время выполнения функции OnBt1() было уменьшено с 6.40 микросекунд до 3.29, общее время работы приложения уменьшено с 3 секунд до 1.4.
Используя TrueTime мы увеличили эффективность программы, а эффективность – один из важных показателей качества программы.
Рис. 10
Меню программы True Time
Меню Файл:
o Open – открыть файл проекта, файл сессии или исполняемый файл;
o Close – закрыть файл активной сессии;
o Close Project – закрыть файл активного проекта;
o Save – сохранить все данные активной сессии в файл (для возможности повторного просмотра);
o Save As – сохранить файл активной сессии под новым именем;
o Save All – сохранить все файлы;
o Export Function List – сохранить текущее содержание вкладки Function в файл с расширением .CSV (файл открывается при помощи Microsoft Excel);
o Print – распечатать текущую вкладку активной сессии;
o Print Preview – предварительный просмотр файла активной сессии перед печатью;
o Print Setup – выбор установок и опций печати.
МенюEdit:
o Copy – копировать выбранный текст в буфер обмена;
o Select All – выбрать весь текст в активной вкладке;
o Clear – очистить окно вывода;
o Find – найти указанный для поиска текст по указанному критерию;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.