Ovid_LIFE
Ovid_LIFE
采纳率50%
2021-03-07 11:31

自己写的Javascript实现牛顿插值法出现问题

var N;
var X = new Array();
var Y = new Array();
var F = new Array();
X[0] = 815;
X[1] = 1207;
X[2] = 1614;
X[3] = 2012;
X[4] = 2603;
X[5] = 3006;
X[6] = 3403;
X[7] = 3804;

Y[0] = 1326.8;
Y[1] = 1354.7;
Y[2] = 1284.4;
Y[3] = 1122.9;
Y[4] = 1141.0;
Y[5] = 1051.2;
Y[6] = 1233.9;
Y[7] = 1129.7;
N = 8;
var Q = new Array();
computeFuelConsumption();

alert(Q);
function computeFuelConsumption(){

    //输入要插值节点的个数:
    //n = document.getElementById("n").value;
    data();
    newton();
    alert("============");
    for(i = 0;i < rang - 1;i++){
        newvalue(outputArray[i],i);
    } 
    alert("//////////////////////");
}

function data(){

// int i = 0;
//  if(document.getElementById("xArray1").value != 0){
//   x[0] = document.getElementById("xArray1").value;
//   i++;
//  }
//  if(document.getElementById("xArray2").value != 0){
//    x[1] = document.getElementById("xArray2").value;
//   i++;
//  }
//  if(document.getElementById("xArray3").value != 0){
//      x[2] = document.getElementById("xArray3").value;
//   i++;
//  }
//  if(document.getElementById("xArray4").value != 0){
//      x[3] = document.getElementById("xArray4").value;
//   i++;
//  }
//  if(document.getElementById("xArray5").value != 0){
//   x[4] = document.getElementById("xArray5").value;
//   i++;
//  }
//      
//  if(document.getElementById("yArray1").value != 0){
//  y[0] = document.getElementById("yArray1").value;
//  }
//  if(document.getElementById("yArray2").value != 0){
//   y[1] = document.getElementById("yArray2").value;
//  }
//  if(document.getElementById("yArray3").value != 0){
//   y[2] = document.getElementById("yArray3").value;
//  }
//  if(document.getElementById("yArray4").value != 0){
//   y[3] = document.getElementById("yArray4").value;
//  }
//  if(document.getElementById("yArray5").value != 0){
//   y[4] = document.getElementById("yArray5").value;
//  }
//  N = i;
}

function newton(){
var k = 0;
var nn;
nn = N - 1;
    for (i = 0; i < nn; i++){
        for (j = 0; j < nn - i; j++) {
            if (i == 0)
                F[k++] = (Y[j + 1] - Y[j]) / (X[j + 1] - X[j]);
            else {
                F[k] = (F[k + i - nn ] - F[k + i - nn - 1]) / (X[j + i + 1] - X[j]);
                k++;
            }
        }
    }
}

function newvalue(p,o){
var B = new Array();
var P;
P = p;
B[0] = 1.0;
    for (i = 0; i < N - 1; i++)
        B[i + 1] = B[i] * (P - X[i]);
    for (i = 0; i < N; i++) {
        if (i == 0)
            a = Y[0];
        else {
            P += B[i] * F[k];
            k += N - i;
        }
    }
    Q[o] = P;
}
 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

为你推荐