euclid

Алгоритм Евклида для полиномов Лорана

    Синтаксис

    Описание

    пример

    dec = euclid(A,B) возвращает массив структур, таким образом что каждая строка dec соответствует Евклидову делению полинома Лорана A полиномом Лорана B:

    A = B*Q + R,

    где Q частное и R остаток.

    Примеры

    свернуть все

    Создайте два полинома Лорана:

    • 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-by-2 массив структур, где N ≤ 4 является количеством разложений. i th строка dec содержит одно Евклидово деление A B:

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

    где

    • dec(i,1).LP соответствие полинома Лорана частному.

    • dec(i,2).LP соответствие полинома Лорана остатку.

    Расширенные возможности

    Генерация кода C/C++
    Генерация кода C и C++ с помощью MATLAB® Coder™.

    Смотрите также

    Объекты

    Введенный в R2021b
    Для просмотра документации необходимо авторизоваться на сайте