ВЕКТОРНО-ГРАФИЧЕСКИЙ АНАЛИЗ В СИСТЕМЕ "ВЕКТОР" ПОД WINDOWS
/9 практических занятий в примерах /
Введение
 
 n/n   Название задач и обращение к тексту их МК   Сопровождающий рисунок 

 
1. Введение в систему "Вектор" под Windows  
1.0.0. Исходное состояние  системы "Вектор" 
1.0.1.Сценарий задания отрезка и окружности 
1.0.2. Базовые макрокоманды (МК) окружности и отрезка 
1.0.3. Построение отрезка и окружности через базовые МК  
1.1.3.Перебор точек на прямой и соединение их с третьей
 
картинка 
рис.1.0.1 
 
рис. 1.0.3  
рис. 1.1.3 
2. Алгоритмизация  
2.1.1. Окружность как геометрическое место точек  
2.2.1  Геометрическое место линий между двумя заданными 
2.3.1  Сетка на 4-угольнике 
2.4.1 Случайные числа Заполнение экрана окружностями 
рис. 2.1.1 

рис. 2.3.1 
рис. 2.4.1 


 
3. Оптимизация  
3.1.1. Минимум расстояния от точки до прямой (1-этап) 
3.1.2  2-й этап - построение ЦФ 
3.1.3  Выход из МК  при достижении минимума 
3.2.1. Выбор из трех чисел минимальное 
3.3.1. Выбор из множества чисел минимальное 
3.3.2. Задача 3.3.1 + выход из МК при достижении min  
рис. 3.1.1 
рис. 3.1.2 
рис. 3.1.3 
рис. 3.2.1 
рис. 3.3.1 
рис. 3.3.2

 
4.Оптимизационные задачи связанные со скоростью 
4.1.1 Движение по скошенноу и не скошенному лугам 
4.1.2.Движение по скошенноу и не скошенному лугам - 2 этап 
4.2.1.Движение судна по течению +  без него 
4.3.1.Бернулли КНС  - расчет и построение ЦФ 
4.3.2.Кривая -( 2отрезка)  наискорейшего спуска
рис. 4.1.1 
рис. 4.1.2 
рис. 4.2.1 
рис. 4.3.1 
рис. 4.3.1

 
5. Статанализ  
5.1.1 Обработка экспериментальных данных (1-й этап) 
5.1.2 Обработка экспериментальных данных (2-й этап) 
5.1.3 Обработка экспериментальных данных (3-й этап) 
5.1.4 Обработка экспериментальных данных (4-й этап) 
5.2.1. Определение роста человека от возраста
рис. 5.1.1 
рис. 5.1.2 
рис. 5.1.3 
рис. 5.1.4 
рис. 5.2.1

 
6. Многокритериальные задачи, компромисс 
6.1.1. Первый город стремится постоить завод ближе 
6.1.2. Второй город стремится постоить завод ближе 
6.1.3. Оба города  стремится к общему минимуму 
6.1.4. Второй город при этом имеет приоритет  
6.1.5. Решили на одинаковой расстоянии
рис. 6.0.0 
рис. 6.1.1 
рис. 6.1.2 
рис. 6.1.3 
рис. 6.1.4 
рис. 6.1.5

 
7. Графо-сетевые медоды моделирования инж. задач 
7.1.1. Найти оптим. путь судна по расходу топлива и прибыли 
7.2.1. Задача Вентцель (постановка)
рис. 7.1.1 
рис. 7.2.1

 
8. Задачи линейного и нелинейного программирования  
8.1.1. Задание области ограничений и  ЦФ 
8.1.2. Перебор точек на всей области ограничений 
8.1.3. Перебор точек на границе области ограничений 
8.1.4. Вычисление ЦФ и построение  графика ЦФ  
8.2.1. Задача о посылке-доке (без графика ЦФ)
рис. 8.1.1 
рис. 8.1.2 
рис. 8.1.3 
рис. 8.1.4 
 
 
9. Комбинаторика и комбинаторный анализ 
9.1.1. Из  чисел 2, 4, 6, 1, 9, 3 выбрать число 6 (метод случ. чисел
9.1.2. Из  чисел 2, 4, 6, 1, 9, 3 выбрать число 6 (перебором в цикле
9.2.1. Ло Шу - поиск  чисел по методу случайных чисел 
9.2.2. Ло Шу - поиск  чисел через  циклы
рис. 9.1.1 
рис. 9.1.2 
 
 
 
 
 

1. Введение в систему "Вектор" под Windows

1.0.1.Полученный сценарий при задания отрезка и окружности в диалоге

  otrezok.beg(0) = 101
  otrezok.beg(1) = 236
  otrezok.end(0) = 414
  otrezok.end(1) = 155
  otrezok.Draw()

  ellips.centr(0) = 220
  ellips.centr(1) = 48
  ellips.gAx = 20
  ellips.vAx = 20
  ellips.Draw()


Преобразование сценария в базовые подпрограммы (подстегиваются в конец МК) построения окружности и отрезка

' базовая программа  построения окружности)
'  входные параметры:
            ' x100, y100 - положение центра
            ' r100 - радиус

Sub okr (x100, y100, r100)
 ellips.centr(0) = x100
 ellips.centr(1) = y100
 ellips.gAx = r100
 ellips.vAx = r100
 ellips.Draw()
End Sub
 

' базовая программа (собрутина) построения отрезка)
'  входные параметры:
            ' x101, y101 - координаты начала отрезка
            ' x102, y102 - координаты конца

Sub lin (x101, y101, x102, y102)
  otrezok.beg(0) = x101
  otrezok.beg(1) = y101
  otrezok.end(0) = x102
  otrezok.end(1) = y102
  otrezok.Draw()
End Sub
 


МК У1_0_3.vbs 

' построение отрезка через обращение к базовой программе
lin 100, 240, 500, 155
' построение отрезка через обращение к базовой программе
okr 220, 50, 20
' окружности в начале и конце отрезка
okr 100,240,15
okr 500,155,15
 
 
 

' базовая программа (собрутина) построения окружности)
'  входные параметры:
            ' x100, y100 - положение центра
            ' r100 - радиус

Sub okr (x100, y100, r100)
 ellips.centr(0) = x100
 ellips.centr(1) = y100
 ellips.gAx = r100
 ellips.vAx = r100
 ellips.Draw()
End Sub
 

' базовая программа (собрутина) построения отрезка)
'  входные параметры:
            ' x101, y101 - координаты начала отрезка
            ' x102, y102 - координаты конца

Sub lin (x101, y101, x102, y102)
  otrezok.beg(0) = x101
  otrezok.beg(1) = y101
  otrezok.end(0) = x102
  otrezok.end(1) = y102
  otrezok.Draw()
End Sub


МК У1_1_3.  Перебор точек на прямой и соединение их с третьей

' занесем координаты начала и конца отрезка в компаненты точек р1,р2

x1 = 100
y1 = 240
x2 = 500
y2 = 155
lin x1,y1,x2,y2 '  сразу же строим отрезок p1-p2

' занесем координаты центра точки и ее радиус в р3 и r3

x3= 220
y3= 50
r3= 20
okr x3,y3,r3    ' окружность в точке р3

' строим серию точек на прямой р1-р2, cоединяя их с р3

For s = 0. To 1.01 Step 0.05
 x =(1.-s)*x1+s*x2
 y =(1.-s)*y1+s*y2
 lin x, y, x3,y3
 okr x, y, 10
Next
 

* Базовые МК упущены окружности и отрезка опущены


МК У2_1_1

' Алгоритмизация.
' Найти геометрическое место точек p равноудаенных от заданной pc
' на расстояние d = 100
' Дано:

xc = 200
yc = 200
d=100

okr xc,yc,10    'окружность в точке рc

' известно что это - окружность

x103=xc+d
y103=yc
For s = 0. To 6.32 Step 0.1
 x = xc + d*cos(s)
 y = yc + d*sin(s)
 lin x, y, xc,yc
' okr x, y, 10
      lin x103, y103, x,y
x103=x
y103=y
Next



МК У2_2_1
' Алгоритмизация.
' Найти геометрическое место линий между двумя заданными p11-p12, p13-p14

x11 = 40
y11 = 60
x12 = 300
y12 = 50
x13 = 50
y13 = 150
x14 = 290
y14 = 200

For s = 0. To 1.01 Step 0.1
 x1= (1.-s)*x11+ s*x13
 y1= (1.-s)*y11+ s*y13
 x2= (1.-s)*x12+ s*x14
 y2= (1.-s)*y12+ s*y14
 lin x1, y1, x2,y2
Next



МК У2_3_1
' Алгоритмизация.
' Найти ортогональную сетку линий между точками p11-p12, p13-p14

x11 = 40
y11 = 60
x12 = 300
y12 = 50
x13 = 50
y13 = 150
x14 = 290
y14 = 200

' Задача решена с помощью вложенного цикла

For u = 0. To 1.01 Step 0.1

 x1= (1.-u)*x11+ u*x13
 y1= (1.-u)*y11+ u*y13
 x2= (1.-u)*x12+ u*x14
 y2= (1.-u)*y12+ u*y14
 lin x1, y1, x2,y2
  For v = 0. To 1.01 Step 0.1
   x1= (1.-v)*x11+ v*x12
   y1= (1.-v)*y11+ v*y12
   x2= (1.-v)*x13+ v*x14
   y2= (1.-v)*y13+ v*y14
   lin x1, y1, x2,y2
Next
Next


МК У2_4_1
 
' Работа со случайными числами. Построение окружностей радиуса 20 в прямоугольнике 580х290
 

For u = 0. To 1.01 Step 0.01

 randomize
 x=int(rnd(1)*600+20)
 y=int(rnd(1)*300+10)
 okr x, y, 20
Next


МК У3_1_1 - 1-й этап расчет без графика ЦФ

' Оптимизация.Найти наикратчайшее расстояние от точки р3 до прямой р1-р2
' Дано:

x1 = 100
y1 = 240
x2 = 500
y2 = 155

lin x1,y1,x2,y2 '  сразу же строим отрезок p1-p2

x3= 220
y3= 50
r3= 20

okr x3,y3,r3    ' окружность в точке р3

' строим серию точек на прямой р1-р2, cоединяя их с р3 тут же
' вычисляем длины отрезков и сравнивая с эталаном выбираем меньшее

' эталон  положив в него число  заведомо большее
smin=10000

For s = 0. To 1.01 Step 0.05

 x =(1.-s)*x1+s*x2
 y =(1.-s)*y1+s*y2
 lin x, y, x3,y3
 okr x, y, 10

dlina=sqr((x3-x)*(x3-x)+(y3-y)*(y3-y))
if dlina < smin Then smin=dlina

Next

' MsgBox ("МИНДЛИНА" & smin) - почему-то не работает ?!!!



 

МК У3_1_2. Второй шаг: повторяем тот же цикл, но при достижении минимума из
' цикла выйти и в текущей точке построить окужность

ssmin=smin

For s = 0. To 1.01 Step 0.05

 x =(1.-s)*x1+s*x2
 y =(1.-s)*y1+s*y2
 lin x, y, x3,y3
 okr x, y, 10

dlina=sqr((x3-x)*(x3-x)+(y3-y)*(y3-y))
if dlina < smin Then smin=dlina
if dlina = ssmin Then Exit For

Next


МК У3_1_3 Третий шаг: повторяем первый цикл с построением  ЦФ

x103=x1
y103=sqr((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1))
 

For s = 0. To 1.01 Step 0.05

 x =(1.-s)*x1+s*x2
 y =(1.-s)*y1+s*y2
 lin x, y, x3,y3

dlina=sqr((x3-x)*(x3-x)+(y3-y)*(y3-y))

if dlina < smin Then smin=dlina
lin x103, y103, x, dlina
x103=x
y103=dlina

Next


МК У3_1_4  Четверый шаг: повторяем второй цикл с построением тут же ЦФ
' график должен оборваться (третий шаг удалили)

ssmin=smin

x103=x1
y103=sqr((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1))
 

For s = 0. To 1.01 Step 0.05
 x =(1.-s)*x1+s*x2
 y =(1.-s)*y1+s*y2
 lin x, y, x3,y3

dlina=sqr((x3-x)*(x3-x)+(y3-y)*(y3-y))

if dlina < smin Then smin=dlina
lin x103, y103, x, dlina
x103=x
y103=dlina
if dlina = ssmin Then Exit For
Next
 
 
 



МК У3_2_1
' Из набора 3-х чисел s1, s2, s3 найти минимальное
s1 = 80
s2 = 40
s3 = 60

' Эталон
s99 = 200

if s1 < s99 Then s99=s1
if s1 < s99 Then s99=s1
if s1 < s99 Then s99=s1

'  в  s99 - будет лежать минимум

' строим график зависимости значения числа от его номера

lin 1*100, s1, 2*100, s2
lin 2*100, s2, 3*100, s3


МК У3_3_1  Из набора чисел s1, s2, s3...sn     найти минимальное

Dim s
s = Array(70, 50,80,60,10,20,5,70,90,35,15,76,54,77,125,165,66,105,39,84)

' Эталон
 s99 = 200
x103=0
y103=s(0)

 For n = 0 To 19 Step 1

  if s(n) < s99 Then s99=s(n)
  lin x103, y103, n*10, s(n)
  x103=n*10
  y103=s(n)
 Next



 

МК У3_3_2
' Из набора чисел s1, s2, s3...sn найти минимальное

Dim s

s = Array(70, 50,80,60,10,20,5,70,90,35,15,76,54,77,125,165,66,105,39,84)
 

' Эталон
 s99 = 200

 For n = 0 To 19 Step 1

  if s(n) < s99 Then s99=s(n)
'  lin x103, y103, n*10, s(n)
  x103=n*10
  y103=s(n)
 Next

ss99=s99
s99=200
x103=0
y103=s(0)

' При достижении минимума выйти
For n = 0 To 19 Step 1

  if s(n) < s99 Then s99=s(n)
  lin x103, y103, n*10, s(n)
  x103=n*10
  y103=s(n)
 if s(n) = ss99 Then exit For

 Next


МК У4_1_1      Задача движение по скошенноу и не скошенному лугам
' Дано:
' p1 - начало движения
' p2 - конец движения
' Известно и скорость движеня по скошенному и нескошенному лугам

x1=10
y1=10
x2=300
y2=300
v1 = 8
v2 = 4

' Решение
          tmin=1000
'Найти минимум времени на преодолении данного пути
' Минимизируем время
' t1 = s1/v1
' t2 = s2/v2
' Стоп это как бы теория
' Начинаем использовать метод "Золушки" перебрать, сравнить и выбрать
' Во-первых определяем диапозон (облость ограничений) в котором возможно
' движения пешехода на границе лугов - это p11-p12
' Задаем эти точки

x11=50
y11=100
x12=400
y12=100
lin x11, y11, x12, y12

x103=x11
y103=10

' Определяем

For u = 0. To 1.01 Step 0.1

 x = (1.-u)*x11+ u*x12
 y = (1.-u)*y11+ u*y12
lin x1, y1, x, y
lin x2, y2, x, y

s1=sqr((x1-x)*(x1-x)+(y1-y)*(y1-y))
s2=sqr((x2-x)*(x2-x)+(y2-y)*(y2-y))
 t1=s1/v1
 t2=s2/v2
 t=t1+t2
 if t < tmin Then tmin=t
lin x103,y103,x,t
x103=x
y103=t

Next

t99=tmin

tmin=1000

For u = 0. To 1.01 Step 0.1

 x = (1.-u)*x11+ u*x12
 y = (1.-u)*y11+ u*y12
lin x1, y1, x, y
lin x2, y2, x, y

s1=sqr((x1-x)*(x1-x)+(y1-y)*(y1-y))
s2=sqr((x2-x)*(x2-x)+(y2-y)*(y2-y))
 t1=s1/v1
 t2=s2/v2
 t=t1+t2
 if t < tmin Then tmin=t
lin x103,y103,x,t
x103=x
y103=t
okr x,y,10    ' окружность в точке р3
' if tmin = t99 Then Exit For

Next


МК У4_1_2  Задача движение по скошенноу и не скошенному лугам - 2 этап
' Дано:
' p1 - начало движения
' p2 - конец движения
' Известно и скорость движеня по скошенному и нескошенному лугам

x1=10
y1=10
x2=300
y2=300
v1 = 8
v2 = 4

' Решение
          tmin=1000

x11=50
y11=100
x12=400
y12=100
lin x11, y11, x12, y12

x103=x11
y103=10

' Определяем
 

For u = 0. To 1.01 Step 0.1
 x = (1.-u)*x11+ u*x12
 y = (1.-u)*y11+ u*y12
lin x1, y1, x, y
lin x2, y2, x, y

s1=sqr((x1-x)*(x1-x)+(y1-y)*(y1-y))
s2=sqr((x2-x)*(x2-x)+(y2-y)*(y2-y))
 t1=s1/v1
 t2=s2/v2
 t=t1+t2
 if t < tmin Then tmin=t
' lin x103,y103,x,t
x103=x
y103=t

Next

t99=tmin
tmin=1000

For u = 0. To 1.01 Step 0.1

 x = (1.-u)*x11+ u*x12
 y = (1.-u)*y11+ u*y12
lin x1, y1, x, y
lin x2, y2, x, y

s1=sqr((x1-x)*(x1-x)+(y1-y)*(y1-y))
s2=sqr((x2-x)*(x2-x)+(y2-y)*(y2-y))
 t1=s1/v1
 t2=s2/v2
 t=t1+t2
 if t < tmin Then tmin=t
lin x103,y103,x,t
x103=x
y103=t
okr x,y,10    ' окружность в точке р3
if tmin = t99 Then Exit For

Next


 МК У4_2_1  Оптимизация движения по течению и без течения
v1=8    ' скорость судна
v2=6    ' скорость воды
' р1-р2 - вектор движение судна
' р1-р3 - вектор движение воды
x1 = 60
y1 = 45
x3 = 470
y3 = 75

x2 = 310
y2 = 245

okr x1,y1,10
okr x2,y2,10
okr x3,y3,20
lin x1,y1,x2,y2
lin x1,y1,x3,y3
s11 = sqr((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
t11=s11/v1
x99=x1
y99=t11
tmin=1000

For u = 0. To 1.01 Step 0.05
 x = (1.-u)*x1+ u*x3
 y = (1.-u)*y1+ u*y3
lin x2, y2, x, y
s1=sqr((x1-x)*(x1-x)+(y1-y)*(y1-y))
s2=sqr((x2-x)*(x2-x)+(y2-y)*(y2-y))
v3=v1+v2
 t1=s1/v3
 t2=s2/v1
 t=t1+t2
 if t < tmin Then tmin=t
lin x99,y99,x,t
x99=x
y99=t
Next

x99=x1
y99=t11
ttmin=tmin
tmin=1000

For u = 0. To 1.01 Step 0.05
 x = (1.-u)*x1+ u*x3
 y = (1.-u)*y1+ u*y3
lin x2, y2, x, y
s1=sqr((x1-x)*(x1-x)+(y1-y)*(y1-y))
s2=sqr((x2-x)*(x2-x)+(y2-y)*(y2-y))
v3=v1+v2
 t1=s1/v3
 t2=s2/v1
 t=t1+t2
 if t < tmin Then tmin=t
lin x99,y99,x,t
okr x,y,12
if tmin = ttmin Then Exit For
x99=x
y99=t
Next



МК У4_3_1

' Bernulli

x11 = 0
y11 = 150
x12 = 400
y12 = 150

x1=0
y1=0
okr x1, y1, 20
x2=400
y2=300

okr x2, y2, 20

x=200
y=150
' okr x, y, 10

 lin x11, y11, x12, y12
' lin x1, y1, x, y
' lin x2, y2, x, y
' okr x, y, 20

v1=sqr(2.*9.8*y11)
v2=sqr(2.*9.8*y2)
t1=sqr((x1-x)*(x1-x)+(y1-y)*(y1-y))/v1
t2=sqr((x-x2)*(x-x2)+(y-y2)*(y-y2))/v2
t=t1+t2
x3=0
y3=t*30-100
etmin=10000.

 
 For s = 0 To 1.001 Step 0.1

         x=(1-s)*x11+s*x12
  y=(1-s)*y11+s*y12
  ' okr x, y, 10
  v1=sqr(2.*9.8*y11)
         v2=sqr(2.*9.8*y2)
  t1=sqr((x1-x)*(x1-x)+(y1-y)*(y1-y))/v1
  t2=sqr((x-x2)*(x-x2)+(y-y2)*(y-y2))/v2
  t=t1+t2
  lin x3, y3, x, t*30-100
  x3=x
  y3=t*30-100
  if t < etmin Then etmin = t
  ' lin x1, y1, x, y
  ' lin x, y, x2, y2
 Next

v1=sqr(2.*9.8*y11)
v2=sqr(2.*9.8*y2)
 t1=sqr((x1-x)*(x1-x)+(y1-y)*(y1-y))/v1
 t2=sqr((x-x2)*(x-x2)+(y-y2)*(y-y2))/v2
 t=t1+t2
 x3=0
 y3=t*30-100

ttmin=etmin
etmin=10000.

 For s = 0 To 1.001 Step 0.1

  x=(1-s)*x11+s*x12
  y=(1-s)*y11+s*y12
  okr x, y, 10
  v1=sqr(2.*9.8*y11)
  v2=sqr(2.*9.8*y2)
  t1=sqr((x1-x)*(x1-x)+(y1-y)*(y1-y))/v1
  t2=sqr((x-x2)*(x-x2)+(y-y2)*(y-y2))/v2
  t=t1+t2
  lin x3, y3, x, t*30-100
  x3=x
  y3=t*30-100
  if t < etmin Then etmin = t
  lin x1, y1, x, y
  lin x, y, x2, y2
  if etmin = ttmin Then okr x, y, 20
  ' if etmin = ttmin Then Exit For
 Next

МК У5_1_1  Метод наименьших квадратов. Найти уравнение в виде прямой, описывающее наилучшим образом  данный эксперимент

' 1 - этап - дано

x1 = 15
y1 = 25
okr x1, y1, 10
x2 = 60
y2 = 40
okr x2, y2, 10
x3 = 70
y3 = 80
okr x3, y3, 10
x4 = 105
y4 = 120
okr x4, y4, 10
x5 = 145
y5 = 120
okr x5, y5, 10


МК У5_1_2  Метод наименьших квадратов. Найти уравнение в виде прямой, описывающее наилучшим образом  данный эксперимент

' 1 - этап - дано + 2 - этап - построения ЦФ зависимости коэффициента прямой от угла

' STATIC
x1 = 15
y1 = 25
okr x1, y1, 10
x2 = 60
y2 = 40
okr x2, y2, 10
x3 = 70
y3 = 80
okr x3, y3, 10
x4 = 105
y4 = 120
okr x4, y4, 10
x5 = 145
y5 = 120
okr x5, y5, 10

'   y = ax - апроксимуруемая линия (прямая)
'   сумма отклонений (в квадрате) стремиться к минимуму
'   требуется найти а в уравнении y=ax

emin=10000
x103=0
y103=10

For a = 0. To 1.25 Step 0.1
 e1=(a*x1-y1)*(a*x1-y1)
 e2=(a*x2-y2)*(a*x2-y2)
 e3=(a*x3-y3)*(a*x3-y3)
 e4=(a*x4-y4)*(a*x4-y4)
 e5=(a*x5-y5)*(a*x1-y1)
 e = e1 + e2 + e3 + e4 + e5
 if e < emin Then emin=e
 lin x103, y103, a*100, e/100
 x103=a*100
 y103=e/100
Next



МК У5_1_3  Метод наименьших квадратов. Найти уравнение в виде прямой, описывающее наилучшим образом  данный эксперимент

' 1 - этап - дано + 2 - этап - построения ЦФ зависимости коэффициента прямой от угла
' + 3 этап - фиксация коэффициента прямой

x1 = 15
y1 = 25
okr x1, y1, 10
x2 = 60
y2 = 40
okr x2, y2, 10
x3 = 70
y3 = 80
okr x3, y3, 10
x4 = 105
y4 = 120
okr x4, y4, 10
x5 = 145
y5 = 120
okr x5, y5, 10

'   y = ax - апроксимуруемая линия (прямая)
'   сумма отклонений (в квадрате) стремиться к минимуму
'   требуется найти а в уравнении y=ax

emin=10000
x103=0
y103=10

For a = 0. To 1.25 Step 0.1
 e1=(a*x1-y1)*(a*x1-y1)
 e2=(a*x2-y2)*(a*x2-y2)
 e3=(a*x3-y3)*(a*x3-y3)
 e4=(a*x4-y4)*(a*x4-y4)
 e5=(a*x5-y5)*(a*x1-y1)
 e = e1 + e2 + e3 + e4 + e5
 if e < emin Then emin=e
 lin x103, y103, a*100, e/100
 x103=a*100
 y103=e/100
Next
 
 

eemin=emin
emin=10000
x103=0
y103=10

 ' требутся определить при каком а достигается emin

For a = 0. To 1.45 Step 0.1
 e1=(a*x1-y1)*(a*x1-y1)
 e2=(a*x2-y2)*(a*x2-y2)
 e3=(a*x3-y3)*(a*x3-y3)
 e4=(a*x4-y4)*(a*x4-y4)
 e5=(a*x5-y5)*(a*x1-y1)
 e = e1 + e2 + e3 + e4 + e5
 if e < emin Then emin=e
 lin x103, y103, a*100, e/100
 x103=a*100
 y103=e/100
 if emin = eemin Then okr a*100, e/100, 5
 if emin = eemin Then aa=a
 ' if emin = eemin Then Exit For
Next



МК У5_1_4  Метод наименьших квадратов. Найти уравнение в виде прямой, описывающее наилучшим образом  данный эксперимент

' 1 - этап - дано + 2 - этап - построения ЦФ зависимости коэффициента прямой от угла
' + 3 этап - фиксация коэффициента прямой + 4 этап построение самой аппроксимирующей прямой

x1 = 15
y1 = 25
okr x1, y1, 10
x2 = 60
y2 = 40
okr x2, y2, 10
x3 = 70
y3 = 80
okr x3, y3, 10
x4 = 105
y4 = 120
okr x4, y4, 10
x5 = 145
y5 = 120
okr x5, y5, 10

'   y = ax - апроксимуруемая линия (прямая)
'   сумма отклонений (в квадрате) стремиться к минимуму
'   требуется найти а в уравнении y=ax

emin=10000
x103=0
y103=10

For a = 0. To 1.25 Step 0.1
 e1=(a*x1-y1)*(a*x1-y1)
 e2=(a*x2-y2)*(a*x2-y2)
 e3=(a*x3-y3)*(a*x3-y3)
 e4=(a*x4-y4)*(a*x4-y4)
 e5=(a*x5-y5)*(a*x1-y1)
 e = e1 + e2 + e3 + e4 + e5
 if e < emin Then emin=e
 lin x103, y103, a*100, e/100
 x103=a*100
 y103=e/100
Next
 
 

eemin=emin
emin=10000
x103=0
y103=10

 ' требутся определить при каком а достигается emin

For a = 0. To 1.45 Step 0.1
 e1=(a*x1-y1)*(a*x1-y1)
 e2=(a*x2-y2)*(a*x2-y2)
 e3=(a*x3-y3)*(a*x3-y3)
 e4=(a*x4-y4)*(a*x4-y4)
 e5=(a*x5-y5)*(a*x1-y1)
 e = e1 + e2 + e3 + e4 + e5
 if e < emin Then emin=e
 lin x103, y103, a*100, e/100
 x103=a*100
 y103=e/100
 if emin = eemin Then okr a*100, e/100, 5
 if emin = eemin Then Exit For
Next

a=eemin

' строим аппроксимируемый отрезок y=ax

x103=0
y103=0

For x = 0 To 180 Step 20
 y=a*x
 lin x103, y103, x, y
 x103=x
 y103=y
Next


МК У5_2_1  Pост  человека о возраста
 
a=244.6
b=0.710333
k=0.052333

t=1

x103=0
y103=1

tt=18

For t = 1 To 124 Step 1

y = a*(1-b*exp(-k*t))
 lin x103, y103, t*5, y
 x103=t*5
 y103=y
if t = tt Then okr t*5, y, 7
Next


МК У6_0_0  Линия - на которой д.б. построен завод и два города

  otrezok.beg(0) = 89
  otrezok.beg(1) = 135
  otrezok.end(0) = 547
  otrezok.end(1) = 45
  otrezok.Draw()

  ellips.centr(0) = 172
  ellips.centr(1) = 187
  ellips.gAx = 10
  ellips.vAx = 10
  ellips.Draw()

  ellips.centr(0) = 507
  ellips.centr(1) = 231
  ellips.gAx = 10
  ellips.vAx = 10
  ellips.Draw()



У6_1_1  Задачи на компромисс и опредедение зоны Парето
'  Два города р1 и р2 решили построить завод р. Рассмотрим 5 вариантов
'  1-город стремиться построить его ближе к себе
'  2-город стремиться также построить ближе к себе
'  общее расстояние стиремится к минимуму
'  второй город имеет приоритет 2.
'  на одинаковом растоянии

  otrezok.beg(0) = 89
  otrezok.beg(1) = 135
  otrezok.end(0) = 547
  otrezok.end(1) = 45
  otrezok.Draw()

x11=otrezok.beg(0)
y11=otrezok.beg(1)
x12=otrezok.end(0)
y12=otrezok.end(1)
 

  ellips.centr(0) = 172
  ellips.centr(1) = 187
  ellips.gAx = 10
  ellips.vAx = 10
  ellips.Draw()

x1=ellips.centr(0)
y1=ellips.centr(1)
 

  ellips.centr(0) = 507
  ellips.centr(1) = 231
  ellips.gAx = 10
  ellips.vAx = 10
  ellips.Draw()

x2=ellips.centr(0)
y2=ellips.centr(1)
 

s1min=10000

x103=x11
y103=sqr((x11-x1)*(x11-x1)+(y11-y1)*(y11-y1))

For u = 0 To 1 Step 0.05
 x=(1-u)*x11+u*x12
 y=(1-u)*y11+u*y12
 lin x1, y1, x, y
 s1=sqr((x-x1)*(x-x1)+(y-y1)*(y-y1))
 lin x103, y103, x, s1
 x103=x
 y103=s1
 if s1 < s1min Then s1min=s1
Next



У6_1_2  Задачи на компромисс и опредедение зоны Парето
'  2-город стремиться также построить ближе к себе

  otrezok.beg(0) = 89
  otrezok.beg(1) = 135
  otrezok.end(0) = 547
  otrezok.end(1) = 45
  otrezok.Draw()

x11=otrezok.beg(0)
y11=otrezok.beg(1)
x12=otrezok.end(0)
y12=otrezok.end(1)
 

  ellips.centr(0) = 172
  ellips.centr(1) = 187
  ellips.gAx = 10
  ellips.vAx = 10
  ellips.Draw()

x1=ellips.centr(0)
y1=ellips.centr(1)
 

  ellips.centr(0) = 507
  ellips.centr(1) = 231
  ellips.gAx = 10
  ellips.vAx = 10
  ellips.Draw()

x2=ellips.centr(0)
y2=ellips.centr(1)
 

s2min=10000

x103=x11
y103=sqr((x11-x2)*(x11-x2)+(y11-y2)*(y11-y2))

For u = 0 To 1 Step 0.05
 x=(1-u)*x11+u*x12
 y=(1-u)*y11+u*y12
 lin x2, y2, x, y
 s2=sqr((x-x2)*(x-x2)+(y-y2)*(y-y2))
 lin x103, y103, x, s2
 x103=x
 y103=s2
 if s2 < s2min Then s2min=s2
Next



У6_1_3  Задачи на компромисс и опредедение зоны Парето
' 3 - общее расстояние стремится к минимуму

  otrezok.beg(0) = 89
  otrezok.beg(1) = 135
  otrezok.end(0) = 547
  otrezok.end(1) = 45
  otrezok.Draw()

x11=otrezok.beg(0)
y11=otrezok.beg(1)
x12=otrezok.end(0)
y12=otrezok.end(1)
 

  ellips.centr(0) = 172
  ellips.centr(1) = 187
  ellips.gAx = 10
  ellips.vAx = 10
  ellips.Draw()

x1=ellips.centr(0)
y1=ellips.centr(1)
 

  ellips.centr(0) = 507
  ellips.centr(1) = 231
  ellips.gAx = 10
  ellips.vAx = 10
  ellips.Draw()

x2=ellips.centr(0)
y2=ellips.centr(1)
 

s3min=10000

x103=x11
s1 = sqr((x11-x1)*(x11-x1)+(y11-y1)*(y11-y1))
s2 = sqr((x11-x2)*(x11-x2)+(y11-y2)*(y11-y2))
y103 = s1+s2-350

For u = 0 To 1.001 Step 0.05

 x=(1-u)*x11+u*x12
 y=(1-u)*y11+u*y12
 lin x1, y1, x, y
 lin x2, y2, x, y
 s1=sqr((x-x1)*(x-x1)+(y-y1)*(y-y1))
 s2=sqr((x-x2)*(x-x2)+(y-y2)*(y-y2))
 s3=s1+s2
 lin x103, y103, x, s3-350
 x103=x
 y103=s3-350
 if s3 < s3min Then s3min=s3
Next


У6_1_4  Задачи на компромисс и опредедение зоны Парето
 
' 4 -  2 город имеет приоритет 2

s3min=10000

x103=x11
s1 = sqr((x11-x1)*(x11-x1)+(y11-y1)*(y11-y1))
s2 = sqr((x11-x2)*(x11-x2)+(y11-y2)*(y11-y2))
y103 = s1+2*s2-600

For u = 0 To 1.001 Step 0.05

 x=(1-u)*x11+u*x12
 y=(1-u)*y11+u*y12
 lin x1, y1, x, y
 lin x2, y2, x, y
 s1=sqr((x-x1)*(x-x1)+(y-y1)*(y-y1))
 s2=sqr((x-x2)*(x-x2)+(y-y2)*(y-y2))
 s3=s1+2*s2
 lin x103, y103, x, s3-600
 x103=x
 y103=s3-600
 if s3 < s3min Then s3min=s3
Next


У6_1_5  Задачи на компромисс и опредедение зоны Парето
' 6 - на одинаковом растоянии
 

s3min=10000

x103=x11
s1 = sqr((x11-x1)*(x11-x1)+(y11-y1)*(y11-y1))
s2 = sqr((x11-x2)*(x11-x2)+(y11-y2)*(y11-y2))
y103 = sqr((s1-s2)*(s1-s2))

For u = 0 To 1.001 Step 0.01

 x=(1-u)*x11+u*x12
 y=(1-u)*y11+u*y12
 lin x1, y1, x, y
 lin x2, y2, x, y
 s1=sqr((x-x1)*(x-x1)+(y-y1)*(y-y1))
 s2=sqr((x-x2)*(x-x2)+(y-y2)*(y-y2))
 s3=sqr((s1-s2)*(s1-s2))
 lin x103, y103, x, s3
 x103=x
 y103=s3
 if s3 < s3min Then s3min=s3
Next



УУ7_1_1. Графы  Найти оптимальный путь судна из трех возможных маршрутов

Dim p1, p11, p21,   p2, p12, p22,   p3, p13, p23

' Разобьем точки в соответствии 0, 1, 3-го маршрутов

p1  = Array ( 0,   0,0)
p11 = Array (45, 120,0)
p21 = Array (15,  70,0)
 

p2  = Array (0,    0, 1)
p12 = Array (35, 170, 1)
p22 = Array (10, 120, 1)

p3  = Array (0,    0, 2)
p13 = Array (55,  60, 2)
p23 = Array (35, 160, 2)
 
 

' Сначала считаем расход топлива по маршрутам

v99 = 10000

v0=p1(0)+p11(0)+ p21(0) ' 0 + 45 + 15 = 60
v1=p2(0)+p12(0)+ p22(0) ' 0 + 35 + 10 = 45
v2=p3(0)+p13(0)+ p23(0) ' 0 + 55 + 35 = 80

if v0 < v99 Then v99=v0
if v1 < v99 Then v99=v1
if v2 < v99 Then v99=v2

 lin 1*50, v0, 2*50, v1
 lin 2*50, v1, 3*50, v2
 

' считаем пибыль по маршрутам

tmax = 0
 

t0=p1(1)+p11(1)+ p21(1)  ' 0 + 120 +  70 = 190
t1=p2(1)+p12(1)+ p22(1)  ' 0 + 170 + 120 = 290
t2=p3(1)+p13(1)+ p23(1)  ' 0 +  60 + 160 = 220

if t0 < tmax Then t99=v0
if t1 < tmax Then t99=v1
if t2 < tmax Then t99=v2

 lin 1*50, t0, 2*50, t1
 lin 2*50, t1, 3*50, t2


MKУ7_2_1.  Найти путь объекта при минимуме расхода топлива

Dim x(1), y(1), z(1)

Dim p0,  p1,  p2,  p3,  p4,  p5
Dim p10, p11, p12, p13, p14, p15
Dim p20, p21, p22, p23, p24, p25
Dim p30, p31, p32, p33, p34, p35
Dim p40, p41, p42, p43, p44, p45
Dim p50, p51, p52, p53, p54, p55

p0 = Array(0,0,0)
p1 = Array(2,0,0)
p2 = Array(6,0,0)
p3 = Array(6,0,0)
p4 = Array(1,0,0)
p5 = Array(5,0,0)
 

p10 = Array(0,9,0)
p11 = Array(2,3,1)
p12 = Array(7,9,8)
p13 = Array(3,5,4)
p14 = Array(14,3,2)
p15 = Array(1,4,3)
 

p20 = Array(0,8,0)
p21 = Array(6,4,5)
p22 = Array(1,6,12)
p23 = Array(10,2,11)
p24 = Array(12,2,13)
p25 = Array(8,5,6)

p30 = Array(0,2,0)
p31 = Array(10,3,2)
p32 = Array(7,2,3)
p33 = Array(6,9,8)
p34 = Array(1,10,9)
p35 = Array(9,7,10)
 

p40 = Array(0,4,0)
p41 = Array(6,9,8)
p42 = Array(4,3,5)
p43 = Array(4,7,5)
p44 = Array(1,7,5)
p45 = Array(7,8,6)
 

p50 = Array(0,3,0)
p51 = Array(4,7,5)
p52 = Array(3,1,2)
p53 = Array(6,2,7)
p54 = Array(2,4,3)
p55 = Array(3,5,12)
 

x71=50
y71=15
x72=450
y72=15
x73=50
y73=280
x74=450
y74=280
 

' plosk x71, y71, x72, y72, x73, y73, x74, y74

 x103=x71
 y103=y71

For p = 0 To 150 Step 1
 For m = 0 To 11 Step 1

         if s1 > 1.-0.001 Then n2=0
  if s2 > 1.-0.001 Then n3=0

  x81 = (1.-s2)*x71+ s2*x73
  y81 = (1.-s2)*y71+ s2*y73

  x82 = (1.-s2)*x72+ s2*x74
  y82 = (1.-s2)*y72+ s2*y74

  x80 = (1.-s1)*x81 + s1*x82
  y80 = (1.-s1)*y81 + s1*y82
         okr x80,y80,5
  lin x103, y103, x80, y80
  x103=x80
  y103=y80

  randomize
  n=int(rnd(1)*4+1)

  if n = 1 Then s1 = s1+0.2
  if n = 2 Then s2 = s2+0.2
  if n = 3 Then s1 = s1+0.2
  if n = 3 Then s2 = s2+0.2

         if s1 > 1.-0.001 Then s1 = 1.0
   if s2 > 1.-0.001 Then s2 = 1.0
 Next
 s1=0
 s2=0
 x103=x71
 y103=y71

Next


МК У8_1_1  Задачи 8.1 Линейное программирование
' Задана ЦФ: x + y -> max
' При ограничениях:
' x/100+y/170 > 1       (1) (p1-p2)
' x/140+y/120 > 1 (2) (p3-p4
' x > 1   (3)
' y > 1   (4)

' Уравнения можно интепретировать отрезками

p1_x=100
p1_y=0
p2_x=0
p2_y=170
 lin p1_x, p1_y, p2_x, p2_y

p3_x=140
p3_y=0
p4_x=0
p4_y=120
 lin p3_x, p3_y, p4_x, p4_y
 

' Целевую функцию выберем произвольно x+y=200  или x/200+y/200=1

p5_x=200
p5_y=0
p6_x=0
p6_y=200
 lin p5_x, p5_y, p6_x, p6_y


МК У8_1_2 ' Задачи 8.1 Линейное программирование
'  2-й этап - перебираем точки на области ограничений, вы

' Задана ЦФ: x + y -> max
' При ограничениях:
' x/100+y/170 > 1       (1) (p1-p2)
' x/140+y/120 > 1 (2) (p3-p4
' x > 1   (3)
' y > 1   (4)

' Уравнения можно интепретировать отрезками

p1_x=100
p1_y=0
p2_x=0   ' p82
p2_y=170
 lin p1_x, p1_y, p2_x, p2_y

p3_x=140         ' p81
p3_y=0
p4_x=0
p4_y=120
 lin p3_x, p3_y, p4_x, p4_y
 

' Целевую функцию выберем произвольно x+y=200  или x/200+y/200=1

p5_x=200
p5_y=0
p6_x=0
p6_y=200
 lin p5_x, p5_y, p6_x, p6_y
 
 
 

'  2-й этап - перебираем точки на области ограничений, вычисляя ЦФ
 

 For y=0 To 120 Step 5
 

 x90=(1-(y/170))*100
 x91=(1-(y/120))*140
 
  For x=0 To 100 Step 5
   if x > x90 then Exit For
                 okr x100, y, 5
  Next
 lin x190, y, x191, y
 Next


МК У8_1_3 Задачи 8.1 Линейное программирование

' Задана ЦФ: x + y -> max
' При ограничениях:
' x/100+y/170 > 1       (1) (p1-p2)
' x/140+y/120 > 1 (2) (p3-p4
' x > 1   (3)
' y > 1   (4)

' Уравнения можно интепретировать отрезками

p1_x=100
p1_y=0
p2_x=0   ' p82
p2_y=170
 lin p1_x, p1_y, p2_x, p2_y

p3_x=140         ' p81
p3_y=0
p4_x=0
p4_y=120
 lin p3_x, p3_y, p4_x, p4_y
 

' Целевую функцию выберем произвольно x+y=200  или x/200+y/200=1

p5_x=200
p5_y=0
p6_x=0
p6_y=200
 lin p5_x, p5_y, p6_x, p6_y
 
 
 

'  3-й этап cfmin=0

 For y=0 To 120 Step 10

 x90=(1-(y/170))*100
 x91=(1-(y/120))*140
 if x90 < x91 Then x=x90
 if x91 < x90 Then x=x91
        okr x, y, 7
 if cf > cfmax Then cfmax = cf
 Next



MK У8_1_4

‘ Задача расходе топлива и прибыли.
‘ Пусть расход топлива, прибыль и номер маршрута судна
‘ заданы как составляющие векторов:
' расход определяется координатой  х,
' прибыль определяется координатой y,
' номер маршрута - координатой z:
' p1= 0.,0.,    0.    p2=0., 0.,   1.    p3= 0.,0.,  2.
' p11=90.,300., 0.   p12=70.,400., 1.   p13=40.,200., 2.
' p21=30.,200., 0.   p22=20.,300., 1.   p23=70.,450., 2.

Dim p1 (0, 0, 0 )
Dim p2 (0, 0, 1 )
Dim p3 (0, 0, 2 )
Dim p11 (90, 300, 0 )
 

Dim p1 (10, 10, 10 )
Dim p2 (400, 0, 20 )
Dim p3 (10, 200, 30 )
Dim p11 (500, 250, 40 )

lin p1(0), p1(1) p2(0), p2(1)
lin p3(0), p3(1) p4(0), p4(1)

okr p1(0), p1(1), p1(2)
okr p2(0), p2(1), p2(2)
okr p3(0), p3(1), p3(2)
okr p4(0), p4(1), p4(2)



MK У8_2_1
' Посылка
x1=290
y1=0
z1=0
x2=0
y2=270
z2=0
x3=0
y3=0
z3=280
lin x2, y2, x1, y1

vmax=0

For s = 0. To 1.01 Step 0.1

x91=(1-s)*x1+s*x3
y91=(1-s)*y1+s*y3
z91=(1-s)*z1+s*z3
x92=(1-s)*x2+s*x3
y92=(1-s)*y2+s*y3
z92=(1-s)*z2+s*z3
lin x91, y91, x92, y92
point x91,y91,x92,y92
Next
 

Sub point (x91, y91, x92, y92)

 For u = 0. To 1.01 Step 0.1
  x=(1-u)*x91+u*x92
  y=(1-u)*y91+u*y92
  z=(1-u)*z91+u*z92
  okr x, y, 10
  v=x+y+z
  lin x3, y3, x, v/10
  x3=x
  y3=v/10
  if v > vmax Then vmax = v
 
 Next
End Sub

 9.1.1.   Заданы числа 2 4 6 1 9 3. Требуеся выбрать число 6
'  По методу случайных чисел
 

For n = 1 To 100 Step 1
 randomize
 x=int(rnd(1)*10+1)
 okr 20*x, 20*x, 10
 if x = 6 Then
 okr 20*x, 20*x, 40
 end if
       if x = 6 Then Exit For
Next



 9.1.2.  Заданы числа 2 4 6 1 9 3. Требуеся выбрать число 6
'  По методу перебора
 
 

For n = 1 To 10 Step 1
 okr 10*n, 10*n, 10
  if n = 6 Then
   okr 10*n, 10*n, 30
  end if
        if n = 6 Then Exit For
Next



 
 

ЛоШу - поиск чисел по методу случайных чисел

n5=15/3   '  среднее число определяется из логических и алгебраических соображений

For k = 0 To 290 Step 1
 

 randomize
 n=int(rnd(1)*10+1)
 n1=n
 
 n=int(rnd(1)*10+1)
 n4=n
 
 n9=15-n1-n5
 n7=15-n1-n4
 n3=15-n7-n5
 n2=15-n1-n3
 n6=15-n4-n5
 n8=15-n2-n5

okr n1*20, n4*20, 10

if n2>0 Or n3>0 Or n6>0 Or n7>0 Or n8>0 Or n9>0 Then
 
     m1=n1+n2+n3
  m2=n4+n5+n6
  m3=n7+n8+n9
 
  m4=n1+n4+n7
  m5=n2+n5+n8
  m6=n3+n6+n9

  m7=n1+n5+n9
  m8=n3+n5+n7

 End if

 if m1=15 & m2=15 & m3=15 & m4=15 & m5=15 & m6=15 _
  & m7=15 & m8=15 & m9=15 Then
        okr 100, 100, 25
 end if

 if m1=15 & m2=15 & m3=15 & m4=15 & m5=15 & m6=15 _
  & m7=15 & m8=15 & m9=15 Then Exit For

Next


Ло Шу поиск 2-х неизвестных через два  цикла

n5=15/3

n5=15/3   '  среднее число определяется из логических и алгебраических соображений

For n1 = 1 To 9 Step 1
 

 For n4 = 1 To 9 Step 1
  n9=15-n1-n5
  n7=15-n1-n4
  n3=15-n7-n5
  n2=15-n1-n3
  n6=15-n4-n5
  n8=15-n2-n5
  okr n1*20, n4*20, 10

  if n9>0 Or n7>0 Or n3>0 Or n2>0 Or n6>0 Or n8>0 Then

     m1=n1+n2+n3
  m2=n4+n5+n6
  m3=n7+n8+n9
 
  m4=n1+n4+n7
  m5=n2+n5+n8
  m6=n3+n6+n9

  m7=n1+n5+n9
  m8=n3+n5+n7
  End if

if m1=15 & m2=15 & m3=15 & m4=15 & m5=15 & m6=15 & m7=15 & m8=15 Then
         okr 100, 100, 25
  end if

if m1=15 & m2=15 & m3=15 & m4=15 & m5=15 & m6=15 & m7=15 & m8=15 Then Exit For
 

 Next

if m1=15 & m2=15 & m3=15 & m4=15 & m5=15 & m6=15 & m7=15 & m8=15 Then Exit For

 
Next
 


Введение в векторно-графический анализ

Приведенные упражнения  решены пратически за один день  - на оформление  этой странички  времени больше ушло. В новой версии "Вектор" значительно все проще, но есть пока и минусы:

- нет возможностей работы с векторами - вместо них испрользуются массивы, которые  нельзя скадывать и прочее;
- нет протокола сценария-расчета, в котором можно было бы по цифрам проследить ход решения задачи;
- не разобрался, есть или нет в VBS оператор goto, без которого не смог решить задачу  Ло-Шу;
- не  удалось решить и задачу Богданов-Вентцель (в версии под DOS  задача просто решается потому что вектора и их состовляющие имеют один индификатор).

Если посмотреть на макрокоманды (МК),  то в начале страх берет. Но на самом деле все проще:  многое в МК копируется из предыдущих МК, много стандартного. Редактировать МК можно  в любом редакторе: Блокнот, WordPad, Microsoft Word. Используется и минимум языка VBS. По темам приведены самые простые задачи, которые могут быть усложнены до трехмерных и более размерности (такие воможности в "Вектор" будут).

При инсталляции системы "Вектор" копируются и МК, которые можно использовать на первых занятиях.

На вопрос - а надо ли все это? Можно ответить.- каждая рассматриваемая тема - это высшая математика, на изучение которой требуется не один месяц. Однако, благодаря  простому графочисленному подходу - перебрать, сравнить и выбрать и целевой функции (ЦФ) - отображающий и контролирующий этот процесс, решать такие задачи можно новичку или тому, кто подзабыл, что изучал когда-то. Далее система "Вектор" будет развиваться (адаптироваться из  DOS в Windows). Многие возможности будут реализованы в автоматическом режиме, и потому не исключено, что кто-то воспользуется в будущем для решения своих практических задач в технике, науке или дизайне.  Кроме того язык VBS или JS (JavaScript) - это язык  приложений в Windows и в Интернет - без чего уже никак немыслимо творить сегодня. Польза несомненно есть!

В.П.Болотов