1

MATLAB関数を使用して次の関数を補間しようとしていますspline.

ここに画像の説明を入力

等距離点xi = i./ni = 0,1,...,n、およびn = 2^jに対してj = 4,5,...,14

計算ごとに、ポイントでの最大誤差を記録し、プロットを使用してx = 0:0.001:1これらの誤差をプロットします。nloglog

以下はコードです、

index=1

for j = 4:1:14;
    n = 2^j;
    i = 0:1:n;
    xi = i./n;
    yi = ((exp(3*xi))*sin(200.*(xi.^2))) ./(1+20.*(xi.^2));
    x = 0:.001:1;
    ye = ((exp(3*x))*sin(200*x.^2)) ./(1+20*x.^2);
    yp = spline(x,xi,yi);
    err = ye - yp;
    merr(index) = max(err);
    index = index+1;
end

n1 = 10:10:170;
loglog(n1, merr,'.')
xlabel('n');
ylabel('errors');
title('Cubic Splines');

しかし、コードを実行すると、次のエラーが発生しました。

使用中のエラー * 内部マトリックスの次元は一致する必要があります。

(9 行目) のエラー yi = ((exp(3*xi)) sin(200. (xi.^2))) ./(1+20.*(xi.^2));

MatLab の学習を始めたばかりですが、誰か助けてもらえますか?

4

1 に答える 1

1

コードの次の部分では、要素ごとの乗算( ) が必要です。.*

yi = ((exp(3*xi))*sin(200.*(xi.^2))) ./(1+20.*(xi.^2));

する必要があります

yi = ((exp(3*xi)).*sin(200.*(xi.^2))) ./(1+20.*(xi.^2));

の計算にも同じ問題がありyeます。

mtimes( )を使用する*と、MATLAB は行列の乗算を試みますが、この場合 (1 行 n 列 x 1 行 n 列) は無効です。

次に、コマンドで問題が発生しますsplineyp = spline(xi,yi,x);補間したい値 ( x) が最後の引数になるように変更します。

于 2013-10-08T20:44:15.927 に答える