Определение решения нелинейного уравнения методом дихотомии, страница 2

PARAMETER(N=10,A=1,B=3)

DIMENSION X(N),Y(N),Y1(N)

H=(B-A)/N

DO I=1,N

T=(I-1.)/(N-1.)

XI=A*(1.-T)+B*T

X(I)=XI

Y(I)=F1(XI)

Y1(I)=F1(XI+H/2)

END DO

S1=0

S2=0

S3=0

S4=0

S5=0

DO I=2,N

S1=S1+Y(I)*H

END DO

DO I=1,N-1

S2=S2+Y(I)*H

END DO

DO I=2,N

S3=S3+Y1(I)*H

END DO

DO I=1,N

IF(I==1.OR.I==N)THEN

C=1./2

ELSE

C=1

END IF

S4=S4+C*Y(I)*H

END DO

DO I=1,N

AN1=I/2

AN2=I/2.

IF(I==1.OR.I==N)THEN

C=1

ELSE

IF(AN1==AN2)THEN

C=4

ELSE

C=2

ENDIF ENDIF

S5=S5+C*Y(I)*H/3.

ENDDO

PRINT*,'S=',S1,S2,S3,S4,S5

end program REZ

function F1(X)

F1=1./2*exp(-x/2)+3./2*asin(1/3*cos(x))

end function F1

S

N=10

N=100

N=1000

1

4.730558      

56.45909      

574.0466      

2

5.286489      

57.03228      

574.6215      

3

2.291125      

26.73614      

271.2283      

4

5.008523      

56.74568      

574.3340      

5

5.343189   

57.08031   

574.6682   

Вывод: На этой лабораторной работе я научилась составлять программу для численного вычисления интеграла пятью разными методами: с помощью трех формул прямоугольников, которые выдают результат первой степени точности, формулы трапеций второй степени точности и формулы Симпсона четвертой степени точности. При этом при увеличении количества шагов интегрирования увеличивается точность полученных результатов.

ЗАДАНИЕ №3 Численные методы решения систем линейных алгебраических уравнений (СЛАУ)

Варианты задания приведены в таблице 2.

  1. СЛАУ из табл. 2. привести к эквивалентной форме. Численно определить решение преобразованной системы уравнений, используя метод простой итерации и метод Зейделя.
  2. Провести анализ полученных результатов. Сделать выводы о скорости сходимости двух итерационных методов решения СЛАУ.

16

program PROGRAM3

parameter (n=3)

dimension x(n),g(n),x1(n),a(3,3)

data a/0,-0.077,-0.38,-0.26,0,-0.47,-0.25,-0.5,0/, g/-0.077,-0.11,-0.25/, x/3*0./, x1/3*0./

Sj=100

SI=0

eps=1.e-4

do while (abs(sj-x(1))>eps)

SI=SI+1

sj=x(1)

x1=x

do j=1,n

s=0

do k=1,n

s=s+a(j,k)*x1(k)

end do

x(j)=s+g(j)

end do

print*,x

print*,'ITTERATIONS mpi',SI

end do

Sj=100

SI=0

eps=1.e-4

X=0

do while (abs(sj-x(1))>eps)

SI=SI+1

sj=x(1)   

do j=1,n

s=0

do k=1,n

s=s+a(j,k)*x(k)

end do

x(j)=s+g(j)

end do

print*,x

print*,'ITTERATIONS mz',SI

end do

end program PROGRAM3