传感与检测实验报告,差动变压器的特性测定,江南大学物联网自动化

在这里插入图片描述
在这里插入图片描述

public class LeastSquares {
    public static void matching(double[] x, double[] y, double[] input, double fully) {
        double k = getK(x, y);
        double b = getB(x, y);
        System.out.println("线性回归系数k值:t"+k+"n" + "线性回归系数b值:t" + b);
        double maxy = 0; //用来记录最大偏差
        //寻找最大偏差
        for (int i = 0; i < input.length; i++) {
            if (Math.abs(k * input[i] + b - y[i]) > maxy){
                maxy = Math.abs(k * input[i] + b - y[i]);
            }
        }
        System.out.println("最大偏差为:" + maxy);
        //求灵敏度
        double s = 0;
        double sum = 0;
        for (int i = 1; i < y.length; i++) {
            sum += y[i] - y[i-1];
        }
        s = sum / (y.length - 1) / 20;
        System.out.println("灵敏度为:" + s);
        //求线性误差
        System.out.println("非线性误差为:" + maxy/fully);
    }

    //返回x的系数k公式:k=( n sum( xy ) - sum( x ) sum( y ) )/( n sum( x^2 )-sum(x) ^ 2 )
    public static double getK(double[] x, double[] y) {
        int n = x.length;
        return (double) ((n * pSum(x, y) - sum(x) * sum(y)) / (n * sqSum(x) - Math.pow(sum(x), 2)));
    }

//返回常量系数系数b 公式:b = sum( y ) / n - k * sum( x ) / n
    public static double getB(double[] x, double[] y) {
        int n = x.length;
        double k = getK(x, y);
        return sum(y) / n - k * sum(x) / n;
    }

//求和
    private static double sum(double[] ds) {
        double s = 0;
        for (double d : ds) {
            s = s + d;
        }
        return s;
    }
//求平方和
    private static double sqSum(double[] ds) {
        double s = 0;
        for (double d : ds) {
            s = (double) (s + Math.pow(d, 2));
        }
        return s;
    }
//返回对应项相乘后的和
    private static double pSum(double[] x, double[] y) {
        double s = 0;
        for (int i = 0; i < x.length; i++) {
            s = s + x[i] * y[i];
        }
        return s;
    }
    public static void main(String[] args) {
        double[] x1 = {0,0.2,0.4,0.6,0.8,1.0};
        double[] y1 = {17.6,73.6,133,200,256,312};
        double[] inputs1 = x1;
        double[] x2 = {0,-0.2,-0.4,-0.6,-0.8,-1.0};
        double[] y2 = {40.0,96,152,208,264,328};
        double[] inputs2 = x2;
        double[] x3 = {0,0.2,0.4,0.6,0.8,1.0,1.2,1.4,1.6,1.8,2.0,2.2,2.4,2.6,2.8,3.0};
        double[] y3 = {17.6,73.6,133,200,256,312,372,428,484,548,600,672,712,776,832,888};
        double[] inputs3 = x3;
        double[] x4 = {0,-0.2,-0.4,-0.6,-0.8,-1.0,-1.2,-1.4,-1.6,-1.8,-2.0,-2.2,-2.4,-2.6,-2.8,-3.0};
        double[] y4 = {40.0,96,152,208,264,328,384,440,496,552,616,666,720,784,840,898};
        double[] inputs4 = x4;
        System.out.println("+1区间");
        matching(x1, y1,inputs1,y1[y1.length-1]);
        System.out.println("-1区间");
        matching(x2, y2,inputs2,y2[y2.length-1]);
        System.out.println("+3区间");
        matching(x3, y3,inputs3,y3[y3.length-1]);
        System.out.println("-3区间");
        matching(x4, y4,inputs4,y4[y4.length-1]);
    }
}

在这里插入图片描述
在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>