Программа расчета функции по аргументам методом многоуровневого моделирования (ММУМ) параметров химических систем
10 rem Многоуровневое моделирование
15 cls: screen 0,0
20 M$= “! X1 X2 X3 X4 Y Y(расч) !”
30 input “Количество переменных: “;N
31 if N<3 goto 610
35 dim (N),X1(N),X2(N),X3(N),X4(N),O(N),O1(N),O2(N),O3(N), O4(N), K(N),VO(N)
40 Z1=):Z2=):Z3=0:Z4=0:Z5=0
60 for i=1 to N
65 print: print “Значение номер “; i
70 input “Значение Y”; Y(i)
85 Z5=Z5+Y(i)
90 input “Значение Х1”; X1(i)
105 Z1=Z1+X1(i)
110 input “Значение Х2”;Х2(i)
125 Z2=Z2+X2(i)
130 input “Значение Х3”;Х3(i)
145 Z3=Z3+X3(i)
150 input “Значение Х4”;Х4(i)
165 Z4=Z4+X4(i)
166 next i
167 print “Все верно (Y/N) ?”: ASD$=input$(1)
168 if ASD$=“Y” or ASD$=“y” goto 170
169 if ASD$=“N”or ASD$=“n” then gosub 1000 else goto 167
170 S1=Z1/N: S2=Z2/N: S3=Z3/N: S4=Z4/N
180 S=Z5/N
210 for j=1 to N
220 O(j)=Y(j)-S
225 O1(j)=X1(j)-S1
230 O2(j)=X2(j)-S2
235 O3(j)=X3(j)-S3
240 O4(j)=X4(j)-S4
250 H1=H1+o1(j)^2
255 H2=H2+O1(j)×O2(j)
260 H3=H3+O1(j)×O3(j)
265 H4=H4+O1(j)×O4(j)
270 W1=W1+O1(j)×O(j)
275 W=W+O(j)^2
280 H5=H5+O2(j)^2
285 H6=H6+O2(j)×O3(j)
290 H7=H7+O2(j)×O4(j)
295 W2=W2+O2(j)×O(j)
300 H8=H8+O3(j)^2
305 H9=H9+O3(j)×O4(j)
310 W3=W3+O3(j)×O(j)
315 H=H+O4(j)^2
320 W4=W4+O4(j)×O(j)
325 next
330 L1=W4×H1-H4×W1
335 L2=H1×H-H4^2
340 L3=H7×H1-H2×H4
345 L4=W2×H1-H2×W1
350 L5=H2×H3-H1×H6
355 L6=H9×H1-H3×H4
360 L7=W3×H1-W1×H3
370 L9=H8×H1-H3^2
375 L=H1×H5-H2^2
380 M1=L9×L-L5^2
390 M2=L6×L+L5×L3
395 M3=L7×L+L4×L5
400 M4=L1×L-L3×L4
405 M5=L2×L-L3^2
407 if S4=0 then 415 else D=(M4×M1-M2×M3)/(M5×M1-M2^2)
410 goto 420
415 D=0
420 G1=M3-M2×D
421 G=G1/M1
425 B=(L4+L5×G-L3×D)/L
430 A=(W1-H2×B-H3×G-H4×D)/H1
440 for i=1 to N
450 K(i)=S+A×O1(i)+B×O2(i)+G×O3(i)+D×O4(i)
460 V=V+K(i)
470 next
480 Vs=V/N
490 for j=1 to N
500 VO(j)=K(j)-VS
510 R2=R2+VO(j)^2
520 next
529 cls
530 R1=R2/W
540 R=sqr(R1)
545 K1=S-A×S1-B×S2-G×S3-D×S4
581 print: print
582 F$=string$(70,”-”): print F$
583 print M$
584 F$=string$(70,”-”): print F$
585 for i=1 to N
586 print using “#####.##”; X1(i),X2(i),X3(i),X4(i),Y(i),K(i)
587 next
588 print F$
589 print: print
590 print “Y=“ using “####.####”;A;:print “×X1+(“using “####.####”; B;:print”)×X2+(“using “####.####”;G; :print”)×X3+(“using “####.####”; D;: print”)×X4+(“using “####.####”; K1;:print”)”
600 print “R= “ using “#.####”;R
610 end
1000 rem *****************************************
1050 rem*Подпрограмма обработки ошибок ввода***
rem* данных *********************************
1080 rem******************************************
1100 input “Какое значение не верно (введите его номер)”;i
1200 Z5=Z5-Y(i)
1210 Z1=Z1-X1(i); Z2=Z2-X2(i); Z3=Z3-X3(i); Z4=Z4-X4(i)
1250 print “Значение номер “,i
1260 input “Значение Y”; Y(i)
1270 Z5=Z5+Y(i)
1280 input “Значение Х1”; X1(i)
1290 Z1=Z1+X1(i)
1300 input “Значение Х2”; X2(i)
1310 Z2=Z2+X2(i)
1320 input “Значение Х3”; X3(i)
1330 Z3=Z3+X3(i)
1340 input “Значение Х4”; X4(i)
1350 Z4=Z4+X4(i)
1360 print “Будут ли меняться другие значения?”
1370 XC$=input$(1)
1380 if XC$=“Y” or XC$=“y” goto 1100
1390 if XC$=“N” or XC$=“n” then return else goto 1360