Подпрограмма отделения корней нелинейных уравнений

ПРИЛОЖЕНИЕ 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

* Главная программа

 
DO 5 N=6,7

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

Наши рекомендации