iterate2.m

来自「Matlab做的数值计算实验」· M 代码 · 共 29 行

M
29
字号
%递推计算的稳定性
function y = iterate2(n, a)
%method2: I(n-1) = 1/a * (-I(n) + 1/n), n = N, N-1, ..., 1
%I(N) = (2*a + 1) / (2*a*(a+1)*(N+1)) 当 a >= N/(N+1);
%I(N) = 0.5*[(a+1)(N+1)^(-1) + 1/N]    当 a >=0 && a <= N/(N+1).
%a = 15 | a = 0.05
MAX = 10;
if nargin == 2, %只有输入参数为2个才计算
    if a >= MAX/(MAX + 1), %I(N) = (2*a + 1) / (2*a*(a+1)*(N+1)) 当 a >= N/(N+1);
        if n == MAX
            y = (2*a + 1) / (2*a*(a+1)*(MAX+1));
        elseif n < MAX
            y = 1/a * (-iterate2(n+1, a) + 1/(n+1));
        else
            fprintf('input parameter out of range %.3g', MAX);
        end
    elseif a >= 0 && a <= MAX/(MAX+1)
        if n == MAX
            y = 0.5*[1 / ((a+1)*(MAX+1)) + 1/MAX];
        elseif n < MAX
            y = 1/a * (-iterate2(n+1, a) + 1/(n+1));
        else
            fprintf('input parameter out of range %.3g', MAX);
        end
    end
end
            
        
        

⌨️ 快捷键说明

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