我知道在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);
答案 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