Подпрограмма отделения корней нелинейных уравнений
ПРИЛОЖЕНИЕ 1
SUBROUTINE OTKOR (KSH,X1,X2)
* ОТДЕЛЕНИЕ КОРНЕЙ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
* KSH - КОЛИЧЕСТВО ШАГОВ ПО ОСИ АБСЦИСС
* X1,X2 - ЗНАЧЕНИЯ Х, ПРИ КОТОРЫХ F(X1) * F(X2) < 0
* X0 - НАЧАЛЬНОЕ ЗНАЧЕНИЕ Х
* SH - ШАГ ДВИЖЕНИЯ ПО ОСИ Х
PRINT*,’ ВВЕДИТЕ X0,SH ‘
READ(5,*) X0,SH
KSH =0
X1= X0
1 X2= X1+SH
KSH= KSH+1
IF (KSH.GT.100) GO TO 5
F1=F(X1)
F2=F(X2)
IF (F1*F2) 3,3,2
2 X1=X2
GO TO 1
3 PRINT 4,X1,X2,F1,F2
4 FORMAT (5X,'КОРЕНЬ УРАВНЕНИЯ НАХОДИТСЯ В ИНТЕРВАЛЕ '/
*21X,’X1=’,F8.2,6X,’X2=’,F8.2,/12X,’ПРИ ЭТОМ F(X1)= ’,F8.2,
*3X,’F(X2)=’,F8.2)
GO TO 10
5 PRINT 6,KSH,F1,F2
6 FORMAT (5X,’ПОСЛЕ ‘,I4,’ ШАГОВ ПЕРЕМЕНЫ ЗНАКА ‘/
* ’ФУНКЦИИ НЕ ПРОИЗОШЛО ‘/ 10X,’F1=’,F8.2,5X,’F2=’,F8.2)
10 RETURN
END
FUNCTION F(X)
* Решаемое уравнение
F=COS(2*X) -.25
END
Примечание. Подпрограмма FUNCTION F(X) в данном случае относится к уравнению COS2-0.25=0. Для каждого другого решаемого уравнения оператор F=... в подпрограмме F(X) пишется заново.
ПРИМЕР РЕШЕНИЯ УРАВНЕНИЯ МЕТОДОМ ПОЛОВИННОГО ДЕЛЕНИЯ
ПРИЛОЖЕНИЕ 2
PROGRAM RESH
* Головная программа
DO 5 N=6,7
WRITE(N,1)
1 FORMAT(5X,'РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ'/
*5X,'МЕТОДОМ ПОЛОВИНОГО ДЕЛЕНИЯ')
WRITE(N,2)
2 FORMAT(5X,'РЕШАЕМОЕ УРАВНЕНИЕ Y=COS(2*X)-0.25')
5 CONTINUE
CALL OTKOR(N,X1,X2)
IF(N.GT.100) GO TO 10
PRINT*,’Введите допускаемую погрешность EPS’
READ(5,*)EPS
CALL DELPO (X1,X2,EPS,X,K)
CALL IDRES(X1,X2,EPS,X,K)
10 STOP
END
SUBROUTINE DELPO (A,B,EPS,X,K)
* РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
* МЕТОДОМ ПОЛОВИННОГО ДЕЛЕНИЯ
K=0
X1=A
X2=B
1 X=(X1+X2)*0.5
K=K+1
C=F(X)
IF (ABS(C).LE.EPS) GO TO 4
IF ((X2-X1).LE.EPS) GO TO 3
IF (C*F(X2).LT.0.) GO TO 2
X2=X
GO TO 1
2 X1=X
GO TO 1
3 X=(X1+X2)*0.5
4 RETURN
END
SUBROUTINE IDRES (XN,XK,EPS,X,K)
* РАСПЕЧАТКА ИСХОДНЫХ ДАННЫХ И РЕЗУЛЬТАТОВ РАСЧЕТА
C=F(X)
DO 20 I=6,7
WRITE(I,1)
1 FORMAT(//2X,16(‘-‘), ’ ИСХОДНЫЕ ДАННЫЕ’, 16(‘-‘))
WRITE(I,2)XN,XK,EPS
2 FORMAT (/2X,’НАЧАЛО ОТРЕЗКА XN=’,F6.3/2X,
* ’КОНЕЦ ОТРЕЗКА XK=’,F6.3/2X,
* ‘ДОПУСКАЕМАЯ ПОГРЕШНОСТЬ EPS=’,F8.6)
WRITE(I,3)
3 FORMAT(//2X,14(‘-‘),’РЕЗУЛЬТАТЫ РАСЧЕТА’,14(‘-‘))
WRITE(I,4)X,C,K
4 FORMAT(/2X,’ИСКОМЫЙ КОРЕНЬ ‘,6X,’X=’,F10.6/
*2X,’ЗНАЧЕНИЕ ФУНКЦИИ’,3X,’F(X)=’,F10.6/
*2X,’КОЛИЧЕСТВО ИТЕРАЦИЙ K=’,I3)
WRITE(I,5)
5 FORMAT(40('='))
20 CONTINUE
END
Примечание. Автоматически созданный файл результатов “FT07F001”
РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
МЕТОДОМ ПОЛОВИННОГО ДЕЛЕНИЯ
РЕШАЕМОЕ УРАВНЕНИЕ COS(2*X)-0.25= 0
------------ ИСХОДНЫЕ ДАННЫЕ---------------
НАЧАЛО ОТРЕЗКА XN= -2.500
КОНЕЦ ОТРЕЗКА XK= -2.000
ДОПУСКАЕМАЯ ПОГРЕШНОСТЬ EPS= 0.000100
-----------РЕЗУЛЬТАТЫ РАСЧЕТА--------------
ИСКОМЫЙ КОРЕНЬ X= -2.482537
ЗНАЧЕНИЕ ФУНКЦИИ F(X)= 0.000005
КОЛИЧЕСТВО ИТЕРАЦИЙ K= 12.
======================================
Примечание. Текст подпрограммы OTKOR приведен в приложении 1.
ПРИМЕР РЕШЕНИЯ УРАВНЕНИЯ МЕТОДОМ ХОРД
ПРИЛОЖЕНИЕ 3
PROGRAM RESH
* Главная программа
DO 5 N=6,7
WRITE(N,1)
1 FORMAT(//15X,'РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ'/
*15X,МЕТОДОМ ХОРД')
WRITE(N,2)
2 FORMAT(15X,'РЕШАЕМОЕ УРАВНЕНИЕ Y=COS(2*X)-0.25')
5 CONTINUE
CALL OTKOR(N,X1,X2)
IF(N.GT.100) GO TO 10
CALL KHORD (X1,X2,EPS,X,K)
CALL IDRES(X1,X2,EPS,X,K)
10 STOP
END
SUBROUTINE KHORD(A,B,EPS,X,K)
* РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
* МЕТОДОМ ХОРД
PRINT*,'ВВЕДИТЕ ДОПУСКАЕМУЮ ПОГРЕШНОСТЬ EPS'
READ(5,*)EPS
K=0
X1=A
X2=B
1 P=F(X1)
2 Q=F(X2)
X=X1-(X2-X1)*P/(Q-P)
K=K+1
C=F(X)
IF (ABS (C).LE.EPS) GO TO 5
IF (ABS (X2-X1).LE.2*EPS) GO TO 4
IF (C*Q.LT.0.) GO TO 3
X2=X
GO TO 2
3 X1=X
GO TO 1
4 X=(X1+X2)*0.5
5 RETURN
END
Результаты вычислений в файле “FT07F001”
РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ МЕТОДОМ ХОРД
РЕШАЕМОЕ УРАВНЕНИЕ Y = COS(2*X)-0.25
-------------- ИСХОДНЫЕ ДАННЫЕ------------------
НАЧАЛО ОТРЕЗКА XN= -2.500
КОНЕЦ ОТРЕЗКА XK= -2.000
ДОПУСКАЕМАЯ ПОГРЕШНОСТЬ EPS= 0.000100
--------------РЕЗУЛЬТАТЫ РАСЧЕТА-----------------
ИСКОМЫЙ КОРЕНЬ X= -2.482525
ЗНАЧЕНИЕ ФУНКЦИИ F(X)= 0.00005
КОЛИЧЕСТВО ИТЕРАЦИЙ K= 2.
======================================
ПРИМЕР РЕШЕНИЯ УРАВНЕНИЯ МЕТОДОМ НЬЮТОНА
ПРИЛОЖЕНИЕ 4
PROGRAM RESH
|
DO 5 N=6,7
WRITE(N,1)
1 FORMAT(//15X,’РЕШЕНИЕ НЕЛИНЕЙНЫХ
*УРАВНЕНИЙ ’/
*15X,’МЕТОДОМ ПРОСТЫХ ИТЕРАЦИЙ’)
WRITE (N,2)
2 FORMAT (15X,’РЕШАЕМОЕ УРАВНЕНИЕ
*X-COS(X)-0.25=0 ‘ )
5 CONTINUE
CALL OTKOR (N,X1,X2)
IF(N.GT.100) GO TO 10
CALL NEWTO (X1,X2,EPS,X,K)
CALL IDRES(X1,X2,EPS,X,K)
10 STOP
END
SUBROUTINE NEWTO (A,B,EPS,X,K)
* РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
* МЕТОДОМ НЬЮТОНA
PRINT*,'ВВЕДИТЕ ДОПУСКАЕМУЮ ПОГРЕШНОСТЬ EPS'
READ(5,*) EPS
K=0
X0=A
IF (ABS(F1(B)).GT.ABS(F1(A))) X0=B
C=F(X0)
1 X=X0-C/F1(X0)
K=K+1
C=F(X)
IF (ABS(C).LE.EPS) GO TO 5
IF (ABS(X0-X).LE.2*EPS) GO TO 5
X0=X
GO TO 1
5 RETURN
END
FUNCTION F(X)
* Решаемое уравнение
F=COS(2*X)-.25
END
FUNCTION F1(X)
* Производная от решаемого уравнения
F1=-2.*SIN(2*X)
END
Примечания. 1. Все подпрограммы, вызываемые главной программой, должны быть записаны в одном файле с главной программой.
2. Текст подпрограммы OTKOR приведен в приложении 1,
подпрограммы IDRES – в приложении 2.
ПРИМЕР РЕШЕНИЯ УРАВНЕНИЯ МЕТОДОМ ПРОСТЫХ ИТЕРАЦИЙ
ПРИЛОЖЕНИЕ 5
PROGRAM RESH
* Главная программа
|
WRITE(N,1)
1 FORMAT(//15X,'РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ'/
*15X,'МЕТОДОМ НЬЮТОНA')
WRITE(N,2)
2 FORMAT(15X,'РЕШАЕМОЕ УРАВНЕНИЕ Y=COS(2*X)-0.25')
5 CONTINUE
CALL OTKOR(N,X1,X2)
IF(N.GT.100) GO TO 10
CALL NEWTO (X1,X2,EPS,X,K)
CALL IDRES(X1,X2,EPS,X,K)
10 STOP
END
SUBROUTINE PRITE (A,B,EPS,X,K)
* РЕШЕНИЕ НЕЛИНЕЙНЫХ УРАВНЕНИЙ
* МЕТОДОМ ПРОСТЫХ ИТЕРАЦИЙ
F1=ABS (FJ1 (A))
IF (F1.GE.1.) GO TO 2
F2=ABS (FJ1 (B))
IF (F2.GE.1.) GO TO 4
PRINT*, ‘ВВЕДИТЕ ДОПУСКАЕМУЮ
*ПОГРЕШНОСТЬ EPS ’
READ (5,*) EPS
K= 0
X0 = (A+B)* 0.5
1 X = FJ (X0)
K= K+1
IF ( ABS (F(X)).LE. EPS) GO TO 5
IF ( ABS (X-X0).LE. EPS) GO TO 5
X0 = X
GO TO 1
2 PRINT 3, F1
3 FORMAT (3X,’ЕСЛИ ПЕРВАЯ ПРОИЗВОДНАЯ
*ЭКВИВАЛЕНТНОГО УРАВНЕНИЯ’,
*’FJ1=’,F8.2,’ >1’/ 3X,’ТО МЕТОД ПРОСТЫХ
*ИТЕРАЦИЙ, К РЕШЕНИЮ ДАННОГО
*УРАВНЕНИЯ, НЕПРЕМЕНИМ’)
GO TO 5
4 PRINT 3,F2
5 RETURN
END
FUNCTION F(X)
* Решаемое уравнение
F=X-COS(X)-.25
END
FUNCTION FJ(X)
* Эквивалентное уравнение
FJ=COS(X)+0.25
END
FUNCTION FJ1(X)
* Производная эквивалентного уравнения
FJ1= -SIN(X)
END
Примечания. 1. Все подпрограммы, вызываемые главной программой, должны быть записаны в одном файле с главной программой.
2. Текст подпрограммы OTKOR приведен в приложении 1,
подпрограммы IDRES – в приложении 2.
Выбрать из таблицы уравнение для решения
ПРИЛОЖЕНИЕ 6
Для лабораторных работ №1,2,3,4,5 трансцендентные уравнения выбираются из таблицы 1, а алгебраические - из таблицы 2, соот-ветствующие № в списке журнала посещаемости группы.
Таблица 1
№ п.п | Уравнение | № п.п | Уравнение |
1. | x - sinx = 0,25 | 14. | x + ln(x +0,5) – 0,5 = 0 |
2. | tg (0,58x + 0,1 ) = x2 | 15. | x2 – sin 5x = 0,3 |
3. | √x – cos (0,387x ) = 0 | 16. | 1/x = sinx |
4. | lgx – 7 / (2x + 6 ) = 0 | 17. | x – sinx = 0,25 |
5. | tg (0,5x + 0,2 ) = x | 18. | cos (x +0,3 ) = x2 |
6. | ( x – 3 ) ∙ cosx = 1 | 19. | 5sinx = x - 1 |
7. | (x – 1 )∙lg (x + 11 )= 1 | 20. | xlgx + (x + 1 ) = 1 |
8. | x2 cos2x = - 1 | 21. | tgx + x = 1 |
9. | ctgx – x / 5 = 0 | 22. | xlgx – 1,2 = 0 |
10. | 2lg ( – x / 2 ) + 1 = 0 | 23. | 2x + lgx – 7 =0 |
11. | x2 + 4sinx = 0,2 | 24. | tg (0,44x + 0,3 ) = x2 |
12. | ctg0,5x – x2 = 0 | 25. | x2 – sin x = 0,1 |
13. | tg0,63x – 0,92x = 0,5 | 26. | x + cos x =1 |
(повторить п. 2.2 данной методички)
Произвести отделение корней для уравнения вида f(x)=ax3+bx2+cx+d
по формуле: C=1+ Amax/An
где: С= начало отрезка, т.е. Х0 ;
An= коэффициент при X с наибольшим показателем степени;
Amax = наибольший коэффициент в уравнении - в, с, или d;
(значения коэффициентов указаны в строке каждого из вариантов в таблице 2).
Таблица 2
Вариант | a | b | c | d |
0,890 | -2,813 | -3,69 | 11,20 | |
0,107 | -0,461 | -2,37 | 5,44 | |
1,276 | -3,60 | -1,37 | 6,76 | |
0,170 | -0,569 | -1,60 | 3,73 | |
1,039 | -3,145 | -1,94 | 8,00 | |
4,684 | -14,04 | -2,45 | 23,50 | |
2,11 | -6,44 | -3,19 | 15,13 | |
3,94 | -11,79 | -1,56 | 18,67 | |
1,20 | -3,53 | -1,36 | 7,11 | |
1,00 | -3,00 | -24,0 | 10,0 | |
2,00 | -5,00 | 8,00 | -7,00 | |
3,00 | -5,50 | 7,5 | -8,0 | |
4,00 | -6,00 | 7,00 | -9,0 | |
5,00 | -6,50 | 6,50 | -10,0 | |
6,00 | -7,00 | 6,00 | -11,0 |