Мой код, который вычисляет производные в заданной точке, используя метод конечных разностей, не работает, и я думаю, что он как-то связан с rhs, который я дал как rhs = [0; 0; 0; 0; 0; 0] но ранее я поставил его как rhs = [0; 1; 0; 0; 0; 0], и это было еще хуже, потому что по крайней мере со всеми нулями я правильно получаю первую точку на графике дифференцированных функций.
Вот картина, которая обостряет проблему:
function script()
Я не совсем понимаю, что здесь представляет rhs и как узнать правильные значения для него.
Вот мой код:
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;0;0;0;0;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
ss
subs(diff(f),xx)
figure
ezplot(diff(f),[-1, 1])
hold on
plot(xx,ss, '*')