2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Как оптимизировать функцию в Octave
Сообщение21.02.2013, 11:20 


29/11/12
3
Поставил себе задачу: написать программку для подбора уравнений регрессии. Она должна читать данные из файла и рассчитывать коэффициенты для различных уравнений. В качестве доки взял книгу Алексеевой-Чеснокова. Пока уравнения поддаются линеаризации, все понятно. Добрался до необходимости использования функции sqp, начались вопросы. Для четкости остановимся на уравнении y=x^c/(a+b*x^c). Преобразованием y1=x^c/y; x1=x^c уравнение становится линейным, следовательно, необходимо создать функцию от с, которая будет создавать линеаризованное уравнение, вычислять его коэффициенты и возвращать коэффициент корреляции (может, лучше что-то другое), который нужно минимизировать.
Приблизительно это должно выглядеть так:

function [r,coeff]=func(c)
y1=x.^c./x;
x1=x.^c;
coeff=polyfit(x,y,1);
r=spearman(x,y);
end;

Теперь эту функцию нужно вызвать из sqp:
c=sqp(1,@func), где 1 - начальное приближение c.
Сложность у меня возникает в том, как в эту функцию передать x и y. (Впрочем, это мои первые шаги, может, я пропускаю какое-то простое решение, просьба больно не пинать).
Авторы упомянутой выше книги решают это путем использования глобальных данных, но это корявый путь, т.к. обязывает меня называть массивы точек именно x и y, в результате у меня получается неполноценная функция. Такого я не видел ни в одном языке программирования. Кроме того, для этого функция вроде должна сохраняться в отдельном файле.
Если же вызов делать так: sqp(1,@func(x,y)), то у меня выдает ошибку, что не определено y, т.е. данные таким образом не передаются.
Как решать задачу? Для меня не особо важно использовать именно sqp, возможно, есть другие функции минимизации, не имеющие таких проблем?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

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



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

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


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

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