我試圖寫一個程序在楓樹中,將近似函數f作爲間隔[-1..1]上n度的切比雪夫多項式而不使用任何與Chebyshev多項式相關的內置Maple函數。 http://en.wikipedia.org/wiki/Chebyshev_polynomials我正在尋找一些楓葉程序的幫助
例如一個程序CPlot使得,例如,CPlot(F,[2,3,4])產生函數f的曲線圖上[-1,1]一起,以不同的顏色,其第二,第三和第四Chebychev近似值。它應該適用於任意長度的任意列表作爲第二個參數。 這是我的當前代碼:
ChebT := proc(n,x)
local i,firstT,secondT,generalT;
firstT := 1;
if n=0 then return firstT end if;
secondT := x;
if n=1 then return secondT end if;
for i from 1 to n-1 do
generalT := 2*x*secondT - firstT;
firstT := secondT;
secondT := generalT;
end do;
return expand(secondT)
end proc:
CPlot:=proc(f,L::list)
local j, K,num_ip,num_prj,c,chb;
K:=f(x);
for j from 1 to nops(L) while j<(nops(L)+1) do
num_ip := (f,g) -> evalf(Int(f*g/sqrt(1-x^2),x=-1..1)*2/Pi);
num_prj := (f,n) -> seq(num_ip(f,ChebT(i,x)),i=0..n);
c := num_prj(f(x),L[j]);
chb := c -> c[1]/2 + sum(c[i]*ChebT(i-1,x),i=2..nopc(c)); *
K:=K, chb([c]);
end do;
plot([K], x=-1..1, colour=[green, red, blue, yellow],linestyle=[1,2,3,4], thickness=[5,2,3,4]);
end proc:
當嘗試:
F:= X-> X^2:
ChebyPlot(F,[2,5,10]);
我得到「錯誤(在ChebT)在for循環必須是數字或字符最終值」上線*
如果我使用的生成函數T代表切比雪夫多項式,通過調用(orthopoly, T),而不是之前測試過的ChebT,它的工作原理,圖上的所有圖都看起來一樣。 有什麼建議嗎?
謝謝...它工作......有沒有什麼辦法知道/檢查程序輸出的切比雪夫近似正確的結果/陰謀? – Stefan