agR pX
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Народ, помогите кто чем может. Препод по предмету далекому от программирования нашел такую прогу и сказал "На, ковыряйся".... набрал, скомпилил.... но не работает..... По идее не хватает значений массивов Х и У.... Хотя могу ошибаться... Плз ХЕЕЕЕЛП! C************************************************************ C* * C* ПРИМЕР ПРОГРАММЫ ИДЕНТИФИКАЦИИ * C* (КОРРЕЛЯЦИОННЫЙ МЕТОД) * C* * C************************************************************ C REAL X(1000),Y(1000),RX(2500),RXY(50) NAMELIST /L1/ X /L2/Y C ЧИСЛО ТОЧЕК РЕАЛИЗАЦИИ L=1000 C ЧИСЛО ТОЧЕК ИПФ И КОРР. ФУНКЦИЙ N=5 C ВВОД ИСХОДНЫХ ДАННЫХ READ(3,L1) READ(3,L2) C ВЫЧИСЛЕНИЕ ВЗАИМНО КОРРЕЛЯЦИОННОЙ ФУНКЦИИ CALL RXY3(X,Y,L-N,RXY,N) C ВЫЧИСЛЕНИЕ КОРРЕЛЯЦИОННОЙ МАТРИЦЫ CALL RM2(X,L-N,RX,N) C ВЫЧИСЛЕНИЕ ИПФ CALL SIMQ(RX,RXY,N,IER) C ПЕЧАТЬ РЕЗУЛЬТАТА ИДЕНТИФИКАЦИИ ИПФ DO 100 I=1,N 100 PRINT 200,I,RXY(I) 200 FORMAT (T5,I2,5X,E12.5) STOP END SUBROUTINE RXY3(X,Y,L,R,N) C C************************************************************ C* ПРОГРАММА РАСЧЕТА ВЗАИМНО КОРРЕЛЯЦИОННОЙ * C* ФУНКЦИИ СЛУЧАЙНЫХ ПРОЦЕССОВ, ЗАДАННЫХ * C* МАССИВАМИ ЧИСЕЛ X,Y * C* РАЗМЕРЫ X,Y В ГОЛОВНОЙ ПРОГРАММЕ * C* НЕ МЕНЕЕ (L+N-1) * C*----------------------------------------------------------* C* R - ВЫХОДНОЙ МАССИВ ЗНАЧЕНИЙ КОРР. * C* ФУНКЦИИ РАЗМЕРОМ N (ВЕЛИЧИНА СДВИГА) * C*----------------------------------------------------------* C* L - ЧИСЛО ТОЧЕК ОСРЕДНЕНИЯ КОРР. ФУНКЦИИ * C************************************************************ C REAL X(1),Y(1),R(1) DO 10 I=1,N 10 R(I)=0. IEND=L+N-1 DO 20 K=N, IEND DO 20 I=1,N 20 R(I)=R(I)+Y(K)*X(K-I+1) DO 30 I=1,N 30 R(I)=R(I)/L RETURN END SUBROUTINE SIMQ(A,B,N,KS) C C************************************************************ C* * C* * C* * C* * C* * C************************************************************ C DIMENSION A(N),B(N) TOL=0.0 KS=0 JJ=-N DO 65 J=1,N JY=J+1 JJ=JJ+N+1 BIGA=0 IT=JJ-J DO 30 I=J,N IJ=IT+I IF(ABS(BIGA)-ABS(A(IJ))) 20,30,30 20 BIGA=A(IJ) IMAX=I 30 CONTINUE IF(ABS(BIGA)-TOL) 35,35,40 35 KS=1 RETURN 40 I1=J+N*(J-2) IT=IMAX-J DO 50 K=J,N I1=I1+N I2=I1+IT SAVE=A(I1) A(I1)=A(I2) A(I2)=SAVE 50 A(I1)=A(I1)/BIGA SAVE=B(IMAX) B(IMAX)=B(J) B(J)=SAVE/BIGA IF(J-N) 55,70,55 55 IQS=N*(J-1) DO 65 IX=JY,N IXJ=IQS+IX IT=J-IX DO 60 JX=JY,N IXJX=N*(JX-1)+IX JJX=IXJX+IT 60 A(IXJX)=A(IXJX)-(A(IXJ)*A(JJX)) 65 B(IX)=B(IX)-(B(J)*A(IXJ)) 70 NY=N-1 IT=N*N DO 80 J=1,NY IA=IT-J IB=N-J IC=N DO 80 K=1,J B(IB)=B(IB)-A(IA)*B(IC) IA=IA-N 80 IC=IC-1 RETURN END C SUBROUTINE RM2(X,L,R,N) C C************************************************************ C* ПРОГРАММА РАСЧЕТА КОРРЕЛЯЦИОННОЙ МАТРИЦЫ * C* ПРОЦЕССА, ЗАДАННОГО МАССИВОМ Х. * C* МАТРИЦА ПРЕДНАЗНАЧЕНА ДЛЯ РЕШЕНИЯ * C* С Л А У ПРИ АППРОКСИМАЦИИ ИНТЕГРАЛА * C* МЕТОДОМ ТРАПЕЦИЙ * C*----------------------------------------------------------* C* L - ЧИСЛО ТОЧЕК ОСРЕДНЕНИЯ * C* N - РАЗМЕР МАТРИЦЫ R * C* РАЗМЕР R В ГОЛОВНОЙ ПРОГРАММЕ НЕ МЕНЕЕ * C* N*N * C* РАЗМЕР Х В ГОЛОВНОЙ ПРОГРАММЕ НЕ МЕНЕЕ * C* L+N-1 * C************************************************************ C REAL X(L),R(1) NN=N*N DO 10 I=1,NN 10 NN=N+1 DO 20 I=1,N DO 20 J=1,I M=I-J+1 A=X(I)*X(M) LL=J+NN*(NN-J) DO 20 K=1,M LL=LL-NN R(LL)=R(LL)+A 20 CONTINUE DO 30 J=1,N NNN=L+J-1 M=NN-J DO 30 I=NN,NNN A=X(I)*X(I-J+1) LL=J-NN DO 30 K=1,M LL=LL+NN R(LL)=R(LL)+A 30 CONTINUE DO 40 I=2,N II=I-1 NNN=L+I-1 M=NN-I DO 40 J=1,II A=X(NNN)*X(NNN-J+1) LL=J-NN DO 40 K=1,M LL=LL+NN R(LL)=R(LL)+A 40 CONTINUE DO 50 I=1,N DO 50 J=I,N LL=I+(J-I)*NN 50 R(LL)=R(LL)/L DO 60 I=2,N M=N*(I-1)+1 DO 60 J=I,N LL=I+(J-I)*NN NNN=M+(J-I)*NN 60 R(NNN)=R(LL) NN=N*N+1 DO 70 I=1,N R(I)=R(I)*0.5 70 R(NN-I)=R(NN-I)*0.5 RETURN END Я от фортрана далек так, как...... нет слов | Всего записей: 1 | Зарегистр. 22-04-2007 | Отправлено: 20:43 22-04-2007 | Исправлено: agR pX, 20:44 22-04-2007 |
|