簡體   English   中英

在Matlab / Octave中構造樣條方程

[英]Constructing a spline equation in matlab/octave

我知道在matlab / octave中, polyfit可以外推用於構建適合給定數據x和y的多項式方程的常數。 Polyout輸出帶有常數的多項式方程。 請參閱下面的鏈接以獲取示例:

https://zh.wikibooks.org/wiki/Octave_Programming_Tutorial/多項式

我如何“溶解” 樣條擬合常數以構造方程式? 樣條方程看起來如何? 是否可以將幾乎完美的線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);  

我知道了。 不幸的是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 .....最多八個多項式(由樣條方程式中的“階數”設置) )
y2 =與第二行相同,除了(x-1)以外,(x -1.5)由小塊定義。 因此y = y1 + y2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM