
- •Лабораторная работа № 15
- •Теоретические сведения
- •Типовый вариант
- •Реализация типового варианта
- •Варианты исходных данных
- •Используя комбинированный метод, вычислить с заданной точностью ( ) действительные корни заданного алгебраического уравнения .
- •Решить задачу в различных средах: Fortrani, ms Excel и MathCad.
- •Комбинированный метод (Контрольные вопросы – правильные варианты)
Комбинированный метод (Контрольные вопросы – правильные варианты)
КАТЕГОРИЯ 1. Фрагмент программы для приближенного расчета корня уравнения F(x)=0 (функция задана в другом месте программы) комбинированным методом на интервале [a,b] с заданной точностью eps.
implicit none ! обязательное обявление имен
real buff, & ! буферная переменная
da, & ! изменение границы A (методом хорд)
db; ! изменение границы B (методом касательных)
real a,b ! начальные левая и правая границы интервала
real kor ! корень уравнения
real eps ! заданная точность
real F ! заданная функция
real F1 ! первая производная заданной функции
real F11 ! вторая производная заданной функции
... ! ввод начальных данных a,b,eps
if(F(b)*F11(b) < 0)then ! проверка функции на вогнутость/выпуклость
buff=a ! смена местами А и В для выпуклой функции
a=b
b=buff
endif
do while(abs(b-a)>eps) ! проверка на близость к корню границ
da=F(a)*(b-a)/(F(b)-F(a)) ! приближение методом хорд
a=a-da
db=F(b)/F1(b) ! приближение методом касательных
b=b-db
enddo
kor=(a+b)/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 ! конец функции
!****************************************************************************
real function F1(x) ! первая производная заданной функции
implicit none ! обязательное обявление имен
real x ! значение аргумента
F1=3*x**2-5.6*x-6.2 ! значение первой производной
end function F1 ! конец функции
!****************************************************************************
real function F11(x) ! вторая производная заданной функции
implicit none ! обязательное обявление имен
real x ! значение аргумента
F11=6*x-5.6 ! значение второй производной
end function F11 ! конец функции
Вариант 2
function F(x) ! заголовок функции
implicit none ! обязательное обявление имен
real x ! объявление аргумента
real F ! объявление имени функции
F=x**3-2.8*x**2-6.2*x+3.7 ! значение функции-результат
end function ! конец функции
!****************************************************************************
function F1(x) ! первая производная заданной функции
implicit none ! обязательное обявление имен
real x ! значение аргумента
real F1 ! объявление имени функции
F1=3*x**2-5.6*x-6.2 ! значение первой производной
end function ! конец функции
!****************************************************************************
function F11(x) ! вторая производная заданной функции
implicit none ! обязательное обявление имен
real x ! значение аргумента
real F11 ! объявление имени функции
F11=6*x-5.6 ! значение второй производной
end function ! конец функции
Вариант 3
function F(x) ! заголовок функции
F=x**3-2.8*x**2-6.2*x+3.7 ! значение функции-результат
end ! конец функции
!****************************************************************************
function F1(x) ! первая производная заданной функции
F1=3*x**2-5.6*x-6.2 ! значение первой производной
end ! конец функции
!****************************************************************************
function F11(x) ! вторая производная заданной функции
F11=6*x-5.6 ! значение второй производной
end ! конец функции
Вариант 4
real function F(x) ! заголовок функции
implicit none ! обязательное обявление имен
real x ! объявление аргумента
F=x**3-2.8*x**2-6.2*x+3.7 ! значение функции-результат
end ! конец функции
!****************************************************************************
real function F1(x) ! первая производная заданной функции
implicit none ! обязательное обявление имен
real x ! значение аргумента
F1=3*x**2-5.6*x-6.2 ! значение первой производной
end ! конец функции
!****************************************************************************
real function F11(x) ! вторая производная заданной функции
implicit none ! обязательное обявление имен
real x ! значение аргумента
F11=6*x-5.6 ! значение второй производной
end ! конец функции