程序名称: INT1
大小(计算器内):10K
描述:包含两个函数 INT1 和 INT2,分别用于计算定积分,二重积分(矩形上)。此程序会占用方程变量E0.
函数 INT1 参数:INT1(eqn, a, b, n)
eqn: 被积函数,需要用字符串的形式输入。"f(X)".
a, b: 积分下限和上限
n : 绝对误差的精度值:程序会试图将绝对误差控制在 10^(-n)以内,n <= 10. 推荐 n=5~7.
函数 INT2 参数:INT2(eqn, x0, x1, y0, y1, n)
eqn: 被积函数,需要用字符串。"f(X, Y)".
x0, x1, y0, y1: 二重积分上下限。
n:相对误差精度值:该值是相对误差,并且仅供参考。建议n<=5. 注意程序消耗的时间随n指数增长。(请注意计算二重积分的复杂度远比一重积分高)
同时提醒一下,如果计算花去过长时间,按ON键可以中断计算。
--------------------------------------- Program INT1 ----------------------------------------
Sum(a, b, fa, f2, fb, epsilon, depth)
BEGIN
//Author : TZR
//This is a sub function.
LOCAL S1, S2, f1, f3, h;
h := (b - a) / 4;
X := a+h;
f1 := EVAL(E0);
X := b-h;
f3 := EVAL(E0);
S1 := (b-a)/6 * (fa + 4 * f2 + fb);
S2 := (b-a)/12 * (fa + 4 * (f1 + f3) + 2 * f2 + fb);
IF ABS(S1 - S2) <= 10*epsilon OR depth > 14 THEN
RETURN S2;
ELSE
RETURN Sum(a, (a+b)/2, fa, f1, f2, epsilon/2, depth + 1) + Sum((a+b)/2, b, f2, f3, fb, epsilon/2, depth + 1);
END;
END;
EXPORT INT1(eqn, a, b, n)
BEGIN
//Author : TZR
//This program aims to solve the problem of integration on HP 39gII, in most cases it provedes at least 7 digits of accuracy.
//Ver 1.0
//eqn : the function f(X), as string
//a, b: integration from a to b
//n : the program will try to achieve an accuracy of 10^(-n) (absolute error). n <= 10.
//Example : INT2("X", 0, 1, 5)
LOCAL fa, fb, f2;
E0 := eqn;
X := a;
fa := EVAL(E0);
X := (a+b)/2;
f2 := EVAL(E0);
X := b;
fb := EVAL(E0);
RETURN Sum(a, b, fa, f2, fb, 0.1^n, 0);
END;
EXPORT INT2(fun, x0, x1, y0, y1, n)
BEGIN
//Author : TZR
//Description : Integration on [x0, x1] x [y0, y1] dxdy.
//n : the number of digits of accuracy (relative error). 1<= n <= 5.
LOCAL sum, i, Fn, Fn_1, dx, dy, m;
E0 := fun;
Fn := 1;
Fn_1 := 1;
sum := 0;
m := INT(4.7*n);
FOR i FROM 1 TO m DO
Fn := Fn_1 + (Fn_1 := Fn);
END;
X := x0;
dx := (x1 - x0) / Fn;
dy := Fn_1 / Fn;
FOR i FROM 1 TO Fn DO
X := X + dx;
Y := FRAC(i * dy) * (y1 - y0) + y0;
sum := sum + EVAL(E0);
END;
RETURN (x1 - x0) * (y1 - y0) * sum / Fn;
END;
---------------------------------------- 代码结束 ---------------------------------------
对于光滑函数该程序一般收敛的比较好
大小(计算器内):10K
描述:包含两个函数 INT1 和 INT2,分别用于计算定积分,二重积分(矩形上)。此程序会占用方程变量E0.
函数 INT1 参数:INT1(eqn, a, b, n)
eqn: 被积函数,需要用字符串的形式输入。"f(X)".
a, b: 积分下限和上限
n : 绝对误差的精度值:程序会试图将绝对误差控制在 10^(-n)以内,n <= 10. 推荐 n=5~7.
函数 INT2 参数:INT2(eqn, x0, x1, y0, y1, n)
eqn: 被积函数,需要用字符串。"f(X, Y)".
x0, x1, y0, y1: 二重积分上下限。
n:相对误差精度值:该值是相对误差,并且仅供参考。建议n<=5. 注意程序消耗的时间随n指数增长。(请注意计算二重积分的复杂度远比一重积分高)
同时提醒一下,如果计算花去过长时间,按ON键可以中断计算。
--------------------------------------- Program INT1 ----------------------------------------
Sum(a, b, fa, f2, fb, epsilon, depth)
BEGIN
//Author : TZR
//This is a sub function.
LOCAL S1, S2, f1, f3, h;
h := (b - a) / 4;
X := a+h;
f1 := EVAL(E0);
X := b-h;
f3 := EVAL(E0);
S1 := (b-a)/6 * (fa + 4 * f2 + fb);
S2 := (b-a)/12 * (fa + 4 * (f1 + f3) + 2 * f2 + fb);
IF ABS(S1 - S2) <= 10*epsilon OR depth > 14 THEN
RETURN S2;
ELSE
RETURN Sum(a, (a+b)/2, fa, f1, f2, epsilon/2, depth + 1) + Sum((a+b)/2, b, f2, f3, fb, epsilon/2, depth + 1);
END;
END;
EXPORT INT1(eqn, a, b, n)
BEGIN
//Author : TZR
//This program aims to solve the problem of integration on HP 39gII, in most cases it provedes at least 7 digits of accuracy.
//Ver 1.0
//eqn : the function f(X), as string
//a, b: integration from a to b
//n : the program will try to achieve an accuracy of 10^(-n) (absolute error). n <= 10.
//Example : INT2("X", 0, 1, 5)
LOCAL fa, fb, f2;
E0 := eqn;
X := a;
fa := EVAL(E0);
X := (a+b)/2;
f2 := EVAL(E0);
X := b;
fb := EVAL(E0);
RETURN Sum(a, b, fa, f2, fb, 0.1^n, 0);
END;
EXPORT INT2(fun, x0, x1, y0, y1, n)
BEGIN
//Author : TZR
//Description : Integration on [x0, x1] x [y0, y1] dxdy.
//n : the number of digits of accuracy (relative error). 1<= n <= 5.
LOCAL sum, i, Fn, Fn_1, dx, dy, m;
E0 := fun;
Fn := 1;
Fn_1 := 1;
sum := 0;
m := INT(4.7*n);
FOR i FROM 1 TO m DO
Fn := Fn_1 + (Fn_1 := Fn);
END;
X := x0;
dx := (x1 - x0) / Fn;
dy := Fn_1 / Fn;
FOR i FROM 1 TO Fn DO
X := X + dx;
Y := FRAC(i * dy) * (y1 - y0) + y0;
sum := sum + EVAL(E0);
END;
RETURN (x1 - x0) * (y1 - y0) * sum / Fn;
END;
---------------------------------------- 代码结束 ---------------------------------------
对于光滑函数该程序一般收敛的比较好