Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Normalny_Modelirovanie_obektov_i_sistem_upra.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
837.01 Кб
Скачать

9.5.5. Использование метода наименьших квадратов для решения задач оптимизации

Задания:

  1. Решение линейных задач с ограничениями.

  2. Решение неотрицательных задач.

  3. Решение нелинейной задачи (нелинейный подбор данных).

  4. Нелинейная аппроксимация данных общего вида.

Решение:

  1. Решение линейных задач с ограничениями методом наименьших квадратов.

Для нахождения min функции используем команду lsqlin.

Решим систему линейных уравнений:

1.5·х1 + 5.5-х2 + 10·х3 = 12

4.3·х1 + 6.5·х2 +1.2·х3 =8

12·х1 + 6·х2 +2·х3 =5

при условии, что х 0 .

Ограничения на переменную:

0.5х1 + 1.5х2 + х3 < 5

2.5х1 +3·х2 +1.5·х3 < 10

clc,clear % очистка окна

с=[1.5 5.5 10;4.3 6.5 1.2; 12 6 2] % матрица коэффициентов при х

d=[12;8;5] % вектор-столбец свободных членов

а=[0.5 1.5 1;2.5 3 1.5] % матрица коэффициентов при переменных в ограничениях

b=[5;10] % вектор свободных членов в ограничениях

ае=[] % равно пустому множеству

bе=[] % равно пустому множеству

Ib=0

x=lsqlin(c,d,a,b,ae,be,lb)

Результат:

х = 0

0.8833

0.6974

  1. Решение не отрицательных задач методом наименьших квадратов.

Для нахождения min функции используем команду lsqnonneg.

Решим систему линейных уравнений:

1.5·х1+5.5·х2+10·х3 =12

4.3·х1+6.5·х2+1.2·х3 =8

12·х1 +6·х2 +2·х3 =5

при условии, что х 0.

clc,clear % очистка окна

с=[1.5 5.5 10;4.3 6.5 1.2;12 6 2 ]% матрица коэффициентов при х

d=[10;8;5] % вектор-столбец свободных членов

x=lsqnonneg(c,d)

Результат:

х = 0

0.9408

0.4669

  1. Решение не линейной задачи (нелинейный подбор данных).

Функция имеет вид:

Ищется минимум функции пo .

Для нахождения min функции используем команду lsqnonlin.

Пример 1.:

Найти минимум функции:

где .

Создаем встроенную функцию:

function y=kat(x)

k=[l:10]

y=2+2*k-exp(k*x(l ))-exp(k*x(2))

В новом окне при помощи команды lsqnonlin находим min функции:

clc,clear % очистка окна

x0=[0.3;0.4] %вектор начальных значений

x=lsqnonlin(' kat ',xO)

Результат:

х = 0.2578

0.2578

  1. Нелинейная аппроксимация данных общего вида.

Функция имеет вид:

Найти коэффициенты а.

Для решения данной задачи используется команда Isqcurvefit.

Создаем встроенную функцию:

function y=kate(a,x)

у=а(1 )*х.^2+а(2)*со5(х)+а(3)*х%значение функции

В новом окне при помощи команды fminunc находим коэффициенты а: Задаем массив значений функции и массив значений аргумента в возрастающем порядке

а0=[-0.06;-0.3;1] %вектор начальных значений для коэффициентов а х=[0;1;2;3;5;6;9;11;12;15] %вектор-столбец значений аргумента у=[0.6;2;2.8;3.5;4.2;4.6;4;3.2;2;4] %вектор-столбец значений фунекции a=lsqcurvefit('kate',aO,x,y)

z=[0;0.1;15] f=kate(a,z)

plot(x,y,'*',z,f)%cтроим график

Результат:

а =-0.0586

-0.3630

7

1.0241

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]