2014 dxdy logo

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

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




На страницу Пред.  1, 2
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение25.03.2020, 00:00 
Alm99 в сообщении #1446830 писал(а):
Но функция lsqlin может минимизировать только один параметр, и я не могу понять, что за условия для работы <...>
Один, но векторный. Вот простой пример
Используется синтаксис Matlab M
N = 10;
X = [1:1:N]';
Y = X + random('norm', 0, 1, [1, N])';
C = [X, ones(N, 1)];
Z = lsqlin(C, Y);
plot(X, Y, 's', X, Z(1)*X+Z(2));
 

Вложение:
lsqlin_ex.png


У вас нет доступа для просмотра вложений в этом сообщении.

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

Правильно ли я понял, что если вместо X и Y запишу вектор координат $x_{i}$ и $y_{i}$, и вызвать , то linsql выдаст мне удовлетворительные результаты? Ну допустим, если я возьму те же значения что И в примере методички... Только я не понял все же, у меня прописана эта функция, и мне надо найти параметры a и b, а я не могу почему -то задать функцию с $x_{i}$ и $y_{i}$. Matlab говорит, что параметры должны быть скалярами...

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение25.03.2020, 10:36 
Правильно поняли. Но нет смысла задавать такой вопрос, лучше самому попробовать.

(Линейный МНК без ограничений можно без использования встроенных функций matlab легко сделать.) Я первоначально невнимательно прочитал начальное сообщение темы и отвечал на автомате. Теперь в теме есть ссылка на статью. Давайте вернёмся к задаче, сформулированной в начальном сообщении, если Вы, конечно, не шутите.

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение25.03.2020, 11:04 
Аватара пользователя
Alm99 в сообщении #1446848 писал(а):
Евгений Машеров

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


Ну, домножте коэффициенты на $-1$...

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение25.03.2020, 11:27 
GAA в сообщении #1447027 писал(а):
Правильно поняли. Но нет смысла задавать такой вопрос, лучше самому попробовать.


Я попробую, постараюсь побыстрее вернуться ко второй задаче. И проделать первую... Постараюсь как можно быстрее..

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение25.03.2020, 11:43 
Аватара пользователя
GAA в сообщении #1446765 писал(а):
Да, в optimization toolbox есть функция lsqlin
с возможностью задать линейные ограничения.


Она не совсем для этой задачи. В ней ищется минимум отклонений в смысле наименьших квадратов, а в задаче постановка минимаксная. Возможно, с практической точки зрения МНК вполне подойдёт, это надо конкретику смотреть, но вообще это разные методы, и мёд они могут давать неправильный.

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение25.03.2020, 12:38 
Она совсем не для этой задачи. Я же уже написал
GAA в сообщении #1447027 писал(а):
Я первоначально невнимательно прочитал начальное сообщение темы и отвечал на автомате.
.

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение25.03.2020, 12:47 
Аватара пользователя
Я к тому, что если это не учебная задача, в которой надо делать именно то, что задано, а прикладная, то может оказаться, что МНК тоже годно, не только минимакс.
А если именно минимакс - то ЛП, и оно в Матлабе есть.

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение25.03.2020, 13:02 
Евгений Машеров в сообщении #1447055 писал(а):
Я к тому, что если это не учебная задача, в которой надо делать именно то, что задано, а прикладная, то может оказаться, что МНК тоже годно, не только минимакс.
А если именно минимакс - то ЛП, и оно в Матлабе есть.


Не, это чисто учебная задача

-- 25.03.2020, 13:34 --

GAA
"Error using horzcat
Dimensions of arrays being concatenated are not consistent."

Вот такую ошибку получил
Используется синтаксис Matlab M
N = 14;
X = [0:100:N];
Y = [0 3 7 8 6 5 6 9 11 12 12 10 10 13]';
C = [X, ones(N, 1)];
Z = lsqlin(C, Y);


Я не понимаю, почему он выдал мне ее

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение25.03.2020, 13:42 
Аватара пользователя
Да, и при формулировании задачи для удобного решения этой программой я бы использовал равенства для условий вида $ax_i+b-y_i\ge 0$, включив в них невязку $v_i$, а неравенства оставил бы для $v_i-V\le 0$

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение25.03.2020, 14:43 
Alm99 в сообщении #1447061 писал(а):
Я не понимаю, почему он выдал мне ее
Длина массива X не равна длине массива Y.
Используется синтаксис Matlab M
>> N = 14;
>> X = [0:100:N]
X =
     0
Формально по тексту: длина массива X (один элемент) не равна длине массива ones(N, 1) (столбец с N, т.е. 14, элементами) — невозможно создать матрицу с N строками и двумя столбцами.

 !  Alm99, почитайте хотя бы один день рекомендованный Вам [в учебной дисциплине или руководителем курсовой работы] учебник/справочник/руководство по matlab или одну из доступных в Сети книг.
Например, можно почитать
Ануфриев И. Е., Смирнов А. Б., Смирнова Е. Н. MATLAB 7.
Н.Н.Мартынов, А.П.Иванов MATLAB 5.X. Вычисления, визуализация, программирование.

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение26.03.2020, 08:42 
Мне понятна формулировка задачи в сообщении
Евгений Машеров в сообщении #1446824 писал(а):
Эта задача сводится к задаче линейного программирования.
<...>
Евгений Машеров, спасибо! Текст написать несколько минут времени.
Используется синтаксис Matlab M
% linprog(f,A,b,Aeq,beq)
% Solves min f'*z such that A*z <= b

N = 10;
X = [1:1:N]';
Y = X + random('norm', 0, 1, [1, N])';
A1 = -[X, ones(N, 1), zeros(N, 1)];
A2 = [X, ones(N, 1), -ones(N, 1)];
A = [A1;A2];
b =[-Y; Y];
f = [0, 0, 1]';
Z = linprog(f,A,b);
disp(Z);
plot(X, Y, 's', X, Z(1)*X+Z(2));
Работает вроде быстро. На рис. пример для одного из вариантов данных.
Вложение:
linprog_1.png

Многократно генерировал данные, проблем не наблюдал. А что даёт новая модификация?
Евгений Машеров в сообщении #1447069 писал(а):
Да, и при формулировании задачи для удобного решения этой программой я бы использовал равенства для условий вида $ax_i+b-y_i\ge 0$, включив в них невязку $v_i$, а неравенства оставил бы для $v_i-V\le 0$


У вас нет доступа для просмотра вложений в этом сообщении.

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение26.03.2020, 10:41 
Аватара пользователя
Это для топикстартера, который задумался, как работать с условиями вида "больше или равно", если программа требует "меньше или равно". Вот я предложил два варианта - умножить условие на -1, перевернув неравенство, или использовать в виде равенства.
Да, и ещё. Программа может работать с ограничениями на переменные вида $L_i\le x_i \le U_i$. По умолчанию, АФАИК, нижняя граница 0, верхняя бесконечность. Для невязок это "самое оно", но вот a и b, как переменные задачи, такому ограничению не подлежат.

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение26.03.2020, 21:11 
Евгений Машеров, понял, спасибо.
Я linprog не пользовался в пакетах (в частности в matlab). Поэтому подумал, что там какие-то подводные камни. Вот и спросил.

 
 
 
 Re: Поиск параметров. Статистическая обработка рез-тов. [Matlab]
Сообщение30.03.2020, 12:56 
Спасибо всем огромное за помощь, задачу удалось решить!

 
 
 [ Сообщений: 30 ]  На страницу Пред.  1, 2


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