欧美女同视频激情_国产原创中文字幕在线观看_4438xx亚洲最大五色丁香_成年做羞羞的视频网站在线观看_a毛片免费全部播_原神胡桃乳液vx网站进入_一区亚洲欧美中文日韩v在线观看_校园春色亚洲_搞机time软件app免费下载安装_十八禁无遮拦视频大全

官方gamma函數(shù)沒有復(fù)數(shù),于是自己寫了一個沒有優(yōu)化的

標(biāo)簽: 科學(xué)計算

石雨澤 2025-05-27 22:19:16

以下,就是通過定義式得來的復(fù)數(shù)域gamma函數(shù),未使用近似算:

function ret=Gamma(z)

if isreal(z)

ret=gamma(z);

else

if real(z) >= 0

rt=@(x)(-1).^x ./ (gamma(x+1).*(x+z));

ret=integral(@(x)exp(-x).*x.^(z-1), 1, Inf)+sum(rt(0:172));

else

ret=pi./(Gamma(1-z).*sin(pi.*z));

end

end

end


回復(fù)

HanqinWu 2025-10-10 #1

function ret = Gamma(z)

    if isreal(z)

        ret = gamma(z);

    else

        if real(z) >= 0

            % 優(yōu)化1:預(yù)先計算常量,避免重復(fù)計算

            n_terms = 50;  % 優(yōu)化2:減少項數(shù),測試合適的收斂點

            k = 0:n_terms;

            

            % 優(yōu)化3:向量化計算,避免匿名函數(shù)開銷

            gamma_vals = gamma(k + 1);

            terms = (-1).^k ./ (gamma_vals .* (k + z));

            

            % 優(yōu)化4:設(shè)置積分選項提高精度

            options = {'RelTol', 1e-10, 'AbsTol', 1e-12};

            integral_part = integral(@(x) exp(-x) .* x.^(z-1), 1, Inf, options{:});

            

            ret = integral_part + sum(terms);

        else

            % 優(yōu)化5:添加輸入驗證和特殊情況處理

            if abs(mod(real(z), 1)) < 1e-10 && abs(imag(z)) < 1e-10

                warning('Gamma:pole', 'Gamma function has poles at non-positive integers');

                ret = Inf;

            else

                ret = pi ./ (Gamma(1 - z) .* sin(pi .* z));

            end

        end

    end

end

  那我用deepseek優(yōu)化一下!

回復(fù)

重置 提交