1

方程式を挿入してプロットしようとしていますが、行列の次元が一致する必要がある、または内部行列の次元が一致する必要があるなどのエラーが発生し続けるため、できませんでした。

http://www4.0zz0.com/2012/11/25/10/272913238.png これが方程式です。M の値は 1 ~ 6 で、増分は 0.5 です。Q の値は 0 ~ 1 で、増分は 0.1 です。

http://www4.0zz0.com/2012/11/25/10/700692428.png プロットは次のようなものです

 m=1:0.5:6;
 q=0:0.1:1;

数式を部分に分割しようとしたので、挿入しやすくなりましたが、最後の部分でエラーが発生しています

e=q./m(1-sqrt(1-(q./m).^2));

添え字のインデックスは、実数の正の整数または論理値のいずれかでなければなりません。

4

1 に答える 1

1
  1. mq:の各組み合わせを反復するには、 を使用しますndgrid。現在、mとはどちらqも行ベクトルであるため、配列単位の操作では の最初の要素mと の最初の要素q、2 番目の要素と 2 番目の要素、というようにのみ取得されます。必要なのは、m1 つの次元にq沿って変化し、他の次元に沿って変化する 2D マトリックスです。これが何をするかndgridです。これを試して:

    [q, m] = ndgrid(0:0.1:1, 1:0.5:6);
    
  2. 添字インデックスのエラー メッセージ: 問題は乗算と配列アクセスです。方程式 PNG では、分母の形式は です。これは、中括弧内の値を掛けるM{…}ことを意味します。Mこれm(…)は実際には配列アクセスであり、乗算ではありません。に変更するとm .* (…)、コードが機能します。作業バージョンは次のとおりです。

    e=q./(m.*(1-sqrt(1-(q./m).^2)));
    

    これで、次のことができます。

    figure; plot(e);
    

    …そして、あなたが望むものと同様の出力が得られるはずです.

于 2012-11-26T03:20:14.690 に答える