Метод половинного деления

Автор работы: Сергей Лищинский, 01 Июня 2010 в 16:18, курсовая работа

Краткое описание

Паскаль − один из наиболее распространенных процедурно-ориентированных языков программирования 80 - 90-х годов, имеет свою достаточно интересную историю, начало которой положило объявление в 1965 г. конкурса по созданию нового языка программирования - преемника Алгола - 60. Участие в конкурсе принял швейцарский ученый Николаус Вирт, который работал на факультете информатики Стэндфордского университета. Проект, предложенный им, был отвергнут комиссией в 1967 г. Но Вирт не прекратил работу. Вернувшись в Швейцарию, совместно с сотрудниками Швейцарского федерального института технологии в Цюрихе, он уже в 1968 г. разработал новую версию языка Паскаль, названного так в честь великого французского математика и механика Блеза Паскаля, создавшего в 1642 г. первую счетную машину. В 1971 г. Н. Вирт выпустил описание своего языка, а в 1975 г. было разработано руководство для пользователей версии Паскаля, которая практически легла в основу стандарта языка. Но стандарт языка появился только в 1982 г.

Содержание работы

введение 4
1. постановка задачи 5
2. метод половинного деления 6
3 .соответствие между переменными, принятыми при описании задачи и в програме 9
4. структурная схема программ и ее описание 12
5. листинг програмы 20
6. контрольный пример и анализ результата 21
7. инструкция пользователя 26
заключение 27
список литературы 28
приложения 29
приложение а 30
приложение б. 32
приложение д. 33

Содержимое работы - 1 файл

Курсовой метод половинного деления.doc

— 1.02 Мб (Скачать файл)

СОДЕРЖАНИЕ 
 

 

      

ВВЕДЕНИЕ

       Паскаль − один из наиболее распространенных процедурно-ориентированных языков программирования 80 - 90-х годов, имеет  свою достаточно интересную историю, начало которой положило объявление в 1965 г. конкурса по созданию нового языка программирования - преемника Алгола - 60. Участие в конкурсе принял швейцарский ученый Николаус Вирт, который работал на факультете информатики Стэндфордского университета. Проект, предложенный им, был отвергнут комиссией в 1967 г. Но Вирт не прекратил работу. Вернувшись в Швейцарию, совместно с сотрудниками Швейцарского федерального института технологии в Цюрихе, он уже в 1968 г. разработал новую версию языка Паскаль, названного так в честь великого французского математика и механика Блеза Паскаля, создавшего в 1642 г. первую счетную машину. В 1971 г. Н. Вирт выпустил описание своего языка, а в 1975 г. было разработано руководство для пользователей версии Паскаля, которая практически легла в основу стандарта языка. Но стандарт языка появился только в 1982 г.

       Предназначенный для обучения, язык оказался очень  простым и одновременно строгим. Однако вскоре выяснилось, что он также является достаточно эффективным в самых различных приложениях. Pascal поддерживает самые современные методологии проектирования программ (нисходящее, модульное проектирование, структурное программирование). В связи с этим появились многочисленные реализации языка для разных машинных архитектур и наиболее удачной и популярной оказалась разработка фирмы Borland International для персональных IBM - совместимых ЭВМ. Эта реализация языка получила название Turbo Pascal (Турбо Паскаль) и имеет уже несколько версий.

       Turbo Pascal представляет собой систему  программирования, включающую в себя текстовый редактор, компилятор, компоновщик, загрузчик, отладчик, файловую систему, системную библиотеку, справочную систему. Все эти компоненты объединены в интегрированную среду с многооконным интерфейсом и развитой системой меню, что обеспечивает высокую производительность труда программиста при создании программ производственного, научного и коммерческого назначения.

 

       

1. ПОСТАНОВКА ЗАДАЧИ

      Написать  программу на языке программирования Pascal, выполняющую решение нелинейного уравнения. Результат работы программы должен выводиться на экран и в файл.

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

    1-Ввести данные  из файла

    2-Ввести данные  с клавиатуры

    3-Отобразить  результат

    4-Сохранить  результат в файл

    0-Выход

      Отладить  программу на уравнении f(x)=x2-x-6  с точностью 0,001 

 

2. ВЫБОР И ОПИСАНИЕ  МЕТОДОВ РЕШЕНИЯ

      Процесс нахождения приближенного значения корней уравнения можно подразделить на два этапа 1) отделение корней; 2) уточнение корней до заданной степени точности. Корень ξ считается отделённым на отрезке [a,b], если на этом отрезке уравнение  

      : метод половинного деления, Ньютона

2.1. МЕТОД ПОЛОВИННОГО ДЕЛЕНИЯ

     Пусть дано уравнение f(x) = 0, где f (х) – непрерывная функция. Требуется найти корень этого уравнения ξ с точностью до ε, где е – некоторое положительное достаточно малое число.

     Будем считать, что корень ξ отделен и находится на отрезке [а, b], т. е. имеет место неравенство а ≤ ξ ≤ b. Числа а и b – приближенные значения корня ξ соответственно с недостатком и с избытком. Погрешность этих приближений не превышает длины отрезка bа. Если bа ≤ε, то необходимая точность вычислений достигнута, и за приближенное значение корня ξ можно принять либо а, либо b. Но если bа > ε, то требуемая точность вычислений не достигнута и необходимо сузить интервалов котором находится корень ξ, т. е. подобрать такие числа а и b, чтобы выполнялись неравенства a < ξ < b и . При вычисления следует прекратить и за приближенное значение корня с точностью до ε принять либо а, либо b. Следует отметить, что значение корня будет более точным, когда за приближенное значение корня приняты не концы отрезка а и b, а середина этого отрезка, т.е. . Погрешность в этом случае не превышает величины .

     Метод проб. Пусть дано уравнение f(x) = 0 [f(x) – непрерывная функция] и корень ε отделен на отрезке [а, b], т. е. f(а) ∙ f(b) < 0, причем bа > ε. Требуется найти значение корня ξ с точностью до ε (рис. 2.1)

 

     

Рис. 2.1

Принцип решения уравнения типа y=f(x) методом проб

     Рис. 2.2

     Принцип решения уравнения типа y=f(x) методом половинного деления 

 

      На отрезке [a, b] выберем произвольным образом точку a1, которая разделит его на два отрезка [a, a1] и [a1,b]. Из этих двух отрезков следует выбрать тот, на концах которого функция принимает значения, противоположные по знаку. В нашем примере f(а) ∙ f(a1) > 0, f(a1) ∙ f(b) < 0; поэтому следует выбрать отрезок [a1,b]. Затем на этом суженом отрезке опять произвольным образом возьмем точку а2 и найдем знаки произведений f(a1) ∙ f(a2) и f(a2) ∙ f(b). Так как f(a2f(b) < 0, то выбираем отрезок [a2, b]. Этот процесс продолжаем до тех пор, пока длина отрезка, на котором находится корень, не станет меньше ε. Корень ξ получим как среднее арифметическое концов найденного отрезка, причем погрешность корня не превышает ε/2.

     Метод проб в таком виде на ЭВМ не применяется. Для составления программ и расчетов на ЭВM метод проб применяется в виде так называемого метода половинного деления.

     Пусть корень ξ уравнения f(х) = 0 отделен и находится на отрезке [a, b], т.е. f(a) ∙ f(b) < 0, причем bа > ε [здесь f(х) – непрерывная функция]. Как и ранее, возьмем на отрезке [a, b] промежуточную точку, однако не произвольным образом, а так, чтобы она являлась серединой отрезка [a, b], т. е. с = (а + b)/2. Тогда отрезок [a, b] точкой с разделится на два равных отрезка [а, с] и [с, b], длина которых равна (bа)/2 (рис. 2.2). Если f(с) = 0, то с – точный корень уравнения f(х) = 0. Если же f(с) ≠ 0, то из двух образовавшихся отрезков [a, с] и [с, b] выберем тот, на концах которого функция f(х) принимает значения противоположных знаков; обозначим его [al, b1]. Затем отрезок [al, b1] также делим пополам и проводим те же рассуждения. Получим отрезок [а2, b2], длина которого равна (bа)/22. Процесс деления отрезка пополам производим до тех пор, когда на каком-то n-м этапе либо середина отрезка будет корнем уравнения (случай, весьма редко встречающийся на практике), либо будет получен отрезок [an, bn] такой, что bnаn = (b – а)/2n ≤ ε и аn ≤ ξ ≤ bn (число n указывает на количество проведенных делений). Числа аn и bn – корни уравнения f(х) = 0 с точностью до ε. За приближенное значение корня, как указывалось, выше, следует взять ξ = (an + bn)/2, причем погрешность не превышает (bа)/2n+1.

2.2. МЕТОД ХОРД

      Метод хорд является одним из распространенных методов решения алгебраических и трансцендентных уравнений. В литературе он также встречается под названиями «метода ложного положения» (regula falsi), «метода линейного интерполирования» и «метода пропорциональных частей».

      Пусть дано уравнение f(х) = 0, где f (х) – непрерывная функция, имеющая в интервале [а, b] производные первого и второго порядков. Корень считается отделенным и находится на отрезке [а, b], т.е. f(a)-f (b) < 0.

      Идея  метода хорд состоит в том, что  на достаточно малом промежутке [а, b] дуга кривой у = f (x) заменяется стягивающей ее хордой. В качестве приближенного значения корня принимается точка пересечения хорды с осью Ох.

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

      Рассмотрим  случаи, когда первая и вторая производные  имеют одинаковые знаки, т. е, f'(х) ∙ f'' (х) > 0.

      Пусть, например, f(a) < 0, f(b) > 0, f'(х) > 0, f''(х) > 0 (рис. 3.18, а). График функции проходит через точки А0 (a; f(a)), В(b; f(b))- Искомый корень уравнения f(х) = 0 есть абсцисса точки пересечения графика функции у = f(х) с осью Ох. Эта точка нам неизвестна, но вместо нее мы возьмем точку x1 пересечения хорды А и В с осью Ох. Это и будет приближенное значение корня.

      Уравнение хорды, проходящей через точки А0 и В, имеет вид

      

      Найдем  значение х = х1, для которого у = 0:

      

      Эта формула носит название формулы  метода хорд. Теперь корень ξ находится внутри отрезка [x1, b]. Если значение корня х1 нас не устраивает, то его можно уточнить, применяя метод хорд к отрезку [х1, b].

Рис

 

       Соединим точку А1 (x1; f (x1) с точкой В (b; f (b)) и найдем х2 – точку пересечения хорды А1В с осью Ох:

      

      Продолжая этот процесс, находим

      

      и вообще

      

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

      По  приведенным выше формулам вычисляются корни и для случая, когда f(а) > 0, f(b) < 0, f'(x) < 0, f''(x) < 0 (рис. 3.18, б).

      Теперь  рассмотрим случаи, когда первая и  вторая производные имею разные знаки, т.е. f'(x) ∙ f'(x) < 0.

      Пусть, например, f(a) > 0, f(b) < 0, f'(х) < 0, f''(х) > 0 (рис. 3.19, а). Соединим точки A (a; f (а)) и В0 (b; f (b)) и запишем уравнение хорды, проходящей через А и B0:

      

      Найдем  х1, как точку пересечения хорды с осью Ох, полагая у = 0:

      

      Корень  ξ теперь заключен внутри отрезка [a, x1]. Применяя меч од хорд к отрезку [а, x1], получим

      

      и вообще

      

      По  этим же формулам находится приближенное значение корня и для случая, когда f(а) < 0, f(b)>0, f'(х) > 0, f''(х) < 0 (рис. 3.19, б).

      Итак, если f'(х) ∙ f"(х) > 0, то приближенный корень вычисляется по формулам (1) и (2); если же f(х) ∙ f"(x) < 0, то – по формулам (3) и (4).

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

      Если  f(b) ∙ f'' (х) > 0, то неподвижен конец b, а все приближения к корню ξ лежат со стороны конца а [формулы (1) и (2)]. Если f(а)×f''(x) > 0. то неподвижен конец а, а все приближения к корню ξ лежат со стороны конца b [формулы (3) и (4).

2.3. МЕТОД НЬЮТОНА (МЕТОД КАСАТЕЛЬНЫХ)

     Пусть корень уравнения f (х) = 0 отделен на отрезке [а, b], причем f'(х) и f"(x) непрерывны и сохраняют постоянные знаки на всем отрезке [а, b].

     Геометрический  смысл метода Ньютона состоит в том, что дуга кривой у = f(х) заменяется касательной к этой кривой (отсюда и второе название: метод касательных).

     Первый  случай. Пусть f(a) < 0, f(b) > 0, f’(х) > 0, f”(х) > 0 (рис. 1, а) или f(а) > 0, f(b) < 0, f’(х) < 0, f ''(х) < 0 (рис. 1, б). Проведем касательную к кривой у = f(x) в точке B0(b; f(b)) и найдем абсциссу точки пересечения касательной с осью . Известно, что уравнение касательной в точке В0(b; f(b)) имеет вид

     

Полагая у = 0, х = х1, получим

           (1)

Информация о работе Метод половинного деления