Eksempler på brugen af GymMat pakken Dato: 18. marts 2012 (Steen Toft Jørgensen & Yenn Fang Loo) (1) "GymMat ver.2012.03.16_r.c af Loo Fang Yenn [ylsnabel-a<ghg. dk], 2011, Distribueres under Gnu Public License. En stor tak går til Steen Toft Jørgensen og Abbas Nick" Eksempler med Regression (Se også TilpasFunktion's eksemplet nedenfor) (1.1) Skal vi lave en regression er det smartest hvis man gemmer regressionen som en funktion (her kaldet f) "r^2=",.9859394795 "chi^2=", 0.66882e-1 (1.2) (1.3) Her ses r-kvadratet og den bedste regression. Man kan nu beregne funktionsværdier og bestemme x- værdier for kendte funktionsværdier: 7.381779555 (1.4) 3.394133285 Den simpleste måde at lave regressionene og plot "r^2=",.9859394795 "chi^2=", 0.66882e-1 (1.5)
Eksponentiel regression f(x) = 0.7322 2.160 x 11 10 9 8 7 6 5 4 3 2 1 2 3 x Advanceret: Vil man selv tilpasse sit plot kan disse tilføjes i en 3. liste med sædvandlige plotoptions: "r^2=",.9859394795 "chi^2=", 0.66882e-1
50 Eksponentiel regression f(x) = 0.7322 2.160 x 40 husdyr... 30 20 10 0 1 2 3 4 5 6 antal år efter 19.. Plot af en lineær regression (samme datasæt) "r^2 =",.9911533421 "chi^2 =", 0.41903e-1
Lineær regression f(x) = 2.750 xk1.400 8 7 6 5 4 3 2 1 1 2 3 x Her ses de sædvanlige tre regressioner - deres r-kvadrat kan sammenlignes "r^2 =",.9911533421 "chi^2 =", 0.41903e-1 "r^2=",.9859394795 "chi^2=", 0.66882e-1 "r^2 =",.9990273978 `chi^2 =`, 0.51809e-2 Funktionsværdier beregnes funktionen sættes lig et tal og ligningen løses 6.850000 (1.6) (1.7) (1.8)
Alle tre regressioner plottes 10 9.600000000 (1.8) 8 6 y 4 2 0 1 2 3 4 5 x "r^2 =",.9990273978 `chi^2 =`, 0.51809e-2 [x =.8.. 3.3]
Potens regression f(x) = 1.485 x 1.39559019042059 7 6 5 4 3 2 1 2 3 x "r^2=",.9859394795 "chi^2=", 0.66882e-1
Eksponentiel regression f(x) = 0.7322 2.160 x 11 10 9 8 7 6 5 4 3 2 1 2 3 x "r^2 =",.9911533421 "chi^2 =", 0.41903e-1
Lineær regression f(x) = 2.750 xk1.400 8 7 6 5 4 3 2 1 1 2 3 x Tidligere versioner af GymMat har haft problmer med at håndtere aftage datasæt med potensregression - det er nu ordnet. "r^2 =",.9978630371 `chi^2 =`, 0.28784e-1 [x =.8.. 7.7] (1.9)
35 Potens regression 30.46 f(x) = x 0.676912368434070 30 25 20 15 10 "r^2 =",.9978630371 `chi^2 =`, 0.28784e-1 1 2 3 4 5 6 7 x (1.10) 3.64758954728548 30.69924420 (1.11) (1.12) Bemærk: at der her bruges til at løse ligningen, da de(n) komplekse løsninger ofte tager lang tid at finde. Den reelle ligning har jo alligevel kun en løsning. Eksempler med TilpasFunktion, PlotPunkter og VisPlots Nogle gange kan der være nødvendigt at tilpasse nogle data til en funktion, som man selv har defineret (fremfor de tre sædvanlige) (2.1)
Eksempel Vi ønsker at tilpasse et 2.gradspolynomium til følgende datasæt: (2.2) # Tilpasser en funktion f til data X og Y på liste eller vektorform. chi^2 # teststørrelsen er angivet /n Fx TilpasFunktion([2,3,4,5],[1, 3,4,3], # a*x^2+b*x+c, x) TilpasFunktion( X, Y, f, varx := x, { begynd := NULL } ) `chi^2 =`, 0.19039e-1 (2.3)
5 4 3 2 1 0 2 4 6 8 10 x # Plotter punkter i et koordinatsystem. Fx PlotPunkter([1,2,3, 4],[-10,3,5,-1]); # eller PlotPunkter([1,2,3,4],[-10,3,5,-1], [color = black, style = diamond]); PlotPunkter( X, Y, opt := [] )
5 4 3 2 1 2 3 4 5 6 7 8 9 # Viser flere grafer/plots i samme koordinatsystem (samme som plots:-display()) #. Fx p1:=plot(sin(x)); p2:=plot(0.01*x^2); VisPlots(p1,p2) VisPlots( a, b := NULL, c := NULL, d := NULL, e := NULL, f := NULL, g := NULL )
Parabel tilpasset punkter i listerne X og Y 5 4 3 2 1 0 2 4 6 8 10 x Eksempel med eksp.aft. funktion med hævet "nulniveau" (fx baggrundstråling ved radioaktivitet) `chi^2 =`, 0.83411e-18 (2.4)
50 Eksp.aftagende funktion med baggrund 40 30 y 20 10 0 2 4 6 8 10 x Ingen korrelationskoefficient gives. Man må her vurdere ud fra funktionens graf og punkternes udseende. Eksempler med BoksPlot (3.1) Et boksplot lavet ved hjælp af et kvartilssæt # Laver et boksplot af en liste af tal L. Hvis der er 5 tal i listen regnes # disse for kvartilssættet. To eller flere datasæt kan plottes samtidigt hvis # man skriver: Boksplot([L1,L2]), L1 og L2 er lister. Fx er 1.
kvartil er def. # som mindste obs. der større end eller lig med 25% af observationerne BoksPlot( L, tekst := "Observation", { offset := 0 } ) Observationerne kunne fx være at have observeret hvor mange km/h nogle bilister har kørt over det tilladte på to forskellige motervejsstrækninger. Her er kvartilssættet angivet (inkl. min og maks observation) 0 10 20 30 40 Antal km/h over det tilladte Vi vil gerne vise boksplot for listerne L og L2 i samme, så derfor tegnes det andet boksplot med en forskydning på y-aksen (3.2)
0 10 20 30 40 50 Observation Eksempler med Ikke-grupperet Statistik (4.1) Her haves nogle diskrete observationer X'erne angiver observationsværdien og H angiver hyppighederne (eller frekvenser (4.2)
# Tegner et trappediagram (ugrupperet) givet en liste med observationer, X, og # en liste med hyppigheder/frekvenser, H. Fx X:=[-3,0,2,4,7, 10,12]; # H:=[0,0,1,3,4,7, # 3] TrappeDiagram( X, H, enhed::string := "Observation" ) 1 Trappediagram Kum.Frekvens 0 0 10 20 30 40 50 60 70 point Til aflæsning klikkes på grafen og ved at vælge linieværktøjet kan man tegne pilene (hold shift nede så bliver vandrette eller lodret) (4.3) Hyppighederne og den kummulerede frekvens på tabelform, fås ved at tilføje et komma tekst (fx et tal) efter hyppighederne: (4.4)
pindediagram med hyppigheder Pindediagram Frekvens 0 10 20 30 40 50 60 Observation Pindediagram med frekvenser og tekst på 1.aksen
Pindediagram Frekvens 0 10 20 30 40 50 60 længde på fisk (cm) Eksempler med Grupperet Statistik (5.1) Man skal forestille sig at man har fået følgende tabel med grupperede hyppigheder: Længde af stør fanget i floden X (cm) 10-20 20-30 30-50 50-60 hyppighed 12 23 33 10
Skal man lave et histogram, så skal man angive observations-intervallerne som Maple-intervaller dvs. intervallet ]10;20] bliver til 10..20 (5.2) # Tegner et histrogram (GRUPPERET) givet en liste med observationsintervaller, # X, og en liste med hyppigheder/frekvenser, H. Fx # X:=[10..12,12..14,14..18,18..24] og H:=[4,5,7,3] Histogram( X, H, enhed::string := "observation", { frekvenser := true, optioner := NULL } ) (5.3) Histogram Arealet angiver frekvens Sumkurven 15.4 29.5 42.3 12.8 0 10 20 30 40 50 60 observation (5.4)
1 Sumkurve kum.frekvens 0 10 20 30 40 50 60 Observation Aflæsning på sumkurve Man kan bruge sumkurven og trappediagrammet til at aflæse kvartilssættet dette gøres ved at vælge sumkurve/trappediagrammet og vælge drawing og line tool (se figur) Herefter markeres fx 25% kvartilen med museklik. Hold shift-tasten nede mens linien trækkes hen til kurven - klik. Hold shift-tasten nede mens musen trækkes ned til x-aksen (se resultat i figuren). Afslut med et dobbelt-klik. (man kan lege lidt med pilespidser). kvartilssættet er ca: min 10 n.kv 23
med 32,5 ø.kv 44 max 60 1 Sumkurve kum.frekvens 0 10 20 30 40 50 60 længde af stør i cm 1 Sumkurve kum.frekvens 0 10 20 30 40 50 60 længde af stør i cm Histogrammet kan også laves uden intervaller blot med første venstre punkt og alle højre endepunkter for x-koordinaterne og for hyppigheder/frekvenser indsættes et nul som første tal i
listen (Det tilrådes dog at bruge interval-metoden af pædagogiske grunde) 1 Sumkurve (5.5) kum_frekvens 0 10 20 30 40 50 60 cm
Histogram Arealet angiver frekvens 0 10 20 30 40 50 60 observation Eksempler med Trigonometri (6.1) 0.7071067810 0. 90. De trigonometriske funktioner opdager brugerens kommafejl: kommafejl (6.2) (6.3) (6.4)
kommafejl Eksempler på sinusrelationer med TrigSolver (NB: TrigSolver er erstattet af MultiSolve) skikse Her er et eksempel med løsning af en trigometrisk ligning - vi søger vinklen B vha. sinus-relationen. Vinklen findes i intervallet 0 til 180 grader: #!!! Anvend MultiSolve i stedet for!!! Løser en (simpel) trigonometrisk # ligning i et interval [a;b] skrevet: a..b. Fx TrigSolve(Sin (x)=3/10, # x=0..2*pi); TrigSolve( ligning, interval ) "Anvend MultiSolve( ligning, x = a..b) i stedet for!!!" (7.1)
Eksempler med MultiSolve (numerisk ligningsløser) God til ligninger som ikke er polynomiske (8.1) "Anvend MultiSolve( ligning, x = a..b) i stedet for!!!" (8.2) (8.3) # Løser en ligning i et interval ved at vælge løse ligningen numerisk med N # (=101) forskellige gæt, jævnt fordelt over intervallet. Fx # MultiSolve(sin(2*x) = 0.1*x, x=-15..15). Fx MultiSolve( sin (1/x) = 0.5, # x=0.01..5, 2000 ) MultiSolve( lign, interval, N := 101 ) "Advarsel! MultiSolve er en numerisk ligningsløser, der måske ikke finder ikke alle løsninger. Nogle løsninger kan være tabt" Man ser at multisolve har fundet alle løsninger (ved studie af graf) (8.4)
2 y 1 0 5 10 15 x Her er en ligning som bør volde problemer: Lad os løse ligningen i intervallet [ ], hvor (8.5) (8.6)
1 0 Antallet af løsninger til ligninge må være (omtrent) x 31.83192742 "Advarsel! MultiSolve er en numerisk ligningsløser, der måske ikke finder ikke alle løsninger. Nogle løsninger kan være tabt" (8.7) (8.8) Der mangler nogle løsninger... antallet af gæt sættes op fra de 101 (standard) til 300: "Advarsel! MultiSolve er en numerisk ligningsløser, der måske ikke finder ikke alle løsninger. Nogle løsninger kan være tabt" 10 (8.9) (8.10)
15... Vi øger antallet af startgæt til 5000 (dvs. ligningen løses 5000 gange med 5000 forskellige gæt) TIDSKRÆVENDE!! (8.11) Først her findes alle løsningerne i intervallet PS. Gunden til at der skal 5000 begyndelsesgæt til at finde 31 løsnigner er 1) måden algoritmen er programmeret og 2) at mange af gættene giver de samme løsninger. "Advarsel! MultiSolve er en numerisk ligningsløser, der måske ikke finder ikke alle løsninger. Nogle løsninger kan være tabt" Lige et eksempel fra trigonometrien "Advarsel! MultiSolve er en numerisk ligningsløser, der måske ikke finder ikke alle løsninger. Nogle løsninger kan være tabt" (8.12) (8.13) (8.14) "Advarsel! MultiSolve er en numerisk ligningsløser, der måske ikke finder ikke alle løsninger. Nogle løsninger kan være tabt" (8.15)
2 y 1 0 5 10 x Vi ser at alle løsningerne er fundet... TrigSolveren (Brug MultiSolve til numeriske beregninger) (9.1) Trigometriske ligninger (A-niveau) "Anvend MultiSolve( ligning, x = a..b) i stedet for!!!" (9.2)
(9.3) Problem: Nogle "simple" ligninger vil den ikke løse, så må man slide lidt i det som her: "Anvend MultiSolve( ligning, x = a..b) i stedet for!!!" Her giver TrigSolve() ingen løsninger, så derfor må man selv tegne graferne for bestemme deres skæringspunkter, vha.. 3 (9.4) og 2 1 0 5 10 x Vi observerer de omtræntlige løsninger og bruger fsolve med gæt.
0. 1.895494267 Eksempler med Konvertering mellem enheder (9.5) (10.1) (10.2) (10.3) (10.4) (10.5) Problemer kan opstå hvis der i en af enhederne indgår et symbol, der allerede er brugt fx h for højde (10.6) Error, (in convert/units) `(1/12)*km*s/Units:-Unit(m)` is not a recognized unit