use curveFit.frink /** This performs tests on the file curveFit.frink which tries to fit data to linear and quadratic curves. */ // Linear data data = [ [0, 1], [1, 3], [2, 5] ] printFit[data] // Test to verify that units of measure can be fitted correctly. // THIS EXAMPLE IS ACTUALLY AMAZING! // It derives the gravitic equation given just 3 points on a curve of // time and height (and none of those points are forced to be zero, nor are // the initial height, nor the initial velocity.) It derives the initial // velocity at t=0, the acceleration of gravity, and the initial height at t=0 // given 3 points on the trajectory of an object. // This is incredibly impressive. // To generate points, see the Frink solver at: // tinyurl.com/2p8pntcd // This represents the [time, height] data of a projectile being launched from // an initial height of 2 meters at t=0 s and an initial upward velocity of // 40 m/s at t = 0 s: data = [ [1 s, 32.19335 m], [2 s, 42.7734 m], [4.1 s, 1.1502135 m] ] printFit[data] // This is the above but with heights rounded to the nearest 0.1 m. // data = [ [1 s, 32.2 m], [2 s, 42.8 m], [4.1 s, 1.2 m] ] // printFit[data] // This demonstrates a purely symbolic result! symbolicMode[true] data = [ [x1, y1], [x2, y2], [x3, y3] ] printFit[data] printFit[data] := { println["\n\nFor data: "] println[formatTableBoxed[data]] println["linear: " + inputForm[linearFit[data]]] f = linearFitFunction[data] println["\nlinear function: " + inputForm[f]] println["\nquadratic: " + inputForm[quadraticFit[data]]] f = quadraticFitFunction[data] println["\nquadratic function: " + inputForm[f]] }