0

我有一个非常简单的问题。我们得到一个函数 f: R -> R^2 看起来像这样:f(x) = [cos(x) ; 罪(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
4

1 回答 1

1

您遇到问题是因为您试图将不同大小的矩阵相乘。

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

xx=ones(size(x))

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

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

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

T2 中的一行也有一个轻微的错字(x 应该是 xx):

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

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

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

于 2012-11-03T11:27:56.210 回答