Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пособие. ПТ.Сахаров, Андрианов.docx
Скачиваний:
13
Добавлен:
01.04.2025
Размер:
3.31 Mб
Скачать

Применение мнк для решения практических задач

% sah548.m

% Простейшие вычисления в среде MATLAB.

% -1-

% На пружинные весы поочередно устанавливается груз %массой x (г).

% Измеряется сжатие пружины в виде данных вектора y %(мм).

x=0:100:800;

y=[0 0.09 0.18 0.28 0.37 0.46 0.55 0.65 0.74];

% Оценить параметры модели y=f(x)=b+a*x методом %наименьших квадратов.

% Найти вектор погрешностей измерений. Построить %график.

H=[ones(9,1) x'];

d=inv(H'*H)*H'*y'

ym=H*d;

[y' ym]

eps=y'-ym;

plot(x,y,'.',x,ym),grid

    1. Оценка параметров периодических сигналов по экспериментальным данным

Предположим, что в процессе обработки периодического сигнала получены значения напряжения через каждые 15° в контрольных точках. Измерения произведены с точностью, определяемой лишь одним знаком после запятой. Полученные данные в интервале изменения угла alf= 0° 180° сведены в таблицу 1.2, содержащую 13 экспериментальных точек.

Таблица 1.2.

аlf(i)

(град)

0

15

30

45

60

75

90

105

120

135

150

165

180

u(i)(B)

12.7

33.8

52.0

60.9

57.8

45.7

31.1

20.1

15.6

15.1

13.0

4.2

-12.7

B первой строке таблицы приведен угол alf(i) (в градусах), во вто­рой - напряжение u(i) (в вольтах), i = 0, . . . , 12 .

Требуется по данным таблицы 1.2. определить амплитуды и фазы первых трех гармони периодического сигнала

(1.22)

где 0 - частота первой гармоники.

Таким образом, требуется оценить амплитуды и фазы

U1m , Q1 ,

U2m , Q2 ,

U3m , Q3 .

Разделив период t на 24 равных интервала, мы получим . Так как , то каждому будет соответствовать угол (в градусах).

.

Для нахождения угла в i-ой точке, где i= 0 24, можно воспользо­ваться простым соотношением

i = 0, …, 12,

на основании которого заполнена первая строка таблицы 1.2.

Из данных второй строки образуем вектор выхода

y1 = [12.7 33.8 52.0 … 4.2 -12.7]T

размерности (13Ч1).

Чтобы придать уравнению (1.22) вид модели (1.19), воспользуемся тождественным преобразованием

(1.23)

Введем обозначения

Эти величины в уравнении (1.23) являются постоянными. u(0 t) является скалярной величиной. Она может быть получена в виде произве­дения двух векторов: вектор-строки [sin0 t cos 0 t sin 20 t cos 20 t sin 30 t cos 30 t] и вектор-столбца х, образованного из элементов

x = [x(1) x(2) x(3) x(4) x(5) x(6)]T , т.е

u(0 t) =[sin0 t cos 0 t sin 20 t cos 20 t sin 30 t cos 30 t]

Вектор x является искомым вектором, содержащим шесть неизвест­ных коэффициентов. Для их оценивания, согласно (1.10), требуется соста­вить число уравнений т > 6. Мы выбрали т = 13 и привели эти данные в таблице 1.2.

C помощью вектор-строки приведенного выше уравнения сформиру­ем матрицу H размерности (13Ч6), где каждая i-ая строка должна содер­жать значения элементов, соответствующие углу alf(i), приведенному в i- ой ячейке первой строки таблицы. B среде MatLAB эта операция выполня­ется в режиме прямых вычислений

alf=0:15:180;

bet = alf.*(pi/180);

H = [sin(bet)' cos(bet)' sin(2*bet)' cos(2*bet)'

sin(3*bet)' cos(3*bet)']

H =

0 1.0000 0 1.0000 0 1.0000

0.2588 0.9659 0.5000 0.8660 0.7071 0.7071

0.5000 0.8660 0.8660 0.5000 1.0000 0.0000

0.7071 0.7071 1.0000 0.0000 0.7071 -0.7071

0.8660 0.5000 0.8660 -0.5000 0.0000 -1.0000

0.9659 0.2588 0.5000 -0.8660 -0.7071 -0.7071

1.0000 0.0000 0.0000 -1.0000 -1.0000 0.0000

0.9659 -0.2588 -0.5000 -0.8660 -0.7071 0.7071

0.8660 -0.5000 -0.8660 -0.5000 0.0000 1.0000

0.7071 -0.7071 -1.0000 0.0000 0.7071 0.7071

0.5000 -0.8660 -0.8660 0.5000 1.0000 0.0000

0.2588 -0.9659 -0.5000 0.8660 0.7071 -0.7071

0.0000 -1.0000 0.0000 1.0000 0.0000 -1.0000

>>

Можно убедиться, что H имеет полный ранг: rank(Н)=6. Поэтому существует ее обратная матрица . Следовательно, для оценки x можно использовать уравнение (1.15).

Используя выражения для x(l) и x(2), определим амплитуду первой гармоники U1m и фазу Q1

Угол Q1 (в градусах) найдем с помощью уравнения

Аналогично определим U2m, Q2, U3m и Q3

Следовательно, напряжение u(0 t), в соответствии с (1.22), может быть записано с помощью уравнения

(1.24)

при условии, что 0 t имеет размерность "градусы".

B полученном уравнении (1.24) амплитуда напряжения первой гар­моники более чем на два порядка превышает амплитуду второй гармоники. Поэтому при выполнении инженерных расчетов второй гармоникой можно пренебречь, а в величинах аргументов первой и третьей гармоник - учесть лишь десятые доли градуса. Тогда получим

(1.25)

Все приведенные выше расчеты в среде MaiLAB могут быть выпол­нены в режиме прямых вычислений, без составления машинных программ. B случае автоматизации вычислительного процесса необходимо иметь в виду, что в составе вектора x* могут быть элементы равные нулю. Если, например, (3)и (4)равны нулю, то при получении U2m=0 из цикла должна исключаться операция расчета Q2, поскольку будет представлять собой неопределенность типа 0/0, и последующие вычисления на ПЭВМ прекратятся.

Чтобы оценить погрешность вычислений, вызванную ограничением разрядов чисел, содержащихся во второй строке таблицы 1.2, возвратим­ся к уравнению (1.26) — модели процесса, которая в действительности ис­пользована для получения экспериментальных данных и составления таблицы:

(1.26)

Видно, что вторая гармоника в составе сигнала отсутствовала. Повы­сим точность измерений и представим вектор у следующими данными:

y = [l2.6937 33.7823 52.0270 60.8661 57.8116 45.7234 ...

31.0608 20.1415 15.5952 15.0802 12.9958 4.1658 -12.6937]Т

B этом случае у условно можно считать вектором детерминирован­ных сигналов.

Чтобы убедиться практически в отсутствии шума в элементах у, оце­ним вновь искомые величины с помощью метода наименьших квадратов. B результате получим

(1.27)

Используя элементы вектора-столбца (1.27) для оценки амплитуд и фаз гармоник, будем иметь

Таким образом, оценочные значения практически совпадают с при­нятыми исходными данными.

Теперь определим вектор шума z, представляющий собой разность между у и у1:

z = yy1 = [-0.0063 -0.0177 0.0270 -0.0339 0.0116 0.0234 ...

-0.0392 0.0415 -0.0048 -0.0198 -0.0042 -0.0342 0.0063]T

Для оценки z используем критерий (1.13)

Аналогичный результат получим, если воспользуемся эвклидовой нормой согласно правилу (1.18). Вычисления в среде MatLAB выполним с помощью оператора

Заметим, что полученные величины J не характеризуют "качество" моделирования. Адекватность модели и объекта, представленного векто­ром y1, может быть установлена по вектору z1, где

z1 = y1 yм= [-0.0056 0.0166 -0.0271 0.0309 -0.0150 -0.0223 ...

0.0462 -0.0330 0.0660 0.0091 -0.0166 0.0153 -0.0061]Т

Вектор ум, в свою очередь, следует восстановить, используя матрицу H и вектор наилучшей оценки

yм = = [l2.7056 33.7834 52.0271 60.8691 57.8150 45.7223 ...

31.0538 20.1330 15.5934 15.0909 13.0166 4.1847 -12.6939]T

хххххххххххххххххххххххххххххххххххххххххххххххххххх

% sah744.m

% ОПТИМИЗАЦИЯ ЗАГРУЗКИ ОБОРУДОВАНИЯ

% В АВТОМАТИЗИРОВАННЫХ СИСТЕМАХ

% Источник: File 'sah376.m'.

% Формулировка задачи:имеются три станка, на которых изготовляются

% четыре вида деталей.

% На изготовление одной детали первого вида требуется израсходовать

% a11=0.5(долл/дет.), второго вида

% a12=0.6 (долл/дет.),третьего вида- a13=0.2(долл/дет.) и четвертого вида-

% a14=1.5 (долл/дет.)

% Аналогично для изготовления одной детали каждого вида на втором станке

% требуется затратить долл.:a21=1.0; a22=0.7; a23=0.1; a24=1.1.Значения стоимостей

% a31=0.8; a32=0.9; a33=0.3;a34=0.9. Единицы измерения те же. Необходимо

% выпустить деталей первого вида 100, второго вида 500, третьего вида 2000 и четвертого вида 1000.

% Время изготовления Tij j-ой детали на i= ом станке (в минутах)представлено

% в матричной форме

T=[11.0 13.0 5.0 33.0;

22.0 16.0 4.0 25.0;

20.0 18.0 7.0 21.0];

% Максимальный резерв времени работы станков: первого 3000ч, второго 2500ч

% и третьего 2800ч. Необходимо найти наименьшую стоимость изготовления деталей

% (либо минимальное суммарное время загрузки станков) при условии выпуска

% продукции, определенной вектором

% beq=[100 500 2000 1000]' (см.текст файла).

% Использование функции 'linprog'.

Aeq=[1 0 0 0 1 0 0 0 1 0 0 0;

0 1 0 0 0 1 0 0 0 1 0 0;

0 0 1 0 0 0 1 0 0 0 1 0;

0 0 0 1 0 0 0 1 0 0 0 1];

A=[11.0 13.0 5.0 33.0 0 0 0 0 0 0 0 0;

0 0 0 0 22.0 16.0 4.0 25.0 0 0 0 0;

0 0 0 0 0 0 0 0 20.0 18.0 7.0 21.0];

beq=[100 500 2000 1000]';

b=[8000 10000 20000]';

vlb=zeros(12,1);vub=[];

f=[0.5 0.6 0.2 1.5 1.0 0.7 0.1 1.1 0.8 0.9 0.3 0.9];

[x,J]=linprog(f,A,b,Aeq,beq,vlb,[])

% Проверка решения:

z1=Aeq*x;

z2=A*x;

[z1 beq]

[z2 b]

% sah744

%Optimization terminated.

%x =

% 1.0e+003 *

%0.1000

%0.5000

%0.0000

%0.0000

%0.0000

%0.0000

%2.0000

%0.0476

%0.0000

%0.0000

%0.0000

%0.9524

%J =

% 1.4595e+003

%ans =

% 1.0e+003 *

% 0.1000 0.1000

% 0.5000 0.5000

% 2.0000 2.0000

% 1.0000 1.0000

%ans =

%1.0e+004 *

%0.7600 0.8000

%0.9190 1.0000

%2.0000 2.0000

%============================================

% ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ

T=[];

for i=1:25;

tau=round(18*rand(1,12)+3);

T=[T;tau];

end

f=T

% 12 18 7 13 14 4 14 10 4 12 6 5

% 7 6 6 4 14 8 13 16 12 13 11 5

% 12 18 19 8 7 13 15 11 7 20 4 5

% 6 6 14 13 4 20 16 16 4 18 20 21

% 18 17 12 6 10 5 4 20 8 8 9 11

% 15 3 18 13 18 9 11 4 6 15 9 19

% 5 21 13 16 21 8 10 11 17 18 5 6

% 9 4 12 9 6 7 19 15 11 19 5 16

% 16 13 6 14 8 5 7 19 4 7 4 11

% 3 19 7 5 9 11 5 21 9 8 4 8

% 4 12 17 14 5 4 17 19 13 5 18 9

% 8 16 3 4 15 14 12 16 16 17 8 15

% 13 10 4 17 9 14 16 5 5 13 12 19

% 17 16 4 4 5 17 20 15 5 16 5 5

% 15 9 15 16 13 16 7 16 20 19 5 10

% 10 15 14 17 10 7 5 17 7 10 13 7

% 15 12 6 17 5 8 7 13 5 10 5 5

% 17 8 14 20 11 16 17 11 15 5 20 6

% 8 17 12 17 10 8 4 15 11 11 14 4

% 9 17 16 5 5 5 3 11 15 16 13 5

% 14 5 5 5 6 6 7 9 9 7 8 19

% 16 13 6 7 4 19 16 13 9 6 14 21

% 6 8 10 4 15 10 21 10 14 6 10 6

% 17 19 9 15 8 13 18 14 9 8 11 11

% 9 13 16 11 11 5 3 8 9 15 20 20

ххххххххххххххххххххххххххххххххххххххххххххххххххххххххххххх