2015-05-15 8 views
1

У меня есть набор мер, которые я хочу приблизить. Я знаю, что могу сделать это с помощью многочлена 4-й степени, но я не знаю, как найти пять коэффициентов с помощью Scilab.Как сделать полиномиальное приближение в Scilab?

В настоящее время я должен использовать удобные функции Open office calc ... Итак, чтобы использовать только Scilab, я хотел бы знать, существует ли встроенная функция или если мы можем использовать простой скрипт.

ответ

2

Существует нет встроенного polyfit функции, как в Matlab, но вы можете сделать свой собственный:

function cf = polyfit(x,y,n) 
A = ones(length(x),n+1) 
for i=1:n 
    A(:,i+1) = x(:).^i 
end 
cf = lsq(A,y(:)) 
endfunction 

Эта функция принимает два вектора одинакового размера (они могут быть либо строки или столбца векторов; оператор двоеточия что они ориентированы на столбцы в вычислении) и степень полинома.

Он возвращает столбец коэффициентов, упорядоченный от 0-й до n-й степени.

Вычислительный метод прост: установите (обычно, переопределенную) линейную систему, которая требует, чтобы полином проходил через каждую точку. Затем разрешите его в смысле наименьших квадратов с lsq (на практике кажется, что cf = A\y(:) выполняет тождественно, хотя алгоритм здесь немного отличается).

Пример использования:

x = [-3 -1 0 1 3 5 7] 
y = [50 74 62 40 19 35 52] 
cf = polyfit(x,y,4) 

t = linspace(min(x),max(x))' // now use these coefficients to plot the polynomial 
A = ones(length(t),n+1) 
for i=1:n 
    A(:,i+1) = t.^i 
end 
plot(x,y,'r*') 
plot(t,A*cf) 

Выход:

polynomial fit

 Смежные вопросы

  • Нет связанных вопросов^_^