我有一个非常简单的问题。我们给出函数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
答案 0 :(得分:1)
您遇到了问题,因为您正在尝试将不同大小的矩阵相乘。
这部分是因为您已将xx
设置为单个值1.如果将其更改为与x大小相同的矩阵,则应使用这些矩阵,例如
xx=ones(size(x))
此外,在T1和T2函数中,你的dy矩阵是2行乘1000列。您必须乘以相同尺寸的矩阵 - 您可以这样做,例如:
T1中的 y=F(xx) + dy.*[x-xx;x-xx];
和:
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]