У меня есть 2 функции:
ccexpan
- который вычисляет коэффициенты интерполяционного полинома функции f
с узлами N
в полиноме Чебышева первого рода.
csum
- вычисляет значение для аргументов t
с использованием коэффициентов c
из ccexpan
(с использованием алгоритма Кленшоу).
Это то, что я написал до сих пор:
function c = ccexpan(f,N)
z = zeros (1,N+1);
s = zeros (1,N+1);
for i = 1:(N+1)
z(i) = pi*(i-1)/N;
end
t = f(cos(z));
for k = 1:(N+1)
s(k) = sum(t.*cos(z.*(k-1)));
s(k) = s(k)-(f(1)+f(-1)*cos(pi*(k-1)))/2;
end
c = s.*2/N;
и :
function y = csum(t,c)
M = length(t);
N = length(c);
y = t;
b = zeros(1,N+2);
for k = 1:M
for i = N:-1:1
b(i) = c(i)+2*t(k)*b(i+1)-b(i+2);
end
y(k)=(b(1)-b(3))/2;
end
К сожалению, эти программы очень медленные и немного неточные. Пожалуйста, дайте мне несколько советов, как их ускорить и как повысить точность.