matlab 在曲线上画其切线的问题

拟合出各点的曲线后,用polyder函数求其导数,以在曲线上画出切线。但不知为什么画出的切线没有在曲线上,而且还不对。请大侠们赐教,谢谢!程序及图如下:
y=log10(i);coff=polyfit(t,y,2);plot(t,y,'*');hold onval=polyval(coff,t);%曲线拟合plot(t,val,'k','linewidth',2);hold onder=polyder(coff);val1=polyval(der,t);%切线拟合plot(t,val1,'k','linewidth',2);hold on

clc;clear
x = (0:1:20)';
y = -10*(x).^1.2+x.^2+20*(rand(numel(x),1)-1);%我随便给出的xy值你可以改
plot(x,y,'r-')
p = polyfit(x,y,2);
ynew = polyval(p,x);
hold on
plot(x,ynew,'g-')
p1 = polyder(p);
% æ±‚x0 y0处的切线
x0 = 10;
y0 = polyval(p,x0);
y01 = polyval(p1,x0);
y1 = y01*(x-x0)+y0;
plot(x,y1,'b-')
legend('原曲线','拟合曲线','切线')
box off
grid on

结果展示

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-29
一条曲线可以画出无穷多条切线, 故画切线要指定切点,然后过该点画切线,此条切线的斜率由导函数求出本回答被提问者和网友采纳