Oracle PL/SQL 使用牛顿法、二分法解方程

题目: 求解方程2x^3-4x^2+3x-6=0 在1.5附近的根 

牛顿法:

/*牛顿法
 求解方程2x^3-4x^2+3x-6=0 在1.5附近的根
*/
DECLARE
  X  NUMBER := 1.5;
  X0 NUMBER;
  F  NUMBER;
  FD NUMBER;
BEGIN
  LOOP
    --函数
    F := 2 * POWER(X, 3) - 4 * POWER(X, 2) + 3 * X - 6;
    --导函数
    FD := 6 * POWER(X, 2) - 8 * X + 3;
    X0 := X - F / FD;
    X  := X0;
    EXIT WHEN ABS(F / FD) < 1E-10;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE(X);
END;

二分法:

/*二分法
 求解方程2x^3-4x^2+3x-6=0 在1.5附近的根
*/
DECLARE
  X0 NUMBER := -100;
  X1 NUMBER := 101;
  X  NUMBER := 1.5;
  F  NUMBER;
  FD NUMBER;
BEGIN
  LOOP
    F := 2 * POWER(X, 3) - 4 * POWER(X, 2) + 3 * X - 6;
    IF F < 0 THEN
      X0 := X;
    ELSE
      X1 := X;
    END IF;
    X := (X0 + X1) / 2;
    EXIT WHEN ABS(F - 0) < 1E-10;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE(X);
END;

   

  

  

  

posted @ 2017-04-19 10:01  Abin2008  阅读(681)  评论(0)    收藏  举报