Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2009, 23:35   #1
marow
Новичок
Джуниор
 
Регистрация: 03.04.2009
Сообщений: 1
Вопрос Fortran , ошибка в dimension

Пишу программу состоящую из частей ( пока написал 3). Программа выводит график функции, находит методами деления и секущих корени и сравнивает их, находит первую и вторую производную также двумя методами( 1) del(F(x))/del(x) и 2) записана функция 1 и 2 производных) и также пытается посторить графики. Проблема в том что ему не нравится что-то связанное с DERA1(100) и DERA2(100) в разделе dimension. Подскажите плиз что я сделал не так
если вдруг будет нужно : yray-значения функции, der1- первая производная методом del(f(x)), der2-вторая тем же методом, dera1-аналитическая первая производная( функция производной ), dera2- вторая






PROGRAM LABS1TO3
PARAMETER (N=100)
CHARACTER AXIS(2)*6,TITL(2)*22
Dimension XRAY(100),Y1RAY(100),Y2RAY(100),DER 1(100),DER2(100)
1 DERA1(100),DERA2(100)
TITL(1)='FUNCTION'
TITL(2)= '-(cos(PI*(x**2)/2)**2)+x**2'
TITL(3)='DERIVATIVES'
AXIS(1)='X-axis'
AXIS(2)= 'Y-axis'
PI=3.1415926
STEP=1./(N-1)
d=10.**(-5)
e=1.
w=0.
xroot0=0.
xroot1=0.2
a=0.
b=1.
c=0.
func0=-1.
func1=0.
func2=1.


DER1(0)= 0.



DO I=1,N
XRAY(I)=(I-1)*STEP
X=XRAY(I)
Y1RAY(I)= -(cos(PI*(x**2)/2))**2+x**2
Y2RAY(I)=0
DER1(I)= ( Y1RAY(I)-Y1RAY(I-1) ) / ( XRAY(I) - XRAY(I-1) )
DER2(I)= ( DER1(I)-DER1(I-1) ) / (XRAY(I) - XRAY(I-1) )
der1(1)=0.
der2(1)=2.
DERA1=x*Pi*sin(Pi*x)+2*x
DERA2=Pi*sin(Pi*x**2)+2*X**2*Pi**2* cos(Pi*X**2)+2
PRINT*, DER1(I),DER2(I), DERA1(I),DERA2(I)
END DO


DO i=1,20

func1 = -(cos(PI*xroot1**2/2))**2+xroot1**2

xroot2 = xroot1 - func1* (xroot1-xroot0) / (func1-func0)
xroot0=xroot1
xroot1=xroot2

e=xroot1-xroot0
if (abs(e) .LT. d) then
goto 10
endif
print*, i , ')' , xroot1
func0=func1
end do

10 print*, 'ROOT=', xroot0



DO i=1,20
c=(a+b)/2
func0 = -(cos(PI*a**2/2))**2+a**2
func1 = -(cos(PI*c**2/2))**2+c**2
func2 = -(cos(PI*b**2/2))**2+b**2

w = func0 * func1
if (w.LT. 0 ) then
b=c
else
a=c
endif
print*, i , ')' , c
end do
print*, 'ROOT=', c

print*, 'Difference between roots=', abs(c-xroot1)





CALL GRAF_1(XRAY,Y1RAY,Y2RAY,N,AXIS,TITL )

CALL GRAF_1(XRAY,DERA1,DER1,N,AXIS,TITL)

CALL GRAF_1(XRAY,DERA2,DER2,N,AXIS,TITL)


WRITE(6,'(4X,A)') 'Press ENTER to finish ...'
READ*
END


SUBROUTINE GRAF_1(XRAY,Y1RAY,Y2RAY,N,AXIS,TITL )
CHARACTER AXIS(2)*6,TITL(2)*22
Dimension XRAY(N),Y1RAY(N),Y2RAY(N)
OY0=Y1RAY(1)
OY1=Y1RAY(1)
OX0=XRAY(1)
OX1=XRAY(1)
DO I=1,N
IF(OX0.GT.XRAY(I)) OX0=XRAY(I)
IF(OX1.LT.XRAY(I)) OX1=XRAY(I)
IF(OY0.GT.Y1RAY(I)) OY0=Y1RAY(I)
IF(OY1.LT.Y1RAY(I)) OY1=Y1RAY(I)
IF(OY0.GT.Y2RAY(I)) OY0=Y2RAY(I)
IF(OY1.LT.Y2RAY(I)) OY1=Y2RAY(I)
END DO
OYH=(OY1-OY0)/4.
OXH=(OX1-OX0)/4.
CALL METAFL('XWIN')
CALL SETPAG('DA4L')
CALL DISINI
CALL PAGERA
CALL HWFONT
CALL AXSPOS(450,1800)
CALL AXSLEN(2200,1200)
CALL NAME(AXIS(1),'X')
CALL NAME(AXIS(2),'Y')
CALL LABDIG(1,'X')
CALL TICKS(10,'XY')
CALL TITLIN(TITL(1),1)
CALL TITLIN(TITL(2),3)
CALL GRAF(OX0,OX1,OX0,OXH,OY0, OY1,OY0,OYH)
CALL TITLE
CALL COLOR('RED')
CALL CURVE(XRAY,Y1RAY,N)
CALL COLOR('GREEN')
CALL CURVE(XRAY,Y2RAY,N)
CALL COLOR('FORE')
CALL DASH
CALL XAXGIT
CALL DISFIN
END
marow вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Fortran] в чём ошибка ? ghost8495 Помощь студентам 2 01.04.2009 23:18
fortran Aivar Помощь студентам 1 07.10.2008 22:13