Алгоритмическая и программная реализация прогноза почвенных параметров
Обзор разнообразных методов теории линейных систем: методов корреляционного и регрессионного анализа, косинор-анализа. Особенности применения факторного анализа. Программная реализация метода главных компонент. Разработка нелинейных регрессионных моделей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 03.09.2016 |
Размер файла | 390,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
DO 160 J=1,K
JJ=JJ+J
150 SQ=SQRT(R(JJ))
DO 160 I=1,M
L=L+1
160 V(L)=SQ*V(L)
RETURN
END
SUBROUTINE TRACE (M,R,CON,K,D)
DIMENSION R(1),D(1)
FM=M
L=0
DO 100 I=1,M
L=L+I
cwrite(6,211) r(l),con
211format(1x,'tr r=',f12.5,' con=',f12.5)
cpause
100 D(I)=R(L)
K=0
DO 110 I=1,M
IF(D(I)-CON) 120,105,105
105 K=K+1
110 D(I)=D(I)/FM
120 DO 130 I=2,K
130 D(I)=D(I)+D(I-1)
cwrite(6,212) k
cpause
212format(1x,'tr w k=',i5)
RETURN
END
SUBROUTINE VARMX (M,K,A,NC,TV,H,F,D)
DIMENSION A(1),TV(1),H(1),F(1),D(1)
EPS=0.00116
TVLT=0.0
LL=K-1
NV=1
NC=0
FN=M
FFN=FN*FN
CONS=0.7071066
DO 110 I=1,M
H(I)=0.0DO 110 J=1,K
L=M*(J-1)+I
110 h(i)=h(i)+a(l)*a(l)
DO 120 I=1,M
115 h(i)=sqrt(h(i))
DO 120 J=1,K
L=M*(J-1)+I
120 A(L)=A(L)/H(I)
GO TO 132
130 NV=NV+1
TVLT=TV(NV-1)
132 TV(NV)=0.0
DO 150 J=1,K
AA=0.0
BB=0.0
LB=M*(J-1)
DO 140 I=1,M
L=LB+I
CC=A(L)*A(L)
AA=AA+CC
140 bb=bb+cc*cc
150 TV(NV)=TV(NV)+(FN*BB-AA*AA)/FFN
IF(NV-51) 160, 430, 430160 IF((TV(NV)-TVLT)-(1.E-7)) 170, 170, 190
170 NC=NC+1
IF(NC-3) 190, 190, 430
190 DO 420 J=1,LL
L1=M*(J-1)
II=J+1
DO 420 K1=II,K
L2=M*(K1-1)
AA=0.0
BB=0.0
CC=0.0
DD=0.0
DO 230 I=1,M
L3=L1+I
L4=L2+I
U=(A(L3)+A(L4))*(A(L3)-A(L4))
T=A(L3)*A(L4)
T=T+T
CC=CC+(U+T)*(U-T)
DD=DD+2.0*U*T
AA=AA+U
230 BB=BB+T
T=DD-2.0*AA*BB/FN
B=CC-(AA*AA-BB*BB)/FN
IF(T-B) 280, 240, 320
240 IF((T+B)-EPS) 420,250,250
250 COS4T=CONS
SIN4T=CONS
GO TO 350
280 TAN4T=ABS(T)/ ABS(B)
IF(TAN4T-EPS) 300,290,290
290 COS4T=1.0/ SQRT(1.0+TAN4T*TAN4T)
SIN4T=TAN4T*COS4T
GO TO 350
300 IF(B) 310,420,420
310 SINP=CONS
COSP=CONS
GO TO 400
320 CTN4T= ABS(T/B)
IF(CTN4T-EPS) 340,330,330
330 SIN4T=1.0/ SQRT(1.0+CTN4T*CTN4T)
COS4T=CTN4T*SIN4T
GO TO 350
340 COS4T=0.0
SIN4T=1.0
350 COS2T=SQRT((1.0+COS4T)/2.0)
SIN2T=SIN4T/(2.0*COS2T)
355 COST=SQRT((1.0+COS2T)/2.0)
SINT=SIN2T/(2.0*COST)
IF(B) 370,370,360
360 COSP=COST
SINP=SINT
GO TO 380
370 COSP=CONS*COST+CONS*SINT
375 SINP=ABS(CONS*COST-CONS*SINT)
380 IF(T) 390,390,400
390 SINP=-SINP
400 DO 410 I=1,M
L3=L1+I
L4=L2+I
AA=A(L3)*COSP+A(L4)*SINP
A(L4)=-A(L3)*SINP+A(L4)*COSP
410 A(L3)=AA
420 CONTINUE
GO TO 130
430 DO 440 I=1,M
DO 440 J=1,K
L=M*(J-1)+I
440 A(L)=A(L)*H(I)
NC=NV-1
DO 450 I=1,M
450 H(I)=H(I)*H(I)
DO 470 I=1,M
F(I)=0.0
DO 460 J=1,K
L=M*(J-1)+I
460 F(I)=F(I)+A(L)*A(L)
470 D(I)=H(I)-F(I)
RETURN
END
subroutine grpk(m,k1,v,mnp,ip1,mnpi,kis)
DIMENSION V(1)
dimension mnf(151)
dimension mnp(1),mnpi(1),mrez(151)
dimension zna(151),nf(151),mgp(151)
common anaz(151,60),knaz
cwrite(6,7001) m,kis
7001format(1x,'m=',i3,' kis=',i3)
IKR=0
IF(IP1.NE.0) GO TO 91
DO 92 I=1,KIS
92 MREZ(I)=MNPI(I)
GO TO 93
91 CONTINUE
cwrite(6,4501) (mnp(i),i=1,ip1)
4501format(1x,'mnp',15i4)
DO 1 IS=1,KIS
DO 2 IP=1,IP1
IF(IS.EQ.MNP(IP)) GO TO 1
2 CONTINUE
IKR=IKR+1
MREZ(IKR)=MNPI(IS)
1 CONTINUE
cwrite(6,4502) (mnpi(i),i=1,kis)
4502format(1x,'mnpi',15i4)
cwrite(6,4503) (mrez(i),i=1,ikr)
4503format(1x,'mrez',15i4)
93 CONTINUE
KT=M*K1
DO 5 I=1,M
XMAX=ABS(V(I))
INS=I
DO 6 J=I,KT,M
IF(XMAX-ABS(V(J))) 7,6,6
7 CONTINUE
XMAX=ABS(V(J))
INS=J
6 CONTINUE
JST=INS/M+1
S1=INS*1./M
I1=S1
IF(S1.EQ.I1) JST=I1
ZNA(I)=V(INS)
NF(I)=JST
5 CONTINUE
DO 10 I=1,M
NFT=NF(I)
MNF(I)=NFT
IF(I.EQ.1) GO TO 201
II=I-1
DO 206 IR=1,II
IF(NFT.EQ.MNF(IR)) GO TO 10
206 CONTINUE
201 CONTINUE
IB=0
DO 11 J=I,M
IF(NFT.NE.NF(J)) GO TO 11
IB=IB+1
MGP(IB)=J
11 CONTINUE
cwrite(6,4504) (mgp(iu),iu=1,ib)
4504format(1x,'mgp',15i4)
WRITE(6,12)NFT
12 FORMAT(/9X,'Таблица-Объединение по фактору',I5,'.'/)
write(6,7013)
7013format(5x,58('-'))
WRITE(6,7012)
write(6,7013)
7012format(5x, '|НОМЕР| НАЗВАНИЕ ПАРАМЕТРА |',
*' НАГРУЗКА |')
ir=mgp(1)
ismax=mrez(ir)
xmax=abs(zna(ir))
DO 13 IT=1,IB
IR=MGP(IT)
IS=MREZ(IR)
if(xmax.ge.abs(zna(ir))) goto 12102
ismax=is
xmax=abs(zna(ir))
12102continue
cif(knaz.gt.70) goto 801
do 214 j=35,60
cwrite(*,287) j,anaz(i,j)
287format(1x,'j=',i4,60a1)
if(anaz(is,j).eq.' ') goto 214
cwrite(*,287) j,(anaz(is,js),js=1,60)
cpause
goto 215
214continue
write(6,217) is,(anaz(is,j),j=1,34),zna(ir)
217format(5x,'|',i4,' |',34a1,'|',f11.4,4x,'|')
goto 218
215 WRITE(6,14) is,(anaz(is,j),j=1,60),ZNA(IR)
218write(6,7013)
14 FORMAT(5X,'|',i4,' |',34a1,'| |'/5x,
* '| |',26a1,8x,'|',F11.4,4x,'|')
cgoto 13
c801write(6,141) is,zna(ir)
141 format(10x,'показатель-',i4,' значение нагрузки= ',f10.5)
13 CONTINUE
write(6,12101) nft,ismax,(anaz(ismax,j),j=1,60)
12101format(1x,'в факторе-',i5,' базовый параметр-',i5/1x,60a1/)
10 CONTINUE
RETURN
END
c-умножение матрицы a на матрицу b
subroutine gtprd(a,b,r,n,m,l)
dimension a(1),b(1),r(1)
ir=0
ik=-n
do 10 k=1,l
ij=0
ik=ik+n
do 10 j=1,m
ib=ik
ir=ir+1
r(ir)=0.
do 10 i=1,n
ij=ij+1
ib=ib+1
10 r(ir)=r(ir)+a(ij)*b(ib)
return
end
c-метод Гаусса решения систем
subroutine gay(n,a,b,x)
dimension a(1),b(1),x(1)
cdouble precision a,b,x,t,tz,p,sum
i=1
81j=i
ct=a(i,i)
t=a((i-1)*n+i)
if(t.ne.0) goto 2
l=i+1
4if(a(l+(j-1)*n).ne.0) goto 3
l=l+1
if(l.le.n) goto 4
write(6,*) 'матрица вырожденная'
stop
3continue
do 5 js=1,n
tz=a(l+(js-1)*n)
a(l+(js-1)*n)=a(i+(js-1)*n)
a(i+(js-1)*n)=tz
5continue
t=a(i+(i-1)*n)
2continue
a(i+(j-1)*n)=a(i+(j-1)*n)/t
j=j+1
if(j.le.n) goto 2
b(i)=b(i)/t
k=i+1
71p=a(k+(i-1)*n)
j=i
7a(k+(j-1)*n)=a(k+(j-1)*n)-p*a(i+(j-1)*n)
j=j+1
if(j.le.n) goto 7
b(k)=b(k)-p*b(i)
k=k+1
if(k.le.n) goto 71
i=i+1
if(i.lt.n) goto 81
cwrite(6,*) ' матрица после прямого хода'
do 56 i=1,n
cwrite(6,57) (a(i+(j-1)*n),j=1,n)
57format(1x,5f12.5)
56continue
if(a(n+(n-1)*n).ne.0) goto 82
write(6,*) 'матрица вырожденная'
stop
82continue
nt=n
x(n)=b(n)/a(n+(n-1)*nt)
cwrite(6,86) x(n)
85n=n-1
if(n.lt.1) goto 83
sum=0
j=n+1
84sum=sum+a(n+(j-1)*nt)*x(j)
j=j+1
if(j.le.nt) goto 84
x(n)=b(n)-sum
cwrite(6,86) x(n)
goto 85
83continue
cwrite(5,86)(x(i),i=1,nt)
86format(1x,5f15.5)
return
end
Набор normmatr.cpp(построение нормализованной матрицы)
#include<windows.h>
#include<string.h>
#include<stdio.h>
#include<alloc.h>
#include<dos.h>
#include"menu.h"
#include<math.h>
long int soch()
{
extern FILE *fp3,*fp5,*fp8;
extern void randu(long int ix,long int *piy,float *pfr);
extern void norm(float sr,float si,float fr,float *pzn);
float srm[201],sigm[201],fr,zn,sr,si;
char zgl[81];
long int i,m,kg,ix,iy,ig,j,isc;
//open(3,file='isxnorm',status='old')
//open(5,file='wixnorm',status='Unknown')
fp3=fopen("isxncpp","r");
fp5=fopen("wixncpp","w");
fp8=fopen("slych","w");
for(i=1;i<=80;i++)
{
fscanf(fp3,"%c",&zgl[i]);
fprintf(fp5,"%c",zgl[i]);
}
fscanf(fp3,"%ld%ld",&kg,&m);
fprintf(fp5,"\n%ld %ld\n",kg,m);
for(i=1;i<=m;i++)
{
fscanf(fp3,"%f%f",&srm[i],&sigm[i]);
//fprintf(fp5,"%f %f\n",srm[i],sigm[i]);
}
ix=55555l;
isc=0;
for(ig=1;ig<=kg;ig++)
{
for(j=1;j<=m;j++)
{
randu(ix,&iy,&fr);
fprintf(fp8,"%ld ",iy);
isc=isc+1;
if(isc<5) goto r1;
isc=0;
fprintf(fp8,"\n");
r1:;
ix=iy;
sr=srm[j];
si=sigm[j];
norm(sr,si,fr,&zn);
//rab[j]=zn;
fprintf(fp5,"%f ",zn);
}
fprintf(fp5,"\n");
}
fclose(fp3);
fclose(fp5);
fclose(fp8);
return(1l);
}
void norm(float sr,float si,float alf,float *px)
{
float xg,xn,xn1,s,dx,zk,xt,ar,x;
//c-sr,srednee
//c-si,sqrt(d)
//c-alf,znachenie funkcii raspredelenij
//c-alf rawnomerno raspredeleno
//c-xg,max pokazatel exp
//c-xn,inf integrirowanij
//c-xg=9
//c-s,tekyshee znachenie integrala
xg=18;
xn=(sr-pow(2.*si,0.5)*pow(1.*si*xg,0.5));
xn1=sr+pow(2.*si,0.5)*pow(1.*si*xg,0.5);
s=0.;
//c-xt,argument
//c-dx,shag integrirowanij
//c-ЗДЕСЬ ВСЕ ВЕРНО,УВАЖАЕМЫЕ!
dx=(xn1-xn)/10000;
zk=1./(pow(8.*atan(1.),0.5)*si);
//cwrite(*,651) sr,si,xn1,xn,dx,zk
//651format(1x,'norm','sr=',e15.7,' si=',e15.7,' xn1=',e15.7/1x,
// *' xn=',e15.7,' dx=',e15.7,' zk=',e15.7)
xt=xn;
m1: ar=(xt-sr)/si*(xt-sr)/(2*si);
//c-ar,argument exp
s=s+exp(-ar)*dx*zk;
//c-zk,koeff
if(s>=alf) goto m2;
xt=xt+dx;
if(xt<xn1) goto m1;
m2:;
x=xt;
*px=x;
return;
}
void randu(long int ix,long int *piy,float *pyfl)
{
long int i1,i2,iz,iy,j;
float yfl;
i1=ix/32700l;
i2=ix-i1*32700l;
if(i1==0) goto m25;
iz=32700l*65539l;
iy=0;
for(j=1;j<=i1;j++)
iy=iy+iz;
iy=iy+i2*65539l;
goto m26;
m25: iy=ix*65539l;
m26:;
if(iy<0) goto m5;
if(iy>=0) goto m6;
m5: iy=iy+2147483647l+1l;
m6: yfl=iy;
yfl=yfl*0.4656613e-9;
*piy=iy;
*pyfl=yfl;
return;
}
Набор menu.h
#define IDM_RUN 108
Набор menu.rc
;EXAMPLE FILE RECOURSE FOR MENU
#include<windows.h>
#include"menu.h"
MYMENU MENU
{
MENUITEM "run",IDM_RUN
}
Размещено на Allbest.ru
Подобные документы
Состав и принцип работы аппаратуры. Выбор параметров корреляционного анализа и Фурье-анализа. Разработка и применение алгоритма корреляционного анализа. Реализация алгоритма Фурье-анализа на языке С++ и алгоритма корреляционного анализа на языке С#.
дипломная работа [4,6 M], добавлен 30.11.2016Итерационные методы решения нелинейных уравнений, системы линейных алгебраических уравнений (СЛАУ). Решение нелинейных уравнений методом интерполирования. Программная реализация итерационных методов решения СЛАУ. Практическое применение метода Эйлера.
курсовая работа [1,6 M], добавлен 20.01.2010Морфологические анализаторы (морфологизаторы) на различных языках программирования. Анализ методов и технологий автоматической обработки ЕЯ-текстов. Разработка модуля графематического анализа и создания таблицы лексем. Программная реализация классов.
дипломная работа [3,0 M], добавлен 06.03.2012Выбор методов обработки и сегментации изображений. Математические основы примененных фильтров. Гистограмма яркости изображения. Программная реализация комплексного метода обработки изображений. Тестирование разработанного программного обеспечения.
курсовая работа [1,3 M], добавлен 18.01.2017Сравнение методик расчета и анализа частотного распределения. Синтез номограммы комбинационных частот с использованием рядов Фарея. Программная реализация алгоритмов оптимизации распределения преобразователя частоты с перестраиваемым преселектором.
дипломная работа [3,5 M], добавлен 07.04.2017Изучение и программная реализация в среде Matlab методов обработки, анализа, фильтрации, сегментации и улучшения качества рентгеновских медицинских изображений. Цифровые рентгенографические системы. Разработка статически обоснованных алгоритмов.
курсовая работа [4,7 M], добавлен 20.01.2016Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений.
курсовая работа [581,0 K], добавлен 15.06.2013Реализация программы, позволяющей принять решение о выборе поставщика товаров, по аналогии с продукционной моделью представления знаний (сопоставления образцов и консиквентов). Математическая постановка задачи, программный алгоритм и этапы его разработки.
курсовая работа [812,8 K], добавлен 13.11.2012Разработка и реализация многомасштабного анализа дискретных сигналов путем вейвлет-преобразований и структурной индексации, объединение методов в единую систему. Поисково-исследовательский характер и направление на упрощение многомасштабного анализа.
дипломная работа [3,0 M], добавлен 01.07.2008Разработка алгоритма фильтрации данных, полученных с систем спутниковой навигации с помощью GNSS-модуля. Анализ работы фильтра Калмана, его программная реализация под конкретную задачу. Выбор навигационных модулей для получения данных позиционирования.
дипломная работа [3,6 M], добавлен 12.01.2016