0

N と T の特定の値の x 値に対してプロットしようとしている単純な関数を以下に示します (簡潔にするために割り当てなどを省略しました) が、寸法エラーが発生し続けます。これをプロットしようとすると、x の配列を定義し、これらの x に対して特定の N' および T' に対して Psum(N', x, T') をプロットしていると思いますが、MATLAB はこれを好まないようです。誰かが私に方向性を教えてください。

function U = Psum(N, X, T)
  for m = 1:N
    A(1,m) = (1/(m*pi))*sin(m*pi*X)*T*exp(-(m^2)*(pi^2)*T);
    % array terms of partial sum
  end
  M = -sum(A); % evaluate Nth partial sum
  U = T*(1-X) + M; % output U(X,T) = T(1-X) + V(X,T)
end

以下をプロットしようとすると、同様のエラーが発生します。一般的なアプローチに何か問題があるに違いないと思います

 syms x;
 f = @(x)((x/(100*pi))*(exp(-(100^2)*(pi^2)*x)));
 x = 0:0.1:10000;
 plot(x,f(x),'r')
 title('PartialSum convergence');
 xlabel('T');
 ylabel('a_n');

ここに表示されるエラーは次のとおりです。

Error using  * 
Inner matrix dimensions must agree.
4

2 に答える 2

2

寸法の不一致エラーが発生する理由の分析は次のとおりです。この行から:

A(1,m) = (1/(m*pi))*sin(m*pi*X)*T*exp(-(m^2)*(pi^2)*T)

要素A(1, m)は、2 次元行列のスカラー値であると想定されています。それでは、各被乗数の次元を見てみましょう。

  • (1/(m*pi))スカラー (つまり、1×1 行列) です。
  • sin(m*pi*X)と同じ寸法Xです。その次元がq×nであるとしましょう。
  • exp(-(m^2)*(pi^2)*T)は と同じ次元を持ち、Tで乗算されTます。したがってT、正方行列でなければならないので、その次元が p×p であると仮定しましょう。

得られるのは、q×n 行列に正方形の p×p 行列を掛けたもので、結果はスカラー (つまり、1×1 行列) でなければなりません。これにより、q=1 および n=p が強制されます。

次に、この行を見てみましょう。

U = T*(1-X) + M

p=1 と結論せざるを得ません。そうでなければ、右からT掛けることはできません。X

これは、コードがスカラーであることをT強制することを意味します! Xエラーが発生するのも不思議ではありません:)

解決策は簡単です。 の計算を修正して、スカラーとベクトルPsumの両方で正しい結果を生成できるようにします。可能な修正は、別のループを追加して、 のすべての値を反復処理することです。XXX

function U = Psum(N, X, T)
    U = zeros(size(X));
    for k = 1:numel(X)  %// Iterate over all values of X
        for m = 1:N
            A(1,m) = (1/(m*pi))*sin(m*pi*X(k))*T*exp(-(m^2)*(pi^2)*T);
            %// array terms of partial sum
        end
        M = -sum(A); % evaluate Nth partial sum
        U(k) = T*(1-X(k)) + M; % output U(X,T) = T(1-X) + V(X,T)
    end
end

この関数の出力の次元は と同じXです。

ところで、Psumスカラー入力に対して正しい結果が得られることを確認しましたか?

于 2013-04-14T15:12:50.630 に答える
1

あなたが達成しようとしていることを完全には理解していませんが、あなたの観察だけです: 入力 X がベクトルの場合、行 3 は正しく計算できません

A(1,m) = (1/(m*pi))*sin(m*pi*X)*T*exp(-(m^2)*(pi^2)*T);

式の右辺はベクトルを与えますが、右辺はベクトルA(1,m)ではなく 1 つの要素であるためです。寸法の不一致があります。お役に立てれば!

于 2013-04-14T15:05:29.493 に答える