Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

САПР СЭУ. Применение ЭВМ в расчетах и исследованиях главной судовой энергетической установки

Покупка
Основная коллекция
Артикул: 615084.01.99
Учебное пособие «САПР СЭУ. Применение ЭВМ в расчетах и исследованиях главной судовой энергетической установки» является второй частью теоретического курса по учебной дисциплине «СГЭО». Пособие включает методики расчета основных элементов ГСЭУ, позволяющие оценить влияние различных эксплуатационных параметров на показатели двигателя. Приведенные алгоритмы и тексты программ рекомендуется использовать для дипломного проектирования. Рассмотрена методика сопряжения ЭВМ с датчиками, установленными на дизеле, приведены способы обработки сигналов от датчиков. Представлена методика определения индикаторных показателей дизеля путем обработки и анализа индикаторной диаграммы. Для студентов специальности 240500, 140200 и инженерно - технических работников водного транспорта.
Якунчиков, В. В. САПР СЭУ. Применение ЭВМ в расчетах и исследованиях главной судовой энергетической установки : учебное пособие / В. В. Якунчиков. - Москва : МГАВТ, 2004. - 82 с. - Текст : электронный. - URL: https://znanium.com/catalog/product/401211 (дата обращения: 18.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.

МОСКОВСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ ВОДНОГО ТРАНСПОРТА

Кафедра Судовых Энергетических Установок и Автоматики






Методические указания для выполнения лабораторных работ по курсу «САПР СЭУ» Часть 1. Расчет на ПЭВМ главной судовой энергетической установки



для специальности 140200 "Судовые энергетические установки", 240500 "Эксплуатация судовых энергетических установок"

к.т.н. доц. Якунчиков В.В.


МГАВТ 2004

МОСКОВСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ ВОДНОГО ТРАНСПОРТА

  Кафедра Судовых Энергетических Установок и Автоматики






Методические указания для выполнения лабораторных работ по курсу «САПР СЭУ» Часть 1. Расчет на ПЭВМ главной судовой энергетической установки



для специальности 140200 "Судовые энергетические установки", 240500 "Эксплуатация судовых энергетических установок"

к.т.н. доц. Якунчиков В.В.


МГАВТ 2004

ББК 621.436





Якунчиков В.В.
САПР СЭУ. Применение ЭВМ в расчетах и исследованиях главной судовой энергетической установки. Учебное пособие.
М.: Изд-во «Альтаир» МГАВТ, 2004 - 82с., ил. 15.


      Учебное пособие «САПР СЭУ. Применение ЭВМ в расчетах и исследованиях главной судовой энергетической установки» является второй частью теоретического курса по учебной дисциплине «СГЭО».
      Пособие включает методики расчета основных элементов ГСЭУ, позволяющие оценить влияние различных эксплуатационных параметров на показатели двигателя. Приведенные алгоритмы и тексты программ рекомендуется использовать для дипломного проектирования.
      Рассмотрена методика сопряжения ЭВМ с датчиками, установлен1иймн на дизеле, приведены способы обработки сигналов от датчиков. Представлена методика определения индикаторных показателей дизеля путем обработки и анализа индикаторной диаграммы.
      Для студентов специальности 240500, 140200 и инженерно - технических работников водного транспорта.


      Рецензент - кандидат технических наук, профессор Епифанов В.С.

      Издается по решению Учебно - методического совета МГАВТ.

      Ответственность за оформление и содержание передаваемых в печать материалов несут авторы и кафедры академии, выпускающие учебно-методические материалы


СОДЕРЖАНИЕ

 №              Перечень лабораторных занятий -              Объем, стр
п/п           Наименование занятий, их содержание            часов     
 1  Запись - считывание массива да!шых и его обработка на    2        3
    ПЭВМ                                                               
2   Определение ординаты пересечения двух графиков, заданных 2       10
    отрезками. Интерполяция одномерная.                                
3   Интерполяция двухмерная                                  4       15
4   Запись на ПЭВМ экспериментальных данных с датчиков, ус-  2      20 
    тановленных на дизеле Пуск дизеля и снятие диаграммы в             
    цилиндре, измерение параметров ДВС.                                
5   Выборка и осреднение на ПЭВМ индикаторной диаграммы из   4      29 
    массива записанных данных. Устранение погрешностей изме-           
    рения, сглаживание ИД                                              
6   Моделирование рабочего цикла дизеля методом тепло - мас- 4      37 
    сообмена.                                                          
7   Определение полезной работы и индикаторных показателей   4      43 
    дизеля путем обработки ИД на ЭВМ по данным работы №4-5.            
8   Построение кривой тепловыделения в цилиндре по данным    2      46 
    работы №4-5.                                                       
9   Задержка самовоспламенения топлива в цилиндре дизеля.    4      48 
    Расчет тепловыделения по методике И.И. Вибе с помощью              
    одной экспоненты                                                   
10  Расчет тепловыделения по методике И.И. Вибе с помощью    2      52 
    двух экспонент.                                                    
11  Расчет впрыска топлива приближенным (статическим) мето-  2      57 
    дом.                                                               
    ПРИЛОЖЕНИЕ 1. Запуск и отладка программы в интерпрета-   -      60 
    торе языка QuickBasic фирмы Microsoft ™                            
    ПРИЛОЖЕНИЕ 2. Данные некоторых дизелей, применяю-        -      61 
    щихся на речном и морском флоте                                    
    ИТОГО, часов:_____________________________                   34    

© МГАВТ
© Якунчиков В.В.

                     Лабораторная работа № 1
        ««Работа с массивом данных на ПЭВМ. График функции»

Цель работы: освоение записи, считывания с диска и представления на экране массива данных. Графическое представление функции.

Общие сведения
      Лабораторные работы выполняются на языке программирования BASIC, по желанию можно использовать С и PASCAL.

      Краткие сведения по операторам языка Quick BASIC
      Операторы работы с массивами данных
      Двухмерные графики представляются, как правило, в виде одномерных массивов, а трехмерные графики - в виде двухмерных массивов.
      DIM АЦО) - объявление одномерного массива А размером 10 элементов (от 0 до 9).
      DIM АЦО, 10) - объявление двухмерного массива А размером 100 элементов (10x10). Объявление массивов происходит в начале программы;
      А(0) =1.5            - присвоение 0-го элемента массива;
      PRINT “А(0)=”;А(0)   - вывод на экран 0-го элемента массива;
     Пример
     Заполнение массива А с клавиатуры (в столбец).
     DIM А(10)
     FOR i=0 ТО 9 STEP 1
           PRINT “А(“; i ;”)=";: INPUT A(i)
     NEXT i
     Вывод на экран массива А (в столбец):
     FOR i=0 ТО 9 STEP 1
           PRINT “А(“. i ;")=”; A(i)
      NEXTi

      Операторы записи/считывания данных с диска
      Открытие файла a.dat для записи в него данных.
      OPEN “a.dat” FOR OUTPUT AS # 1
      Оператор записи 0-го элемента массива А в файл:
      PRINT #1, А(0)
      Открытие файла a.dat для считывания из него данных:
      OPEN “a.dat” FOR INPUT AS # 1
      Оператор считывания 0-го элемента массива А из файла:
      INPUT #1,А(0)
      После записи/считывания из файла, его необходимо закрыть оператором CLOSE #1

     Пример
     Запись данных массива А на диск в файл a.dat;
     OPEN “a.dat" FOR OUTPUT AS # 1
     FOR i=0 TO9STEP 1
           PRINT #1. A(i)
     NEXTi
     CLOSE #1
     Вывод данных из файла a.dat:
     OPEN "a.dat" FOR INPUT AS # I
     FOR i=0 TO 9 STEP 1
           INPUT #1. A(i)
     NEXTi
     CLOSE#!

     Вызов подпрограммы
      Часто для унификации программы и для уменьшения ее кода (многократно повторяющихся одинаковых фрагментов) возникает потребность воспользоваться подпрограммой. Организуется подпрограмма (англ. -SUBROUTINE) следующим образом. В заголовке главной программы производится описание подпрограммы с перечнем переменных, которых опа использует для получения результата и перечнем искомых переменных. Например, нам нужно рассчитать гипотенузу прямоугольного треугольника; пусть а, b - заданные стороны треугольника, с - искомая гипотенуза. Тогда подпрограмму в заголовке программы следует объявлять так:
      DECLARE SUB GetGip (a, b, с )
     После перевода этой строки вы попадете в экран подпрограммы (перемещение между главной программой и подпрограммами в QuickBasic производится по клавише F2). На экране подпрограммы автоматически проставлен заголовок подпрограммы (SUB...), и ее конец (оператор END SUB).
     Внутри подпрограммы записывается расчет гипотенузы:
     с = SQR(a л 2 + b л 2)
     Подпрограмма сформирована:
     Пример
     SUB Getgip ( a, b, с )
     с = SQR(a л 2 + b л 2)
     END SUB
     Переходим в основную программу (F2).
     Вызывается подпрограмма из основной оператором CALL:
     CALL GetGip(a,b,c)

     Пример главной программы
     DECLARE SUB Getgip ( a, b, с)
     INPUT “Введите сторону треугольника а = ”; а
     INPUT “Введите сторону треугольника b = ”; b
     CALL Getgip ( a, b, с )
     PRINT “Искомая гипотенуза = с
     END

     Глобальные переменные
      В некоторых случаях переменные удобнее делать глобальными, те. доступными для всех подпрограмм сразу без передачи их в качестве параметров. Для этого служит оператор COMMON SHARED. Тогда приведенный выше пример перепишется так:
     Пример
     DECLARE SUB Getgip ()
     COMMON SHARED a, b, c
     INPUT “Введите сторону треугольника a = a
     INPUT “Введите сторону треугольника b = ”; b
     CALL Getgip ( )
     PRINT “Искомая гипотенуза = с
     END


      Условие, условный переход
      Оператор условия имеет конструкцию IF (условие) THEN (оператор). Условие может быть одно или несколько, и включать в себя как алгебраические операторы сравнения (>,<,=,о,=>,<=), так и логические (AND - и, OR - или). Скобки ( ) - обеспечивают, при необходимости, дополнительный смысл условию. После THEN могут располагаться один или несколько операторов (разделенных двоеточием), которые выполняются при выполнении условия. Набор операторов может быть достаточно большим, поэтому в конструкции условия предусмотрен оператор окончания условия END IF. При этом все операторы между THEN и END IF будут выполняться только при выполнении условия IF.
      Вместо оператора после THEN может находиться метка, на которую передается управление программы после выполнения условия, например IFa<bTHEN 100.
      Пример
      IF a>b THEN a=b : PRINT “a>b” - простейшее условие


       IF a>b THEN                     - условие с блоком операторов
              а=а-Ь b=SQR(a) c=a+b
              PRINT “a=";a;”b=";b;”c=”;c
       END IF


     IF a<b THEN 100
     IFa>bTHEN 200
     IFa=bTHEN 300


- условия с переходом

      Безусловный переход
      Оператор GOTO ххх осуществляет безусловный переход на строку программы с меткой ххх, причем метка может быть представлена как в числовом виде (от 1 до 65353), так и в строчном, (английские символы от 1 до 256, из них значимые - первые 32).

     Использование графики в Quick Basic
     Включение графического режима
      Оператор SCREEN NN переводит экран в графический режим, причем NN - номер этого режима, отвечающий за разрешение экрана и цветовую палитру. Например, при NN 12 разрешение экрана Х У составляет 640x480 точек при палитре 16 цветов.
      Оператор COLOR отвечает за цвет на экране. Его формат следующий: COLOR цвет пера,[цвет фона]. Цвета лежат в пределах от 0 до 15: 0 = черный     4 - красный     8 - серый 12 - светло-красный
1= синий       5 = малиновый   9 = голубой                 13 = розовый
2  = зеленый   6 = коричневый  10 = салатовый    14 = желтый
3  = ультрамарин 7 = светло-серый 11 = светло-голубой 15 = белый


      Задание области вывода на экране
      Оператор VIEW (X1,Y1)-(X2,Y2) - служит для определения области для вывода графики вывода на экране. Экран имеет перевернутую декартову систему координат, т.е. начало координат (0,0) в левом верхнем углу. Поэтому XI - координата левого края графика,
            YI - координата верхнего края,
            X1 - координата правого края,
            Y1 - координата нижнего края графика.
      Т.к. экран при 12-м графическом режиме имеет размер 640x480 точек, причем отсчет точек начинается от 0, то максимальная область вывода графики (во весь экран) может быть такая: VIEW (0,0}-(639,479),14. Здесь через запятую можно указать цвет рамки графика (14=желтый).


      Задание масштабного коэффициента
      Для вывода инженерных зависимостей необходимо задать масштабный коэффициент для графика. Он задается следующей командой: WINDOW (Xmin, Ymin)-(Xmax,Ymax). Здесь Xmin, Ymin - минимальные значения соответственно по оси абсцисс и ординат графика, а Xmax,Ymax - максимальные значения графика. Например, для вывода графика зависимости винтовой характеристики дизеля, мощность которого изменяется от 10 кВт до 100 кВт, а частота вращения от 400 до 750 об/мин масштабный коэффициент будет такой: W1NDOW(400,10)-(750,100).

      Графические примитивы
      Точка-          PSET (х, у), COLOR
      Отрезок -       LINE (х 1. yl) - (х2-у2), COLOR
      Окружность - CIRCLE (х, у), radius. COLOR
     Причем везде х,у - расчетные координаты элемента на графике, представленные в нормальных единицах (мощность, метры, джоули и т.п ). Графические примитивы можно использовать только после выполнения грех предыдущих операторов - SCREEN, VIEW, WINDOW.

     Запись массива данных на диск и представление его в виде графика
      Практически любые расчеты требуют представления результатов или исходных данных в графическом виде - как правило, двухмерных массивов. Эти данные на экране представляются в виде графиков кривых или точек. Пример такой задачи представлен ниже.

Рис. 1.1 Определение кпд турбины от напора по графику

      Для этого необходимо задать массив данных графической зависимости (в нашем случае одномерный массив кпд турбины, заданный по дискретному шагу - напору турбины).
      Примером послужит экономическая характеристика турбины турбокомпрессора, приведенная на рис. 1.1.
      В программе проще всего задать эту характеристику одномерным массивом, причем т.к. абсцисса (напор турбины) - известна, задается только ордината - кпд турбины:
      DIM TurbineKpdHt(7)
      TurbineKpdHt (O)=35
      TurbineKpdHt (1)=59
      TurbineKpdHt (2)=70
      TurbineKpdHt (3)=74
      TurbineKpdHt (4)=72
      TurbineKpdHt (5)=68
      TurbineKpdHt (6)=60
      Для того, чтобы использовать эту характеристику в дальнейшем, сохраним ее из программы на диск в файл “turbine.dat”:
       Тогда дополним программу циклом:
       OPEN “turbine.dat” FOR OUTPUT AS # 1
       FOR i=0 TO 6 STEP 1
             PRINT #1, TurbineKpdHt (i)
       NEXT i
       Кроме того, следует задать значение оси абсцисс (напора турбины), -максимальным количеством шагов по оси X (числом элементов массива), начальным значением параметра X и шагом по оси X:

      Htnumber - б : PRINT #1, Htnumber ‘число элементов (размер) массива -I
      Htmin = 2: PRINT #1, Htmin      'минимальное значение по оси X
      Htstep = 0.2 : PRINT #1, Htstep ‘шаг по оси X
      Для удобства обработки массива эти значения лучше задавать до значений оси ординат, т.е. эти три строки находятся перед циклом FOR, тогда заголовок цикла можно переписать так.
      FOR i=0 ТО Htnumber STEP 1
      Заполнять файл быстрее всего в обычном текстовом редакторе, принимая во внимание, что каждое новое значение начинается с новой строки (в столбик) и пробелы в начале строки недопустимы.
      Например, в Norton Commander надо нажать Shift+F4, ввести имя файла -turbine.dat (ENTER) и ввести в столбик (через ENTER):
      6
      2
      0.2
      35
      59
      70
      74
      72
      68
      60
      Нажать F2 - сохранить, и ESC - для выхода из редактора. Данные сохранены на диске и готовы к использованию в любых ваших программах!
      Тогда для загрузки этой характеристики из файла в программе надо записать:
      DIM TurbineKpdHt(20)
      OPEN “turbine.dat” FOR INPUT AS # 1
      INPUT #1. Htnumber
      INPUT #1, Htmin
      INPUT #1, Htstep
      FOR i=0 TO Htnumber STEP 1
           INPUT #1. TurbineKpdHt(i)
      NEXTi
      Для вывода графика на экран включим графический режим.
      SCREEN 12 - номер графического режима
      VIEW(10,10)-(630,440), 14 - рамка желтого цвета почти во весь экран
      WlNDOW(2,0)-(4,100) - масштабный коэффициент
      Для вывода графика на экран в виде точек запишем:
      Ht = Htmin
      FOR i=0 TO Htnumber STEP 1
           PSET( Ht, TurbineKpdHt(i) )
           Ht = Ht + Htstep
      NEXTi
      Для вывода графика на экран в виде кривой (из отрезков) запишем.
      Ht = Hanin + Htstep
      FOR i=l TO Htnumber STEP I
           L1NE( Ht-Htstep, TurbineKpdHt(i-1) ) - ( Ht, TurbineKpdHt(i) )
           Ht = Ht + Htstep
      NEXTi

8

   Варианты заданий для выполнения__________________________
   Гема I Запись на диск в файл, считывание из файла и вывод двух
   ; мерного массива в текстовом и графическом виде на экран.___
    Задание: Построить график функции, записать его на диск в файл

(имея по оси X 10 точек), считать из файла и вывести в виде графика.
I Функция - линейная, вида 2x4 5у= 10____________________________
। Функция - линейная, вида 2у-3х=9_______________________________
! Функция равносторонняя гипербола, вида у=4/х

4  Функция - равносторонняя гипербола, видау=-1/х     
5  Функция - квадратичная парабола, вида у=1/2х -4х ьб
6  Функция - квадратичная парабола, вида у=2х         
7  Функция - степенная, вида у=х1/2                   
8  Функция - степенная, вида у=10х(11                 
9  Функция - кубическая парабола, вида y=xJ           
10 Функция - двузначная парабола, вида y=±2x1/z       
И  Функция - полукубическая гипербола, вида y=l/2xJ/z 
12 Функция - квадратичная гипербола, вида у=х‘2       
13 Функция - показательная, вида у=Зх                 
14 Функция - показательная, вида у=(1/2)х             

Лабораторная работа № 2
        «Пересечение двух графиков. Одномерная интерполяция»


Цель работы: Определение координаты пересечения двух графиков, заданных отрезками, методом решения уравнения прямой. Одномерная интерполяция.


Общие сведения


     Определение точки пересечения двух графиков
     В практике вычислений часто необходимо определить точку пересечения графиков двух кривых, заданных отрезками.
     В качестве примера такой задачи можно привести определение абсциссы пересечения двух графиков кривой сопротивления движению судна в зависимости от скорости его движения и упора винта при постоянной частоте вращения. Скорость движения судна является искомой величиной.


Рис.2.1 Пример определения скорости судна

     Здесь графики на двухмерной плоскости представлены набором отрезков с одинаковым шагом (инкрементом) по оси X. В этом случае определение точки пересечения можно произвести методом совместного решения уравнения прямых.
     При этом существует три варианта взаимного расположения отрезков: 1) прямые, на которых лежат отрезки, не пересекаются (отрезки параллельны), 2) прямые, на которых лежат отрезки, пересекаются, но отрезки лежащие на них не пересекаются, 3) прямые и отрезки пересекаются.
     Выявить каждый из этих случаев можно, определив коэффициенты уравнения прямой для каждого из отрезков. Пусть заданны координаты двух отрезков парами значений xl,у 1 - х2,у2 и xl l,yl 1 - х22,у22. Искомые координаты точки пересечения (если они существуют) этих отрезков пусть

ю

ё\ л: \л Параметр. характеризующий вариант взаимного расположения отрезков назовем рг, причем он может принимать значения pr= -1 отрезки параллельны, рг=0 отрезки не параллельны, но не пересекаются, рг=1 отрезки пересекаются. Примем также в качестве параметров коэффициенты \равнений прямых, на которых лежат отрезки al, Ы и а2, Ь2. Известно \ равней не прямой у=ах+Ь, причем a=dy/dx. Тогда можно записать следующую программу и вспомогательные подпрограммы:

Пример
SUB cross (xl, yl, x2, y2, xl 1, yl 1, x22, y22, x, y, pr)
xl =10: x2 =20:yl =10:y2 =8
xll=10:x22=20 yll=8 :y22=10
CALL cross (xl, yl, x2, y2, xl 1, yll, x22, y22, x, y, pr)
IF Pr=l THEN PRINT “x,y=”;x;y
END
Подпрограмма определения координаты точки пересечения (если есть)
SUB cross (xl, yl, x2, y2, xll, yll, x22, y22, x, y, pr)
SUB koeff (xl, yl. x2, y2, a, b)
CALL koefRxl, yl, x2, y2, al, bl)
CALL koeft(xl 1, yl 1, x22, y22, a2, b2)
IF ABS(al -a2) = 0THEN pr = -l:GOTO 100
x = (b2 - bl) / (al -a2)
IF (x < x 1 AND x < x2 AND x < xl 1 AND x < x22)
OR (x > xl AND x > x2 AND x > xl 1 AND x > x22) THEN pr = 0: GOTO 100
pr=l
у = al * x + Ы
100
END SUB
Подпрограмма определения коэффициентов прямой
SUB koeff (xl, yl, x2, y2, a, b)
dx = x2 - xl
dy = y2 - yl
a = dy / dx
b=yl - a * xl
END SUB

6  Функция №8, №9.                                          :  
1  Функция №9, №10.                                       ---।
8  Функция №9, №11.                                            
9  Функция № 12, № 13.                                         
10 Функция №1, №14.                                            
11 Функция №3, №6.                                             
12 Функция №4, №6.                                             
13 Функция №5, №9.                                             
14 Фун кция № 13, № 10,_________________________               

     Одномерная ин/перполяцня
     Наиболее распространенной задачей при инженерных расчетах является одномерная интерполяция, т.е. определение ординаты заданного графика функции по его абсциссе (и наоборот).
     В качестве иллюстрации воспользуемся опять рис. 1.1. Пусть задан массив данных турбины кпд=С(Нт) и необходимо определить ее кпд при известном напоре (Нт=2.5).
     Так как график кривой задан отрезками, в начале необходимо определить начальную и конечную координату отрезка, к которому принадлежит искомый X (напор турбины), и внутри этого отрезка (на линии) провести линейную интерполяцию. Решая совместно уравнения прямой у=ах+Ь можно вывести зависимость для искомой ординаты У через известный X:
Г=АЛ-(х₃-Х)+Л                      ,
х₂-х,
где xi,yi - левая координата отрезка, содержащего X,
     Х’.Уг соответственно правая координата этого отрезка.
     В качестве примера подпрограммы, реализующей алгоритм линейной интерполяции можно привести подпрограмму под названием Interpolator? D, причем массив ординат здесь назван Massiv, искомый У находится для заданного X:

выполнения

№ Тема 2. Определение точки пересечения двух графиков, заданных п/п равными отрезками_________________________________________
    Задание: построить на экране графики двух функций Темы 1, заданных отрезками с равным шагом и определить координаты точки пе-_ ресечения, вывести ее координаты на экран._________________
1_ Функция №1,№3.____________________________________________
_2_ Функция №2, №4. ___________________________________________
3  Функция Ksl, №6,____________•_____________________________
4  Функция №6, №5.________________________________________ _
5  Функция №5, №7,

Пример
SUB Interpolator2D( Massi’ xmax = xmin+xstep*xnumber xcur = xmin+xstep
FOR i=l TO xnumber STEP 1

     if xcur >= X THEN
          il = i-1
          i2 = i
          xl= xcur-xstep
          x2= xcur GOTO exitO
     END IF

xnumber, xmin, xstep, X, Y) 'максимальное значение по оси X 'текущее значение по оси X 'цикл поиска отрезка, которому 'принадлежит заданный X 'если текущий х >-• заданного X 'индекс левой координаты отрезка (х) 'индекс правой координаты отрезка(х) 'левая координата отрезка (х) 'правая координата отрезка(х) 'безусловный выход из цикла

12

ч. . xcui^xstep 'прибавка шага по х к текущему значению NEXT 1 exitO:
     yl = Massivtil]       'координаты по (у) левой и правой
     у2 = Massiv[i2]       'границ отрезка, на котором лежит X
     V Ху1-У?' ' (х2-х1) * (х2-Х) + у2 'интерполяция
END SUB


Лгл подпрограмма вызывается в основной программе так:
SUB Interpolator2D( Massiv, xnumber, xmin, xstep, X, Y)
DIM TurbineKpdHt(20)
OPEN "turbine.dat* FOR INPUT AS # 1
INPUT #1, Htnumber
INPUT #1, Htrain
INPUT #1, Htstep
FOR i=0 TO Htnumber STEP 1
      INPUT #1, TurbineKpdHt(i)
NEXT i
INPUT "Задайте напор турбины Нт(2-3.2)= ";Ht
CALL Interpol at or 2D (TurbineKpdHt, Htnumber, Htmin, Htstep, Ht, kpd)
PRINT "Искомый кпд турбины =";kpd
CLOSE #1
END
      Обратите внимание, что имена переменных в заголовке / теле подпрограммы (SUB) и в самой программе могут быть разными, важен лишь их порядок перечисления. Это очень удобно, т.к. позволяет ограничиться написанием только одной универсальной подпрограммы для каждого вида вычислений и использовать ее в любой другой программе без изменений.

7. Задайте график кубической параболы, запишите и считайте его с диска с выводом на экран
8. Нарисуйте график любой функции во весь экран, изменяя с клавиатуры масштабный коэффициент, уменьшите график в 2 и 4 раза
9. Определите точку пересечения двух прямых, заданных равными отрезками, с выводом их на экран
10. Определите точку пересечения двух парабол разной степени, заданных равными отрезками, с выводом их на экран
11. Определите точку пересечения параболы и прямой, заданных равными отрезками, с выводом их на экран
12. Найдите У, соответствующий заданному с клавиатуры X для уравнения прямой, с выводом графика на экран
13. Найдите У, соответствующий заданному с клавиатуры X для уравнения параболы, с выводом графика на экран
14. Найдите У, соответствующий заданному с клавиатуры X для уравнения гиперболы, с выводом графика на экран
15. Найдите У, соответствующий заданному с клавиатуры X для уравнения синусоиды, с выводом графика на экран
16. Найдите У. соответствующий заданному с клавиатуры X для уравнения косинусоиды, с выводом графика на экран

       Варианты заданий для выполнения____________________________
  № Тема 2. Одномерная интерполяция графика фунkiши
  п/п_______________________________________________________________________________
        Задание: построить на экране график функции, заданный в Теме 1.
  ______Определить по заданному X ординату графика У._______________________________ 1-14 Функции в соответствии с вариантами приведены в теме 1. Коорди-ната X произвольная, лежащая внутри графика._______________________


   Контрольные вопросы для защиты
   1. Что такое интерполяция, экстраполяция, аппроксимация?
   2. Как записать на диск в файл и считать массив данных в BASIC?
   3. Покажите, как представить на экране график функции в BASIC
   4. Покажите, как задать и ввести двухмерный и одномерный массив
   5. Создайте простейшую подпрограмму расчета площади круга, при том, что его диаметр вводится в главной программе, передавая его в качестве параметра в подпрограмму
   6. Создайте простейшую подпрограмму расчета длины окружности, при том, что ее диаметр вводится в главной программе, используя глобальную переменную


13

                    Лабораторная работа № 3
                   « Двухмерная интерполяция »


Цель работы: освоение работы с трехмерным массивом данных. Графическое представление трехмерного массива. Ин герполяция трехмерного массива методом комплексной линейной интерполяции.


Общие сведения
      Трехмерный массив данных часто встречается в практике проектирования и расчета СЭУ. Это разного рода универсальные характеристики, например, универсальная характеристика двигателя Pe,be=f(n), универсальная характеристика компрессора IlK,n=f(Gair), экономические и расходные характеристики турбины, характеристики винтового комплекса и т.п. Как правило, в 90% случаев семейство графиков расположено практически параллельно (эквидистантно) друг другу, или их расположение можно принять за таковое без существенной погрешности (см. примеры ниже). В этом случае решение для точки сводится к простейшему - последовательной линейной интерполяции.
      Для определения искомой точки здесь необходим учет двух параметров - выражаясь алгебраически, Y определяется по заданному X и Z.


Рис.3.4 Коэффициент волнового сопротивления от Фруда и коэффициента полноты

Рнс.3.5 Характеристика трубопровода землесоса при различных грунтах

16

Рис.3.3 Определение надбавки на волновое сопротивление от числа Фруда, длины и ширины судна

     На рисунках изображены примеры трехмерных массивов, характеризующих зависимости для расчетов различных элементов СЭУ.

Рис.3.1 Коэффициент пропорциональности К' для расчета сопротивления судна в зависимости от его длины и осадки

Рис.3.2 Определение надбавки на влияние коэффициента полноты корпуса, длины и ширины

15

Массив данных в этом случае задастся двухмерный. Например, для графика на рнс.3.1 имеем массив из 7 кривых (по параметру L/T), каждая из них задана 9 точками (по параметру 6), тогда запишем:
DIM KLTd (9.7)
Зададим значение оси абсцисс 8 - максимальным количеством шагов

по осн 8 (числом элементов массива минус 1), начальным значением параметра 8 и шагом по оси 8, а также значение оси L/T - максимальным количеством шагов по оси L/T (числом элементов массива минус 1), начальным значением параметра L/T и шагом по оси L/T:
DELTAnumber = 8 'число элементов (размер) массива по оси дельта -1

DELTAmin =0.5 'минимальное значение по оси дельта
DELTAstep = 0.05 'шаг по оси дельта
LTnumber = 6 ‘число элементов (размер) массива по оси L/T -1
LTmin        =20 ‘минимальное значение по осп L/T
LTstep =5 'шаг по оси L/T
Введем значения Y (т.е.К’) массива и запишем их на диск:
OPEN “KLTd.dat" FOR OUTPUT AS # I

PRINT #1, DELTAnumber
PRINT #1, DELTAmin PRINT #1, DELTAstep PRINT #1. LTnumber

PRINT #1, LTmin
PRINT #1. LTstep
FOR i=0 TO 8 STEP 1 ‘обратите внимание: переменная цикла увеличивается до
FOR j=0 ТО 6 STEP 1 'РАЗМЕР МАССИВА-1, т.к. отсчет начинается с 0.
      INPUT “K=f(“;i;”," j;”) ="; KLTd (i, j)
      PRINT #1, KLTd (i,j)
NEXTj
NEXTi

Для первой (самой низкой, L/T=50) кривой введем значения ординаты (К’) для каждого значения 8 (от 0.5 до 0.9 с шагом 0.05):
KLTd (0,0) = 1.050
KLTd (0, 1)= 1.055
KLTd(0, 2) = 1.060
KLTd (0, 3) = 1.075
KLTd (0, 4) = 1.095
KLTd (0,5) =1.110
KLTd (0,6)= 1.135
KLTd (0,7)= 1.155
KLTd(0, 8) = 1.180
И так далее для остальных кривых параметра L/T (6 штук), причем номеру кривой будет соответствовать первый индекс массива (1).


Алгоритм подпрограммы основан на линейной интерполяции, приведенной в л/р №2. Здесь также находится блок перебора отрезков, из которых состоит график, до совпадения с заданным X, только перебор производится для графика как по оси X, так и по числу графиков - оси Z. В результате этого заданный X как бы окружается четырьмя точками - узлами координатами ближайших отрезков справа - слева, сверху—снизу.

      После этого можно применить линейную интерполяцию по оси Y, а затем по оси Z, т.е. провести ее последовательно. Пример такой подпрограммы приведен ниже. Здесь в качестве параметров добавлены параметры оси Z - минимальное значение парам&гра zmin, шаг между графиками zstep, размер, т.е. количество элементов массива по оси Z - количество графиков znumber. В данном примере заданы X и Z, находится Y: Пример
SUB Inerpolator3D

(znumber, xnumber, xmin, xstep, zmin, zstep, Massiv, X, Y, Z) zmax = zmin + zstep * znumber xcur = xmin + xstep zcur = zmax - zstep FOR i = 1 TO xnumber STEP 1 IF xcur >= X THEN il = i - 1 i2 = i xl = xcur - xstep x2 = xcur GOTO exitl END IF xcur = xcur + xstep NEXT i exitl: zcur = zcur - zstep FOR j = 1 TO znumber IF zcur <= z THEN 31 = 3 32 = 3 - 1 zl = zcur - zstep z2 = zcur GOTO exit2 END IF zcur = zcur - zstep NEXT j exit2: yl =  Massiv (j2, il)
y2 =  Massiv (jl, il)
y3 =  Massiv (jl, i2)
yd =  Massiv (j2, i2)
y5 =  (уЗ ~ y2) /  (x2  - xl) * (X  - xl)  + у2
уб =  (y4 - yl) /  (x2  - xl) * (X  - xl)  + yl
Y =   (z2 Z) /     (22  - 21) * <У5 - Уб)  + уб
END SUB


Эта подпрограмма вызывается в основной программе так:

SUB Interpolator3D (znumber, xnumber, xmin, xstep, zmin,

zstep, Massiv,

X, Y, Z)

DIM KLTd(10,10)
OPEN "KLTd.dat’ FOR INPUT AS # 1
INPUT #1, DELTAnumber
INPUT #1, DELTAmin

18

17