2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение23.03.2020, 23:10 


17/03/20
183
Добрый вечер, уважаемые форумчане! Есть проблема, которая возможно разрешима, но не знаю. Есть данные, результаты измерений, их надо обработать, построить прилегающую прямую и среднюю прямую, чтобы оценить отклонение от прямолинейности. Для этого надо решить минимаксную задачу, чтобы найти коэффициенты этой прямой.

В общем случае эта задача формулируется следующим образом:

$\max\left\lbrace{{a}_{l}\cdot x_{i}+{b}_{l}-y_{i}}\right\rbrace\to \min$ при условии $ (a_{l}\cdot x_{i}+b_{l}-y_{i})  \geqslant 0 $

Для того чтобы определить параметры $ {a}_{l} ; b_{l} $ необходимо составить таблицу отклонений, ( вся работа выполнена в excel, а надо в matlab), но это проблема. Суть в том, что далее, все эти отклонения суммируются и заносятся в отдельную ячейку. После , параметры $ a_{l}; b_{l}  $ подбирают таким образом, чтобы ячейка, куда занесена сумма отклонений, принимала минимальное значение. Для этого используют опцию поиск решения. Там выбирают, что ячейка должна иметь минимальное значение, ячейки с отклонениями должны быть больше нуля.
Так вот, суть проблемы: есть ли в Matlab аналог данной функции, поиск решения, а если нет, можно ли вычислить эти коэффициенты $ a_{l}; b_{l} $ с помощью пакета Curve Fitting Tools? Если нет, то тогда вопрос, с чего стоит начать писать функцию для этого поиска решения, т.е как ее реализовать на подобие Excel?

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов.
Сообщение24.03.2020, 09:44 


17/03/20
183
Или эту задачу можно решить optimization toolbox?

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 11:40 
Заслуженный участник


12/07/07
4448
1. В Curve fitting toolbox можно задать ограничения для каждого параметра в отдельности, т.е. ограничения вида $ a_1 \le a_l \le a_2$, $ b_1 \le b_l \le b_2$, где $a_1$, $a_2$, $b_1$, $b_2$ — заданные числа. На первый взгляд для Вашей задачи это не подходит.

2. Да, в optimization toolbox есть функция lsqlin с возможностью задать линейные ограничения.

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 12:30 
Заслуженный участник
Аватара пользователя


01/09/13
4319
Alm99 в сообщении #1446678 писал(а):
построить прилегающую прямую и среднюю прямую

А где можно узнать определения этих прямых?
Alm99 в сообщении #1446678 писал(а):
В общем случае эта задача формулируется следующим образом

А что есть что? Что означают индексы? По чему берётся максимум?
Alm99 в сообщении #1446678 писал(а):
Суть в том, что далее, все эти отклонения суммируются и заносятся в отдельную ячейку.

А где в формулировке задачи суммы?

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 13:00 


17/03/20
183
Я могу скинуть ссылку на книгу, где описаны определения коэффициентов и картинка того, как это реализовано в Excel? Так понятнее думаю будет. Или это строго запрещено?

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 13:51 
Заслуженный участник


12/07/07
4448
Пишите название книги и давайте, если есть возможность, ссылку на доступную электронную версию.

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 14:08 


17/03/20
183
GAA в сообщении #1446788 писал(а):
Пишите название книги и давайте, если есть возможность, ссылку на доступную электронную версию.

А. В. Глубоков - Методы и средства измерений отклонений формы. Учебное пособие (с.38-44 конкретно пример обработки в excel)

Ссылка на пособие:

https://drive.google.com/open?id=1LYOCw ... OoXbyf5lop

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 14:32 
Заслуженный участник


12/07/07
4448
Для получения средней линии можно попробовать использовать хоть lsqlin хоть другую функцию (т.к. дополнительных ограничений в книге не приводятся). Для прилегающей попробовать fminimax.

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 14:47 


17/03/20
183
GAA в сообщении #1446798 писал(а):
Для получения средней линии можно попробовать использовать хоть lsqlin хоть другую функцию (т.к. дополнительных ограничений в книге не приводятся). Для прилегающей попробовать fminimax.

Хорошо, я попытаюсь реализовать... Не могу сказать что сегодня, но я обязательно вернусь к вопросу, ибо сдавать через неделю. Я Вас понял

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 15:56 
Заслуженный участник
Аватара пользователя


11/03/08
9543
Москва
Эта задача сводится к задаче линейного программирования.
$\min V$
$V-(ax_i+b-y_i)\ge 0$
$ax_i+b-y_i\ge 0$
(Подстрочный индекс l опускаю, он, кажется, не играет).
В Матлабе задача ЛП может быть решена функцией linprog.

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 16:09 
Заслуженный участник


12/07/07
4448
fminimax скорее всего не будет сходиться при неудачном начальном приближении, да и с опциями в лучшем случае нужно будет возиться. В указанном выше учебном пособии приводится ссылка на статью
Глубоков А.В. Влияние числа контрольных точек профиля поверхности на погрешность измерений отклонений от прямолинейности / А.В. Глубоков,
С.Е. Педь, С.В. Глубокова // Измерительная техника. 2017. – No 2. – C. 26–29.
(pdf)
Вот алгоритм из той статьи можно попробовать запрограммировать. Мне там места кажутся немного непонятными, но в статье есть ссылки на литературу. Можно пробовать реализовать.

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 16:15 


17/03/20
183
GAA

Да, но я вот посмотрел, задаю я вектор данных об измерении $x_{ι} и y_{i}$. Но функция lsqlin может минимизировать только один параметр, и я не могу понять, что за условия для работы, т.е я не могу понять как задать правильно условия, чтобы этот поиск был правильным.

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 18:16 


17/03/20
183
Евгений Машеров

Но ведь в этой функции условие $\leqslant 0$ а у меня уравнения больше нуля. Как тогда записать это условие ?

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 21:02 


17/03/20
183
А как в данном пакете сделать так, что переменные которые в целевой функции были массивом?

-- 24.03.2020, 21:17 --

Просто x и y это набор точек, а Matlab выдает ошибку: "Objective must be a scalar OptimizationExpression or a struct containing a scalar OptimizationExpression."
Поэтому не могу дальше продолжить работу. linprog я не могу задать условие $V-x_{i}\cdot a+b-y_{i} \geqslant 0$. Как поступать в этой ситуации?

Хотел попробовать так (код Matlab):

Код:
x = [0 10 20 30 40 50 60 70 80];
y = [1 2 3 4 5 6 7 8 9 ];
a = optimvar('a');
b = optimvar('b');
prob = optimproblem;
prob.Objective = a.*x +b - y ;
prob.Constraints.cons1 = a.*x +b - y >=0;
sol = solve(prob)

но получил ту ошибку, о которой говорил.

 Профиль  
                  
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 23:17 


17/03/20
183
Попытался получить данные как в примере, но увы, получаю совершенно неправильный результат:

Код:
x = optimvar('x');
y = optimvar('y');
prob = optimproblem;
prob.Objective = x + y;
prob.Constraints.cons1 = x*0 + y - 0 >= 0;
prob.Constraints.cons2 = x*100 + y - 3 >= 0;
prob.Constraints.cons3 = x*200 + y - 7 >= 0;
prob.Constraints.cons4 = x*300 + y - 8 >= 0;
prob.Constraints.cons5 = x*400 + y - 6 >= 0;
prob.Constraints.cons6 = x*500 + y - 5 >= 0;
prob.Constraints.cons7 = x*600 + y - 6 >= 0;
prob.Constraints.cons8 = x*700 + y - 9 >= 0;
prob.Constraints.cons9 = x*800 + y - 11 >= 0;
prob.Constraints.cons10 = x*900 + y - 12 >= 0;
prob.Constraints.cons11 = x*1000 + y - 12 >= 0;
prob.Constraints.cons12 = x*1100 + y - 10 >= 0;
prob.Constraints.cons13 = x*1200 + y - 10>= 0;
prob.Constraints.cons14 = x*1300 + y - 13 >= 0;
sol = solve(prob)

Solving problem using linprog.

Optimal solution found.

sol =
  struct with fields:

    x: 0.035000000000000
    y: 0

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 30 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group