Я использую метод конечных разностей в Matlab, чтобы найти производные функции в определенных c точках, но это не работает - PullRequest
0 голосов
/ 28 апреля 2020

Здесь вы можете увидеть код:

syms x; 
f=tan(x^3) - x^2 + 1; h = 1;
    xx=0:1/5:1;
    yy = subs(f,xx);
    ss=zeros(6,1);
    rhs = [0;1;1;1;1;0];

l = 0;
r = 5;
 for j=0:l+r
        V(j+1,:)=[-l:r].^j;
    end
atr=V\rhs;
 for k=1:6
    ss(1)=ss(1)+atr(k)*yy(k)/h; 
 end
    l=1;r=4;   
    for j=0:l+r
        V(j+1,:)=[-l:r].^j;
    end
    atr=V\rhs; 

    for k=1:6
    ss(2)=ss(2)+atr(k)*yy(k)/h; 
    end

     l=2;r=3;

    for j=0:l+r
        V(j+1,:)=[-l:r].^j; 
    end
    atr=V\rhs; 

    for k=1:6
    ss(3)=ss(3)+atr(k)*yy(k)/h; 
    end

       l=3;r=2;

    for j=0:l+r
        V(j+1,:)=[-l:r].^j; 
    end
    atr=V\rhs; 


for k=1:6
    ss(4)=ss(4)+atr(k)*yy(k)/h;
    end

       l=4;r=1;

    for j=0:l+r
        V(j+1,:)=[-l:r].^j; 
    end
    atr=V\rhs; 

    for k=1:6
    ss(5)=ss(5)+atr(k)*yy(k)/h; 
    end

       l=5;r=0;

    for j=0:l+r
        V(j+1,:)=[-l:r].^j; 
    end
    atr=V\rhs; 

    for k=1:6
    ss(6)=ss(6)+atr(k)*yy(k)/h; 
    end


    figure
    ezplot(diff(f),[0, 1])
    hold on
    plot(ss, '*') 

По некоторым причинам точки ss не имеют координаты топора, эквивалентной xx (i) [то есть 0; 0,2; 0,4; 0,6; 0,8; 1].

enter image description here

Изображение дифференцированной функции f и точек ss, которые изображены как "*". Вы можете видеть, что точки ss находятся не на прямой, а где-то еще, и я не могу понять, почему. enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...