Hi I am struggling to perform sine regression in Maple, I have tried using code on the internet but it hasnt worked. Any help would be appreciated, thanks.
My data set is:
xy2 := [8.00, -.506679048120256], [8.08, 0.281910754667817e-1], [8.16, .559664265569177], [8.24, 1.01070100324046], [8.32, 1.31611672505376], [8.40, 1.43196427035055], [8.48, 1.34023337273233], [8.56, 1.05272193513947], [8.64, .611568467681354], [8.72, 0.811397528142090e-1], [8.80, -.461438501129773], [8.88, -.937510436115816], [8.96, -1.27829712008967], [9.04, -1.43481210421374], [9.12, -1.38382085374637], [9.20, -1.13084364570752], [9.28, -.712970794810407], [9.36, -.191272835454596], [9.44, .358331090663093], [9.52, .856136430555551], [9.60, 1.23021604773045], [9.68, 1.42679944926732], [9.76, 1.41736947469857], [9.84, 1.20128507880053], [9.92, .810092632128225], [10.00, .301065940880780], [10.08, -.251648449233878], [10.16, -.767849176869750], [10.24, -1.17292120742612], [10.32, -1.40861259493884], [10.40, -1.44110418232058], [10.48, -1.26379776830055], [10.56, -.902269772395664], [10.64, -.409554051221942], [10.72, .142501522971709], [10.80, .673734976975030], [10.88, 1.10731447772044], [10.96, 1.38084402685540], [11.04, 1.45522841363022], [11.12, 1.31817268904005], [11.20, .988929300957682], [11.28, .515897968446476], [11.36, -0.318624454182872e-1], [11.44, -.574750512030218], [11.52, -1.03419534660239], [11.60, -1.34402349055817], [11.68, -1.45994449557100], [11.76, -1.36423262002034], [11.84, -1.06956673456288], [11.92, -.619350106423691], [12.00, -0.793958770633476e-1], [12.08, .471761289512621], [12.16, .954294022860301], [12.24, 1.29864164214636], [12.32, 1.45551063055783], [12.40, 1.40182920346040], [12.48, 1.14373164965961], [12.56, .719231990114759], [12.64, .190472087224845], [12.72, -.365570174515493], [12.80, -.868296154301247], [12.88, -1.24516814950451], [12.96, -1.44215768668732], [13.04, -1.43084370975717], [13.12, -1.21101958959963], [13.20, -.814918996519041], [13.28, -.300617712320080], [13.36, .256936910993194], [13.44, .776860662411496], [13.52, 1.18406604455853], [13.60, 1.42009393305225], [13.68, 1.45118920522256], [13.76, 1.27106808636091], [13.84, .905832007489113], [13.92, .409125471244190], [14.00, -.146591404838158], [14.08, -.680632305076273], [14.16, -1.11580154033477], [14.24, -1.38954335200116], [14.32, -1.46281456021820], [14.40, -1.32355502489098], [14.48, -.991432071017881], [14.56, -.515321026695257], [14.64, 0.352425325998812e-1], [14.72, .580250581641171], [14.80, 1.04085183402835], [14.88, 1.35075391063922], [14.96, 1.46571651564137], [15.04, 1.36819902679830], [15.12, 1.07121797171521], [15.20, .618559572280749], [15.28, 0.764165939267409e-1], [15.36, -.476354929024263], [15.44, -.959710193024244], [15.52, -1.30400243735277], [15.60, -1.45998995251031], [15.68, -1.40476029253913], [15.76, -1.14472632247135], [15.84, -.718223841180242], [15.92, -.187706295906662], [16.00, .369587917409398], [16.08, .872888602357739], [16.16, 1.24959729981774], [16.24, 1.44574029144576], [16.32, 1.43304191884974]}
Optimization routines do not know what the data looks like and when supplied with as much data as you have, it may mistake the sine regression for e.g. white noise and the approximation algorithm is likely to fail. We, however, have an easy time seeing patterns and can help the routine, which is necessary in this case.
Let us start by plotting the data:
A human can easily see the pattern going on here. But a naive implementation of a fit gives a bad result:
We can restrict the optimization routine to ranges on the parameters (e.g.
a
seems to be between 1 and 2). Good initial guesses can also be important when doing optimization. Fiddling around withparameterranges
andinitialvalues
gives a nice convergence.