Matlab - 显示泰勒多项式

时间:2012-11-03 09:36:33

标签: matlab taylor-series

我有一个非常简单的问题。我们给出函数f:R - > R ^ 2看起来像这样: f(x)= [cos(x); SIN(2 * X)]

我们必须在一个图中将该函数与第一和第二泰勒多项式一起显示。我已经计算了多项式,但是我在matlab(矩阵维度问题)中使用它有问题。也许你可以帮我找到错误,这是我的代码:

function display
clf;
x=linspace(0,2*pi,1000);
y=F(x); plot(y(1,:),y(2,:),'k'); 
axis equal; axis manual; hold on
xx=1;
yy=F(xx); plot(yy(1,:),yy(2,:),'ro'); 
y=T1(xx,x); plot(y(1,:),y(2,:),'g'); 
%y=T2(xx,x); plot(y(1,:),y(2,:),'b'); 
return

此显示功能正确,问题在于功能T1和T2:

function y=F(x)
y=[cos(x);sin(2*x)];

function y=T1(xx,x)
dy=[-sin(xx);  2*cos(2*xx)]; % 1st derivative at xx
y=F(xx) + dy.*(x-xx);

function y=T2(xx,x)
ddy=[-cos(xx); -4*sin(2*x)]; % 2nd derivative at xx
y=T1(xx,x)+ ((x-xx).*ddy.*(x-xx))/2

1 个答案:

答案 0 :(得分:1)

您遇到了问题,因为您正在尝试将不同大小的矩阵相乘。

这部分是因为您已将xx设置为单个值1.如果将其更改为与x大小相同的矩阵,则应使用这些矩阵,例如

xx=ones(size(x))

此外,在T1和T2函数中,你的dy矩阵是2行乘1000列。您必须乘以相同尺寸的矩阵 - 您可以这样做,例如:

T1中的

y=F(xx) + dy.*[x-xx;x-xx];和:

T2中的

y=T1(xx,x)+ (ddy.*[x-xx;x-xx].*[x-xx;x-xx])/2;

T2中的一行还有一个小错误(x应该是xx):

ddy=[-cos(xx); -4*sin(2*xx)]; % 2nd derivative at xx

最后,我发现使用xx作为变量有点令人困惑。我会在这里选择a

[http://en.wikipedia.org/wiki/Taylor_series]