0

とても簡単な質問が 1 つあります。次のような関数 f: R -> R^2 が与えられます: f(x) = [cos(x) ; sin(2*x)]

関数を 1 番目と 2 番目のテイラー多項式と共に 1 つのグラフに表示する必要があります。多項式を計算しましたが、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

異なるサイズの行列を乗算しようとしているため、問題が発生しています。

これは、単一の値 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 の 1 行にわずかなタイプミスがあります (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 に答える