2012-11-03 73 views
0

我有一個非常簡單的問題。給出函數f:R - > R^2,如下所示:f(x)= [cos(x); sin(2 * x)]Matlab - 顯示泰勒polynoms

我們必須在一個圖中顯示第一個和第二個泰勒多項式的函數。我已經計算了多項式,但是我在matlab中得到它的工作有問題(矩陣尺寸問題)。也許你能幫我找到錯誤,here's我的代碼:

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

你得到一個問題,因爲你正試圖乘以不同大小的矩陣。

這部分原因是因爲您已將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]

+0

謝謝,它的工作原理...用matlab的時候我總是迷失在矩陣尺寸: - ) – Smajl