GEE计算研究区的植被指数MSAVI,结果值域超过-1到1,这段代码有误吗?

// cloud masking functions:
//#####################################################################################
var getQABits = function(image, start, end, newName) {
    // Compute the bits .
    var pattern = 0;
    for (var i = start; i <= end; i++) {
       pattern += Math.pow(2, i);
    }
    // Return a single band image of the extracted QA bits, giving the band a new name.
    return image.select([0], [newName])
                  .bitwiseAnd(pattern)
                  .rightShift(start);
};

// A function to mask out cloudy pixels.
var cloud_shadows = function(image) {
  // Select the QA band.
  var QA = image.select(['pixel_qa']);
  // Get the internal_cloud_algorithm_flag bit.
  return getQABits(QA, 3,3, 'Cloud_shadows').eq(0);
  // Return an image masking out cloudy areas.
};

// A function to mask out cloudy pixels.
var clouds = function(image) {
  // Select the QA band.
  var QA = image.select(['pixel_qa']);
  // Get the internal_cloud_algorithm_flag bit.
  return getQABits(QA, 5,5, 'Cloud').eq(0);
  // Return an image masking out cloudy areas.
};

// A function to mask out snow pixels.
var snow = function(image) {
  // Select the QA band.
  var QA = image.select(['pixel_qa']);
  // Get the internal_cloud_algorithm_flag bit.
  return getQABits(QA, 4,4, 'Snow').eq(0);
  // Return an image masking out cloudy areas.
};

var maskClouds = function(image) {
  var s = snow(image);
  var cs = cloud_shadows(image);
  var c = clouds(image);
  image = image.updateMask(s);
  image = image.updateMask(cs);
  return image.updateMask(c);
};




//Set year range 
var yearrangeStart = 1986; 
var yearrangeStop = 1987;
var monthrangeStart = 5;
var monthrangeStop = 10;
//Loop through years 
for(var loopYear = yearrangeStart; loopYear <= yearrangeStop; loopYear +=1){
  for(var loopMonth = monthrangeStart; loopMonth <= monthrangeStop; loopMonth +=1){
//Set year's date range
if(loopMonth == 6 || loopMonth == 9){var endday = 30;}
else {var endday = 31;}
var start = ee.Date.fromYMD(loopYear, loopMonth, 1);
var end = ee.Date.fromYMD(loopYear, loopMonth, endday);
var collectionL5 = ee.ImageCollection('LANDSAT/LT05/C01/T1_SR').filterBounds(AOI)
//July and August only
.filterDate(start, end)
      .map(function (image) {
        var m = maskClouds(image).select('B4');
        var n = maskClouds(image).select('B3');
        var a = m.multiply(2).add(1);
        var b = a.multiply(a);
        var c = m.subtract(n);
        var d = c.multiply(8);
        var e = b.subtract(d).sqrt();
                return (
                  a.subtract(e).divide(2)
                  .rename('nd').set({"system:time_start":image.get("system:time_start")})
                )
       });

       
// Merge Landsat collection
var collectionL = ee.ImageCollection(collectionL5);

//Create composite with median, clip to AOI and rename band based on year 
var finalOutput = collectionL.reduce(ee.Reducer.median())
.clip(AOI)
.rename(loopYear.toString()+'_'+loopMonth.toString());
//Generate filename for export 
var filename = ("NDVI_Composite_").concat(loopYear.toString()+'_'+loopMonth.toString()); 
//Add to map //
// Map.addLayer(finalOutput, {}, filename);
//zhushi xiamian
// var colorizedVis = {
//   min: 0.0,
//   max: 1.0,
//   palette: [
//     'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
//     '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
//     '012E01', '011D01', '011301'
//   ],
// };
// Map.addLayer(finalOutput, colorizedVis, 'Colorized');
// var zonalStats = finalOutput.reduceRegion({
//     geometry: AOI,
//     reducer: ee.Reducer.mean(),
//     scale: 30,
//     bestEffort: true
// });
// print(zonalStats)   
      Export.image.toDrive({
        image:finalOutput,
        description: loopYear.toString()+'_'+loopMonth.toString(),
        folder: "MASVI",
        region: AOI.geometry().bounds(),
        scale: 30,
        maxPixels: 8e11})
}}

 

解决了吗兄弟