メインコンテンツ

euclid

ローラン多項式に対するユークリッド互除法

R2021b 以降

    説明

    dec = euclid(A,B) は、dec の各行がローラン多項式 A のローラン多項式 B によるユークリッド除算に対応する構造体の配列を返します。

    A = B*Q + R,

    ここで、Q は商、R は剰余です。

    すべて折りたたむ

    次の 2 つのローラン多項式を作成します。

    • A(z)=z2+3z+5+7z-1

    • B(z)=1+2z-1

    cfa = [1 3 5 7];
    cfb = [1 2];
    lpA = laurentPolynomial(Coefficients=cfa,MaxOrder=2);
    lpB = laurentPolynomial(Coefficients=cfb);

    A(z) に対し、B(z) によるユークリッド除算を実行します。補助関数 helperPrintLaurent を使用して、各ユークリッド除算の商多項式と剰余多項式を出力します。

    dec = euclid(lpA,lpB);
    numFac = size(dec,1);
    for k=1:numFac
        q = helperPrintLaurent(dec(k,1).LP);
        r = helperPrintLaurent(dec(k,2).LP);
        fprintf('Euclidean Division #%d\n',k)
        fprintf('Quotient: %s\n',q)
        fprintf('Remainder:  %s\n \n',r)
    end
    Euclidean Division #1
    
    Quotient: z^(2) + z + 3
    
    Remainder:   + z^(-1)
     
    
    Euclidean Division #2
    
    Quotient: z^(2) + z + 3.5
    
    Remainder:   - 0.5
     
    
    Euclidean Division #3
    
    Quotient: z^(2) + 0.75*z + 3.5
    
    Remainder:   + 0.25*z
     
    
    Euclidean Division #4
    
    Quotient: 1.125*z^(2) + 0.75*z + 3.5
    
    Remainder:  - 0.125*z^(2)
     
    

    各ユークリッド除算について、A(z)=B(z)Qi(z)+Ri(z) であることを確認します。ここで、Qi(z)Ri(z) は、それぞれ i 番目の除算の商多項式と剰余多項式です。

    for k=1:numFac
        q = dec(k,1).LP;
        r = dec(k,2).LP;
        areEqual = (lpA==lpB*q+r);
        fprintf('Euclidean Division #%d: %d\n',k,areEqual)
    end
    Euclidean Division #1: 1
    Euclidean Division #2: 1
    Euclidean Division #3: 1
    Euclidean Division #4: 1
    

    入力引数

    すべて折りたたむ

    ローラン多項式。laurentPolynomial オブジェクトとして指定します。

    ローラン多項式。laurentPolynomial オブジェクトとして指定します。

    出力引数

    すべて折りたたむ

    ユークリッド互除法の因数。N 行 2 列の構造体配列として返されます。ここで、N ≤ 4 は分解の数です。deci 行目には、A に対する B によるユークリッド除算が 1 つ含まれます。

    A = B*(dec(i,1).LP) + dec(i,2).LP

    ここで、次のようになります。

    • dec(i,1).LP は、商に対応するローラン多項式です。

    • dec(i,2).LP は、剰余に対応するローラン多項式です。

    拡張機能

    すべて展開する

    C/C++ コード生成
    MATLAB® Coder™ を使用して C および C++ コードを生成します。

    バージョン履歴

    R2021b で導入

    参考

    オブジェクト