![]() |
Главная страница Программы проектирования [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [ 96 ] [97] [98] [99] [100] Кром ввода чисел, подпрограммы RDR, RDI производят контрольную 11ечать входных данных. В качестве примера использования подпрограмм RDR, RDI рассмотримХподпрограмму INPLIN, которая производит ввод данных для лилейной системы, представленной уравнениями состояния x=Ax-f-pu, y=Cx-f-Du. \ Подпрограмма INRLIN Назначение: ввод модели в уравнениях состояния. Обращение: INPLIN (N, L, М, А, В, С, D). Параметры: N - раВмерность вектора переменных состояния, L - раёмерность вектора входных переменных, М - размерность вектора выходных переменных, А, В, С, D - матрицы коэффициентов уравнений состояния. Входные данные для подпрограммы INPLIN могут (Иметь вид: с ВХОДНЫЕ mvuE для МОДЕЛИ в уг-АвнЕЖЯх состотия
с=»5е » D°»» Данные вводятся в следующем порядке: N, L, М, первые строки матриц А, В..... N-e строки матриц А, В, первые строки матриц С, D, М-е строки матриц С, D. Опишем теперь подпрограммы GRAFIK и SCALE, которые обеспечивают печать графиков на АЦПУ и автоматический выбор масщтаба. Масщтаб графиков по оси ординат выбирается таким образом, что одно деление щкалы может принимать значения 10", 2-10", 4-10, 5-10*, где Л - целое число. Подпрограмма GRAFIK Назначение: печать графиков на АЦПУ, обеспечивает одновременный вывод до пяти кривых. Обращение: CALL GRAFIK (М, КТ, Y, YMIN. YMAX, TIT, TITLE). Параметры: М -• количество одновременно выводимых кривых, КТ - количество различных значений аргумента, У - массив результатов для графического вывода длиной (М-)-1)>Ц >tcKT, где Y(J) - значение аргумента в точке К; Y(J--L) - значение функции L в точке К; J= (М-Ь!);; (К-К= = 1..... КТ; L=l, М, YMIN - Массив минимальных значений щкалы, YMAX - массив максимальных значений щкалы, TIT - 8-байтовая текстовая константа, содержащая заголовок для аргумента, ailLIl - массив из М 8-байтовых текстовых констант, содержащий заголовки для функций. Первый символ каждой константы используется для печати соответствующего графика. Примечание. Если YMIN(I)<YMAX(I), то YMIN(I) и YMAX(I) определяют минимальное и максимальное значения шкалы для функции I. В противном случае подпрограмма автоматически выбирает масштаб. Используемые подпрограммы SCALE. Подпрограмма SCALE Назначение: выбор масштаба графика по оси ординат. Обращение: CALL SCALE (YMIN, YMAX, N). Параметры: YMIN, YMAX - минимальное и максимальное значения функции (на входе), минимальное и максимальное значения шкалы (на выходе), N - число делений шкалы. -1.0Е+00 -6 -1.2Е+00 -8 /е-01 -3 Ot-01 -4 3t-01 О.Ot-01 3 Ot-01 о.OE-01 4
3t-01 ot-01 Vfc-01 ot-ot l.Ot+00 j.i+00 лржер испольэовммя подпрограммы grafik dimension y(2e*),ymin(2),ymax(2) real»e tit,title(2) data tit/ x /, title/sin(x) ,cos(x) / data К/2/, 1ст/л1/, yhin/-1.,*./, ymax/l.,e./ do 5 k=1,kt xk-1)»(m+1)+1 x=<k-1)»«.2 y<j)=x y01)=sin(x) 5 YO2)=c0s(x) CfiLL grm"ik(m,kt,y,ymin,ymax,tit,title) stop с п0дпр(грм1ма grmik с subroutine gr«ik(m,kt,y,ymin,ymax,tit,title) dimension y(1),ymin<1),ymax(1),a(7) looicalm tit(8),title(8,h),it(61),ia,ib data ndy/6/, la/ v, ib/./ w«»mdy+1 nlie.nfldy+l do 20 1=1,m if<ymin(i).lt.ymax(i)) go to 1» yhin<i)=y<i+1) yhax(i)»y<i+1) do 5 k»1,kt ><k-1)«(m+1)+i+1 yhin<i)-ahinl<yhin(i),y(j)) ynax( i >>amxl (ynax( i), y( j)) 5 continue call scale(ymn(i),ymax(i),ndy) 1» l>-<yhax(i)-ymin(i))/float(ndy) a(1>>yhin(i) do 15 >>2,nd1 a(j)«a(>1»g if<aes(a(j)).le.0»l.e-4) a<j)=». 15 continue 2* print 1«5,(a(j),>1,nd1),title(1,i) print 11»,tit,< <title<j,k), j=l,8),k=1,m> i1-* do 55 k»1,kt if(i1.eq..1») i1-* il-il+l ifdl.eq.l) 00 to 35 do 25 1-1,n1 25 it<i)»ia do 3* i-1,nd1 3» 1t(1»»i-9)=ib 00 to 45 35 do 4* i>1,n1 4» it<i)»ib 45 do 5» im.h ><k-l)»(thl)+h-l oflloat(n1-1)»<y(j)-yhin<i))/<ymax<i)-yhin<i)) if(abs(0).gt.2m.) 00 to 5* >«41.5 if<j.ge.l.a*e.j.le.nl) it(j»=title<1,i) s* comtinue jl»<k-l>»(thl)+l j2-j1+1 js-jl-hi [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [ 96 ] [97] [98] [99] [100] 0.0202 |