- •Лабораторная работа № 14
- •Теоретические сведения
- •Типовый вариант
- •Реализация типового варианта
- •Варианты исходных данных
- •Лабораторная работа № 14
- •Уравнений методом половинного деления
- •Постановка задачи
- •Используя метод половинного деления, вычислить с заданной точностью ( ) действительные корни заданного алгебраического уравнения .
- •Решить задачу в различных средах: Fortran, ms Excel и MathCad. Вариант №1
- •Содержание работы
- •Метод половинного деления (Контрольные вопросы – правильные варианты)
Метод половинного деления (Контрольные вопросы – правильные варианты)
КАТЕГОРИЯ 1. Фрагмент программы для приближенного расчета корня уравнения F(x)=0 (функция задана в другом месте программы) методом половинного деления на интервале [a,b] с заданной точностью eps.
implicit none ! обязательное оъявление имен
real F ! заданная функция
real C, & ! середина интервала изоляции корня
L, & ! левая текущая граница интервала изоляции корня
R ! правая текущая граница интервала изоляции корня
real a,b ! начальные левая и правая границы интервала
real kor ! корень уравнения
real eps ! заданная точность
... ! ввод начальных данных a,b,eps
! расчет корня методом половинного деления
L=a ! начальное значение левой текущей границы интервала
R=b ! начальное значение правой текущей границы интервала
do while(abs(R-L)>eps) ! проверка на завершение поиска корня
C=(R+L)/2 ! расчет середины интервала
if(F(L)*F(C)>=0)then ! проверка знака функции в С
L=C ! смещение левой границы интервала в С
else
R=C ! смещение правой границы интервала в С
endif
enddo ! конец тела цикла
kor=(R+L)/2 ! приближенное значение корня
КАТЕГОРИЯ 2. Модуль для объявления и инициализации глобальных переменных.
Объявление и инициализация глобальных переменных вещественного типа первой точности (a=-2.0, b=-1.0, eps=1e-5, kor) для поиска корня и сответствующих текстовых переменных длиной 12 символов (text_a, text_b, text_eps, text_kor) для обмена данных с окнами диалоговой панели.
Вариант 1
module Lab14
implicit none
real::a=-2.0 ! левая граница интервала изоляции корня
real::b=-1.0 ! правая граница интервала изоляции корня
real::eps=1e-5 ! точность вычислений
real::kor ! искомый корень уравнения
character(12)::text_a='',text_b=''
character(12)::text_eps=''
character(12)::text_kor=''
end module Lab14
Вариант 2
module Lab14
real(4):: &
a=-2.0, & ! левая граница интервала изоляции корня
b=-1.0, & ! правая граница интервала изоляции корня
eps=1e-5, & ! точность вычислений
kor; ! искомый корень уравнения
character(12):: &
text_a='', &
text_b='', &
text_eps='', &
text_kor='';
contains
end module
Вариант 3
module Lab14
real*4 &
a, & ! левая граница интервала изоляции корня
b, & ! правая граница интервала изоляции корня
eps, & ! точность вычислений
kor; ! искомый корень уравнения
data a,b,eps/-2.0,-1.0,1e-5/ ! инициализация
character*12 text_a, text_b, text_eps, text_kor;
data text_a,text_b,text_eps,text_kor/4*””/ ! инициализация
end
Вариант 4
module Lab14
real a/-2.0/, b/-1.0/, eps/1e-5/, kor; ! инициализация
character &
text_a*12/""/, text_b*12/""/, text_eps*12/""/, text_kor*12/""/;
end module
КАТЕГОРИЯ 3. Реализация заданной функции.
Функция .
Вариант 1
! заданная функция для поиска корня
real function F(x) ! заголовок функции
implicit none ! обязательное обявление имен
real x ! значение аргумента
F=x**3-2.8*x**2-6.2*x+3.7 ! значение функции-результат
end function F ! конец функции
Вариант 2
! заданная функция для поиска корня
function F(x) ! заголовок функции
implicit none ! обязательное обявление имен
real x ! объявление аргумента
real F ! объявление имени функции
F=x**3-2.8*x**2-6.2*x+3.7 ! значение функции-результат
end function ! конец функции
Вариант 3
! заданная функция для поиска корня
function F(x) ! заголовок функции
F=x**3-2.8*x**2-6.2*x+3.7 ! значение функции-результат
end ! конец функции
Вариант 4
! заданная функция для поиска корня
real function F(x) ! заголовок функции
implicit none ! обязательное обявление имен
real x ! объявление аргумента
F=x**3-2.8*x**2-6.2*x+3.7 ! значение функции-результат
end ! конец функции
