ged.m

来自「很多数学内容」· M 代码 · 共 42 行

M
42 行
字号
function y=ged(f,g)
while ~isempty(f)       %删除f的前导零
    if abs(f(1))<2*eps
        f(1)=[];
    else
        break;
    end
end
while ~isempty(g)      %删除g的前导零
    if abs(g(1))<2*eps
        g(1)=[];
    else
        break;
    end
end
if isempty(f)|isempty(g)    %f和g不应该为空
    error('Arguments should not be null')
    return;
end
f=f/f(1);g=g/g(1);
while 1
    [q,r]=deconv(f,g);       %多项式的长除法
    while ~isempty(r)                %删除r的前导零
        if abs(r(1))<2*eps
            r(1)=[];
        else
            break;
        end
    end
    if isempty(r)         %r为空则表示已经整除
        y=g/g(1);
        return;
    else
        f=g;
        g=r;
    end
    if length(r)==1    %r如果为常数表示公因子为
        y=1;
        return;
    end
end
        

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?