3

問題:

    >> syms('a', 'b', 'c');

    >>A =

    [ -2, 3,  1, a]
    [  1, 1, -1, b]
    [  0, 5, -1, c]

    >>rref(A)

    ans =

    [ 1, 0, -4/5, 0]
    [ 0, 1, -1/5, 0]
    [ 0, 0,    0, 1]

私が抱えている問題は、答えが ab と c である必要があることです。そのため、次のようなものが必要です。

    ans =
    [1, 0, 0, a+2b-c]
    [0, 1, 0, 3a-c]
    [0, 0, 1, a+b+c]

これを達成するためにMatlabを取得する方法はありますか?

4

3 に答える 3

3

適切に使用するには、問題を適切な形式に変換する必要がありrrefます。つまり、 の代わりに:

[1, 0, 0, a+2b-c]
[0, 1, 0, 3a-c]
[0, 0, 1, a+b+c]

ここで、x、y、z はユニティ マトリックス ブロックを形成し、次のように記述します。

 syms x y z
 D =
[ 1, 2, -1, x]
[ 3, 0, -1, y]
[ 1, 1,  1, z]

rref(D)
ans =
[ 1, 0, 0,     (3*y)/10 - x/10 + z/5]
[ 0, 1, 0,       (2*x)/5 - y/5 + z/5]
[ 0, 0, 1, (3*z)/5 - y/10 - (3*x)/10]
于 2013-01-22T01:35:40.597 に答える
1

Matlab は実際にあなたの例に対して正しい答えを出しましaた。たとえば、別の例を使用する場合bc

B = [1, 2, a; 2, 1, b];
rref(B)

その場合、答えは期待どおりに依存しaますb


Aここで、あなたの行の縮小された階層形式が実際になぜそうであるかを説明します

[ 1, 0, -4/5, 0]
[ 0, 1, -1/5, 0]
[ 0, 0,    0, 1]

行削減の重要なステップのいくつかを示すことによって。Matlab は で始まり、Aそれを

[ 1, 0, -4/5, (3*b)/5 - a/5]
[ 0, 1, -1/5, a/5 + (2*b)/5]
[ 0, 0,    0,   a + 2*b - c]

次に、最後の行を (a + 2*b - c) で割り、

[ 1, 0, -4/5, (3*b)/5 - a/5]
[ 0, 1, -1/5, a/5 + (2*b)/5]
[ 0, 0,    0,             1]

次に、その行をその上の行から減算して、

[ 1, 0, -4/5, 0]
[ 0, 1, -1/5, 0]
[ 0, 0,    0, 1]

a + 2*b - cMatlab は、がゼロに等しくないと仮定しました ( に置き換えcてみるとa + 2*brref(A)別の答えが得られます)。私は、Matlab が で割らないように強制する方法、つまり、Matlabに がゼロに等しいとa + 2*b - c仮定させる方法を知りません。a + 2*b + c

于 2013-12-02T21:00:36.900 に答える
1

rref(A) を与える消去行列が必要です。

しかし、rref(A) とは何ですか?

UpperTri=rref(A)=[LastStep]...[Step3][Step2][Step1]*A.

これは、A を上三角形または可能な限り最良の三角形に縮小する一連の手順です。

Matlabは、

[ 1, 0, -4/5, (3*b)/5 - a/5]
[ 0, 1, -1/5, a/5 + (2*b)/5]
[ 0, 0,    0,             1]

次に、Matlab がそれをロールアップしただけで、ステップがなくなりました。したがって、次のように表示されます。

    [ 1, 0, -4/5, 0]
    [ 0, 1, -1/5, 0]
    [ 0, 0,    0, 1]

一連のステップが必要な場合は、一連のステップを含む除去マトリックスが必要なため、アイデンティティマトリックスを使用して記録します。それ以外の:

A = 
[ -2, 3,  1, a]
[  1, 1, -1, b]
[  0, 5, -1, c]

使用する

>>  A = [ -2, 3,  1, 1 0 0; 1, 1, -1, 0 1 0;  0, 5, -1, 0 0 1]

A =

    -2     3     1     1     0     0
     1     1    -1     0     1     0
     0     5    -1     0     0     1

>> E=rref(A)

E =

    1.0000         0   -0.8000         0    1.0000   -0.2000
         0    1.0000   -0.2000         0         0    0.2000
         0         0         0    1.0000    2.0000   -1.0000

これは [A][I] のようなもので、[rref Steps matrix]*[A][I]=[rref(A)][rref Steps matrix]

E=[rref(A)][rref ステップ行列] =

 E =

        1.0000         0   -0.8000         0    1.0000   -0.2000
             0    1.0000   -0.2000         0         0    0.2000
             0         0         0    1.0000    2.0000   -1.0000

検査により E1=[rref ステップ行列]=

E1 =

         0    1.0000   -0.2000
         0         0    0.2000
    1.0000    2.0000   -1.0000

だから今:

E1 =

         0    1.0000   -0.2000
         0         0    0.2000
    1.0000    2.0000   -1.0000

>> B=[a;b;c;]

B =

 a
 b
 c

>> B1=E1*B

B1 =

     b - c/5
         c/5
 a + 2*b - c

チェックする:

A1 = [ -2, 3,  1, a; 1, 1, -1, b;  0, 5, -1, c]

A1 =

[ -2, 3,  1, a]
[  1, 1, -1, b]
[  0, 5, -1, c]

>> A2=E1*A1

A2 =

[ 1, 0, -4/5,     b - c/5]
[ 0, 1, -1/5,         c/5]
[ 0, 0,    0, a + 2*b - c]

a + 2b - c =0、したがって c=a+2b、したがって sub c、(c/5)= ((a+2b)/5)、および (bc/5)=(5b-(a+2b) に注意してください。 ))/5

したがって

[(-a+3*b)/5; (a+2*b)/5; a + 2*b - c ]
于 2014-11-24T03:54:28.463 に答える