• Регистрация
Daniil3298
Daniil3298 0.00
н/д

Производная полинома кубического сплайна в MatLab

13.01.2020

Всем примет! Вопрос состоит в том, как взять производную от полиному кубического сплайна g = a(k)*T.^3 + b(k)*T.^2 + c(k)*T + y(k);? Обычными способами график получается разрывистый, состоящий из множества отрезков, а должен быть плавный. Прикладываю код с MatLab'a. Спасибо!

m=100;

h=10/m;

x = 0:h:10;

y = sin(x); 

y=round(y*10000);

y=y/10000; 

hold on

plot(x,y,'-o') 

n=length(x);

A=zeros(n-2,n-2);

for k=1:n-2

    for p=1:n-2

        if k==p

            A(k,p)=4;

        elseif (k==p+1 | k==p-1)

            A(k,p)=1;

        else

            A(k,p)=0;

        end

    end

end 

del = diff(y);

del2 = diff(del);

b = inv(A)*del2'*3/(h^2);

b = [0;b;0] ;% b(1) = 0 т.к. S0=0 и b(n) = 0 т.к. Sk''(xn)=0

a = diff(b)/(3*h); 

c=zeros(1,n-1);

for k=1:n-1

    c(k)=del(k)/h-(b(k+1)+2*b(k))*h/3;

end

 

for k=1:n-1.

    T = 0:h/100:h;

    g = a(k)*T.^3 + b(k)*T.^2 + c(k)*T + y(k);

    plot(x(k)+T,gg, 'r');

   

end

 

hold on, grid on;

Теги

    13.01.2020

    Ответы

    • Artem
      Artem+290.00
      20.01.2020 12:15

      Привет! Я выполнил твой код, все ок. Возможно это из за ошики во второй строчке с низу. Вместо gg надо g поставить.