zoukankan      html  css  js  c++  java
  • 【JavaScript】7-18 二分法求多项式单根 (20分)

    题目:

     输入格式:

    输入在第1行中顺序给出多项式的4个系数a3​​、a2​​、a1​​、a0​​,在第2行中顺序给出区间端点a和b。题目保证多项式在给定区间内存在唯一单根。

    输出格式:

    在一行中输出该多项式在该区间内的根,精确到小数点后2位。

    输入样例:

    3 -1 -3 1

    -0.5 0.5

    输出样例:

    0.33

    JavaScript代码:

    var readline = require('readline');
    
    var readlineTest = readline.createInterface({    
        input: process.stdin,
        output: process.stdout    
    });
    
    var lineCounts=2;//输入的行数,参数写死
    var tempArray=[];//创建数组来存储每一行的数据
    var tempArrayIndex=0;//初始化数组的索引
    
    readlineTest.on('line', function(line){
        
        //将每一行的内容添加至数组tempArray
        tempArray[tempArrayIndex]=line;
        tempArrayIndex++;
        //当已输入的行数达到最大输入的行数时,结束readline.Interface实例
        if(tempArray.length==lineCounts){
            var line1 = tempArray[0].split(' ')
            var line2 = tempArray[1].split(' ')
            var a3 = parseFloat(line1[0])
            var a2 = parseFloat(line1[1])
            var a1 = parseFloat(line1[2])
            var a0 = parseFloat(line1[3])
            var a = parseFloat(line2[0])
            var b = parseFloat(line2[1])
                    
            var ret = sep(a3,a2,a1,a0,a,b)    
            console.log(ret)
            readlineTest.close();
        }
        
    });
    
    //当readlineTest执行'close'命令时,输入流关闭,程序结束。
    readlineTest.on('close', function() {    
        process.exit(0)
    });
    
    function sep(a3,a2,a1,a0,a,b) {
        var left = a
        var right = b 
        
        while(right - left >= 0.01) {
            var mid = (left + right) / 2
            if(f(a3,a2,a1,a0,mid) == 0){
                break
            }
            
            if(f(a3,a2,a1,a0,mid) * f(a3,a2,a1,a0,left) < 0) {
                right = mid
            } else {
                left = mid
            }
        }
        
        return ((left + right) / 2).toFixed(2)
    }
    
    function f(a3,a2,a1,a0,x) {
        var fun = a3 * x * x * x + a2 * x * x + a1 * x + a0
        return fun
    }
  • 相关阅读:
    转载:怎样用通俗的语言解释REST,以及RESTful?
    WiresShark 图解教程1
    派力奥 1.3 发动机
    EtherChannel Cisco 端口聚合详解
    Linux 排除问题的前5分钟
    Linux 定时任务crontab
    Linux SCP命令复制传输文件的用法
    Linux 挂载aliyun数据盘
    BCDedit 研究
    Bcdedit命令使用详解使用方法
  • 原文地址:https://www.cnblogs.com/moonskies/p/14325992.html
Copyright © 2011-2022 走看看