Spi*_*ine 2 scilab polynomial-math approximation
我有一组度量值,我想近似一下。我知道我可以用4次多项式来做到这一点,但我不知道如何使用Scilab找到它的五个系数。
现在,我必须使用Open office calc的用户友好功能。因此,为了继续仅使用Scilab,我想知道是否存在内置函数,或者我们是否可以使用简单的脚本。
小智 5
没有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
Run Code Online (Sandbox Code Playgroud)
此函数接受两个大小相等的向量(它们可以是行向量或列向量;冒号运算符确保它们在计算中是面向列的)和多项式。
它返回从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)
Run Code Online (Sandbox Code Playgroud)
输出:

| 归档时间: |
|
| 查看次数: |
7741 次 |
| 最近记录: |