def findChiParams(self): dataFileName = 'testData.txt' function = Function() chiLinear = ChiSquare(function.evalLinear, dataFileName) optimiser = Optimise() #m = params[0] #c = params[1] paramsGuess = [0., 1.] paramsAccuracy = [0.000000001, 0.000000001] paramsJump = [1., 1.] #evals minimum m and c for our ChiSquare params = optimiser.min(chiLinear.evalChiSquare, paramsGuess, paramsJump, paramsAccuracy, []) minM = params[0] minC = params[1] minChi = chiLinear.evalChiSquare(params) #finding err of values in params by finding where the chiSquare #increases by 1 either side of the minimum mRootParamGuess = [minM + 1., minC] cRootParamGuess = [minM, minC + 1.] rootParamsJump = [0.0001, 0.001] rootParamsAccuracy = [0.000001, 0.000001] mErrPos = abs( optimiser.equalTo( (minChi + 1), chiLinear.evalChiSquare, mRootParamGuess, rootParamsJump, rootParamsAccuracy, [1])[0] - minM) cErrPos = abs( optimiser.equalTo( (minChi + 1), chiLinear.evalChiSquare, cRootParamGuess, rootParamsJump, rootParamsAccuracy, [0])[1] - minC) mErrNeg = abs( optimiser.equalTo( (minChi + 1), chiLinear.evalChiSquare, [minM - mErrPos, minC], rootParamsJump, rootParamsAccuracy, [1])[0] - minM) cErrNeg = abs( optimiser.equalTo( (minChi + 1), chiLinear.evalChiSquare, [minM, minC - cErrPos], rootParamsJump, rootParamsAccuracy, [0])[1] - minC) mErrMean = (mErrPos + mErrNeg) / 2. cErrMean = (cErrPos + cErrNeg) / 2. print("") print("[m,c]:\t" + str(np.around(np.array(params), 6)) + "\n") print("mErr:\t+" + str(np.round(mErrPos, 6)) + "\t-" + str(np.round(mErrNeg, 6))) print("mean:\t" + str(np.round(mErrMean, 6)) + "\n") print("cErr:\t+" + str(np.round(cErrPos, 6)) + "\t-" + str(np.round(cErrNeg, 6))) print("Mean:\t" + str(np.round(cErrMean, 6))) print("") #self.plotChiAroundMin(chiLinear.evalChiSquare, params, [mErrPos, cErrPos], [mErrNeg, cErrNeg]) plotter = Plot() plotter.plotChiAroundMin(chiLinear.evalChiSquare, params, [mErrPos, cErrPos], [mErrNeg, cErrNeg])