login  Naam:   Wachtwoord: 
Registreer je!
 Forum

TI84 solver normale verdelingen

Offline Soebam - 17/01/2007 22:37 (laatste wijziging 17/01/2007 23:00)
Avatar van SoebamHTML ver gevorderde Hoi,

Ik zit met een probleempje met een programma wat ik aan het schrijven ben voor mijn rekenmachine (TI84+ van Texas Instruments). In het komende wiskunde proefwerk komt veel statistiek en daarbij veel normale verdelingen, en nu wil ik dus een programma schrijven zodat ik niet zoveel hoef in te tikken voor de normale verdelingen. Ik heb nu dit:

  1. <? //kleur
  2.  
  3.  
  4. Lbl S
  5. Menu("Onbekende",linker grens",1,"rechter grens",2,"oppervlak",3,"mu",4,"sigma",5,"afsluiten",6)
  6.  
  7. // Deel 1, om de linker grens uit te rekenen
  8.  
  9. Lbl 1
  10. ClrHome
  11. Input "R=",R
  12. Input "A=",A
  13. Input "mu=",M
  14. Input "sigma=",S
  15. solve((normalcdf(L,R,M,S)-A),L,0,{-10^99,10^99})
  16. Disp "X=",L
  17. Pause
  18. Goto S
  19.  
  20. // Deel 3, om het oppervlak te berekenen
  21.  
  22. Lbl 3
  23. ClrHome
  24. Input "L=",R
  25. Input "R=",R
  26. Input "mu=",M
  27. Input "sigma=",S
  28. normalcdf(L,R,M,S)->A
  29. Disp "A=",A
  30. Pause
  31. Goto S
  32.  
  33. // Lbl 6, einde van het programma :)
  34.  
  35. Lbl 6


Het begin is enkel een menuutje om te kiezen welke optie van het programma je wil gaan gebruiken. Optie 3 heb ik al geschreven en die werkt ook prima (Dat is dus bij Lbl 3). Echter bij optie 1 begint het probleem. Ik weet niet precies hoe je de solver gebruikt in het programmeertaalte van de TI. Je hebt voor normale verdelingen de functie normalcdf(), maar die berekend het oppervlak voor de gegeven linkergrens, rechtergrens, mu (midden) en sigma (standaarddeviatie).

De solver onder het menuutje MATH optie 0, kan een vergelijking op 0 met meerdere variabelen oplossen. Om met een gegeven oppervlak dus de linkergrens uit te rekenen, zet ik de linkergrens (L) als variabele in de solver en trek ik het oppervlak (A) van het totaal af. Omdat normalcdf het oppervlak uitrekent, krijg je oppervlak minus oppervlak en moet het totaal dan dus 0 zijn.

In de solver zelf werkt dit uitstekend, maar in mijn programma niet. Het probleem zit hem dus waarschijnlijk in deze regel code:

  1. <? //kleur
  2.  
  3. solve((normalcdf(L,R,M,S)-A),L,0,{-10^99,10^99})


Zo lang verhaal, fijn dat je het tot hier hebt gelezen 
Wie kan mij helpen? Hoe gebruik je de solve() functie correct in dit verband?

edit: overtikfoutjes in de code..

8 antwoorden

Gesponsorde links
Offline Blue - 17/01/2007 23:33 (laatste wijziging 17/01/2007 23:33)
Avatar van Blue Nieuw lid Kijk ook eens achterin dat witte boekje 

solve( uitdrukking , variabele , schatting , {ondergrens} , {bovengrens} )

tussen accoladen betekent optioneel
dus:
solve(normalcdf(L,R,M,S)-A,L,0)
Offline Soebam - 17/01/2007 23:46 (laatste wijziging 17/01/2007 23:50)
Avatar van Soebam HTML ver gevorderde Uiteraard keek ik eerst in het boekje voordat ik mijn vraag hier post. In het boekje staat:

solve(uitdrukking,variabele,schatting, {ondergrens, bovengrens})

Zonder de onder/bovengrens tussen de accoladen krijg je een syntaxis error en dat lijkt me ook logisch want het zijn de grenswaarden waartussen de uitkomst ligt. In de gewone solver (niet als functie voor programma) moet je die ook aangeven..

Dit is het dus niet.. Enig idee nog?

Edit: de syntax error kwam door een haakjes foutje van mezelf. Nu rekent de solver wel wat, maar geeft niet de juiste waarde aan de variabele L. L geeft altijd hetzelfde getal, wat ik vantevoren kan invullen (123 -> L). De variable L krijgt dus geen waarde toegekend door de solver. Ook met de standaard variabele X werkt dit niet. Wie helpt me verder? 
Offline Blue - 17/01/2007 23:53 (laatste wijziging 17/01/2007 23:56)
Avatar van Blue Nieuw lid waarschijnlijk is je schatting niet goed genoeg, de syntax klopt iig
bij sommige functies moet je hierin heel precies zijn door de manier waarop word gesolved (nl. methode van newton).

ik heb ff wat zitten klooien:
solve( normalcdf(L,1,1,1)-.1 , L , 1)

geeft: .746...

EDIT: ff je edit gelezen, je moet hem ook in L opslaan:
solve((normalcdf(L,R,M,S)-A),L,0,{-10^99,10^99}) -> L
Offline Soebam - 17/01/2007 23:56 (laatste wijziging 17/01/2007 23:59)
Avatar van Soebam HTML ver gevorderde De schatting wordt gebruikt als startwaarde voor de berekening. Omdat alle entries variable zijn neem ik hiervoor 0, zodat hij alle waarden uitrekent. De 'schatting' is er toch enkel voor het rekenwerk wat sneller te laten gaan, voor wanneer je zeker weet dat je uitkomst boven de 50 ligt ofzo?

Edit: Yes! Het werkt nu^^, heeeel veel dank!!!
Offline Blue - 17/01/2007 23:58
Avatar van Blue Nieuw lid Zoals je het nu hebt berekent hij de waarde alleen, je moet hem ook nog in L opslaan:

solve((normalcdf(L,R,M,S)-A),L,0,{-10^99,10^99}) -> L
Offline Soebam - 18/01/2007 00:00
Avatar van Soebam HTML ver gevorderde Steeds dat editen omdat je niet op jezelf mag reageren.. Het werkt nu! Dankuzeer 
Offline Thomas - 18/01/2007 11:48
Avatar van Thomas Moderator Is het toegestaan om rekenmachines met programmeerbare interfaces te gebruiken? Dit lijkt me dan wel heel erg makkelijk worden.
Offline Soebam - 18/01/2007 13:14
Avatar van Soebam HTML ver gevorderde Ja dat is toegestaan. :)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.176s