2014 dxdy logo

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

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




На страницу 1, 2  След.
 
 Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение23.03.2020, 23:10 
Добрый вечер, уважаемые форумчане! Есть проблема, которая возможно разрешима, но не знаю. Есть данные, результаты измерений, их надо обработать, построить прилегающую прямую и среднюю прямую, чтобы оценить отклонение от прямолинейности. Для этого надо решить минимаксную задачу, чтобы найти коэффициенты этой прямой.

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

$\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 
Или эту задачу можно решить optimization toolbox?

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 11:40 
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 
Аватара пользователя
Alm99 в сообщении #1446678 писал(а):
построить прилегающую прямую и среднюю прямую

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

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

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

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 13:00 
Я могу скинуть ссылку на книгу, где описаны определения коэффициентов и картинка того, как это реализовано в Excel? Так понятнее думаю будет. Или это строго запрещено?

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

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 14:08 
GAA в сообщении #1446788 писал(а):
Пишите название книги и давайте, если есть возможность, ссылку на доступную электронную версию.

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

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

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

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 14:32 
Для получения средней линии можно попробовать использовать хоть lsqlin хоть другую функцию (т.к. дополнительных ограничений в книге не приводятся). Для прилегающей попробовать fminimax.

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 14:47 
GAA в сообщении #1446798 писал(а):
Для получения средней линии можно попробовать использовать хоть lsqlin хоть другую функцию (т.к. дополнительных ограничений в книге не приводятся). Для прилегающей попробовать fminimax.

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

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 15:56 
Аватара пользователя
Эта задача сводится к задаче линейного программирования.
$\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 
fminimax скорее всего не будет сходиться при неудачном начальном приближении, да и с опциями в лучшем случае нужно будет возиться. В указанном выше учебном пособии приводится ссылка на статью
Глубоков А.В. Влияние числа контрольных точек профиля поверхности на погрешность измерений отклонений от прямолинейности / А.В. Глубоков,
С.Е. Педь, С.В. Глубокова // Измерительная техника. 2017. – No 2. – C. 26–29.
(pdf)
Вот алгоритм из той статьи можно попробовать запрограммировать. Мне там места кажутся немного непонятными, но в статье есть ссылки на литературу. Можно пробовать реализовать.

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

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

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение24.03.2020, 18:16 
Евгений Машеров

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

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

-- 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 
Попытался получить данные как в примере, но увы, получаю совершенно неправильный результат:

Код:
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  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group