用matlab / octave构造样条方程

时间:2015-08-14 02:02:59

标签: matlab octave

我知道在matlab / octave中, polyfit 可以外推用于构建适合给定数据集x和y的多项式方程的常数。 Polyout 输出多项式方程及其常量。请参阅下面的示例链接:

https://en.wikibooks.org/wiki/Octave_Programming_Tutorial/Polynomials

我怎样'多边形' splinefit 常数来构造方程式? 样条方程式如何?是否可以 polyfit 几乎完美的线到6位小数精度? 感谢。

n=5;
m=3;   x=0:0.000001:1;   y=asin(x);
p = polyfit(x,y,n);
f = polyval(p,x);
pp = splinefit(x,y,m);
g = ppval(pp,x);
plot(x,y,'o',x,f,'-',x,g,'o');
format long;
disp ("The value of p is:"), disp (p);
polyout(p, 'x');
disp ("The value of pp is:"), disp (pp);  

1 个答案:

答案 0 :(得分:0)

我明白了。不幸的是,polyout(pp,'x')不适用于样条曲线。但是,结果可以手动解释。对于以下代码:

x=0:0.1:1;   
y=sin(x);
m=2;
format long;
disp ("The value of pp is:"), disp (pp)

Mathcad / Octave以下列格式给出答案:

The value of pp is:

包含字段的标量结构:

form = pp
breaks =

   0.000000000000000   0.500000000000000   1.000000000000000

coefs =

 Columns 1 through 4:

   7.91957255741094e-03   3.68579287957638e-04  -1.66790993823105e-01   1.71448144544173e-05
   6.55744943740794e-03   2.01675106814849e-02  -1.46254903853663e-01  -2.39717011291503e-01

 Columns 5 and 6:

   9.99999254411779e-01  -1.23307748213508e-09
   8.77582309927074e-01   4.79425560796454e-01

pieces =  2
order =  6
dim =  1

要解释输出,输出表示
y1 = -1.23307748213508e-09 + 9.99999254411779e-01 *(x-1)+ 1.71448144544173e-05 *(x-1)^ 2 .....最多8个多项式(在样条方程中按“order”设置。)
y2 =与第二行相同的方式除了(x-1)之外还有(x-1.5)由片段定义。 因此y = y1 + y2