|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.04.2009, 23:35 | #1 |
Новичок
Джуниор
Регистрация: 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 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Fortran] в чём ошибка ? | ghost8495 | Помощь студентам | 2 | 01.04.2009 23:18 |
fortran | Aivar | Помощь студентам | 1 | 07.10.2008 22:13 |