Ik bedoelde dus met tabel..., enne die integraal is nu niet echt moeilijk te noemen.quote:Op vrijdag 23 juni 2006 19:17 schreef GlowMouse het volgende:
[..]
Helaas is de cumulatieve verdelingsfunctie van de standaardnormale verdeling niet zo eenvoudig gedefinieerd. Zonder tabel of GR is het onmogelijk tot een oplossing te komen, tenzij het om een bekende bovengrens gaat, zoals 0 of 1,645.
En de eenvoudige rekenmachines zoals die in de onderbouw van het middelbaar onderwijs gebruikt worden, kunnen geen integralen uitrekenen, en kennen ook de normale verdeling niet.
Er bestaat geen primitieve van die integraal, dus moeilijker kan volgens mij niet. Je kunt wel benaderingsformules zoeken en gebruiken, maar een exacte oplossing is met pen, papier en een eenvoudige rekenmachine niet te verkrijgen.quote:enne die integraal is nu niet echt moeilijk te noemen.
Gewoon invullen in de hoofdvergelijking zoals je al zegt:quote:Op zondag 25 juni 2006 16:08 schreef 205_Lacoste het volgende:
Over 3 dagen een tentamen Calculus, en zit met de vraag of ik dit probleem goed oplos (zonder gebruik te maken van Lagrange multipliers)
Bepaal het maximum en minimum van f(x,y) op het gebied D
f(x,y) = 2x^3 + y^4
D={(x,y) | x^2 + y^2 <= 1}
Mijn oplossing zou zijn:
Eerst bepalen of er kritieke punten zijn. M.a.w. de partieel afgeleide bepalen voor x en y en kijken waar deze 0 zijn. Dit is in dit geval voor het punt (0,0) waarmee f(0,0) = 0.
Het is duidelijk dat dit niet het maximum van de functie oplevert op dat gebied, dus nu moeten de randpunten onderzocht worden die op de cirkel met straal één liggen. Zie D.
Aangezien het gaat om randpunten valt te zeggen: x^2 + y^2 = 1
Hieruit volgt y = +/- Sqrt(1 - x^2 )
En hierna loop ik eigenlijk vast. Je moet deze vergelijking volgens mij invullen in de hoofdvergelijking waarmee je y vervangt door Sqrt(1 - x^2)... maar dan?
Wie zou me hiermee kunnen helpen. Alvast erg bedankt.
Waarschijnlijk komt het doordat je wortelfunctie de halve cirkel beslaat van (-1,0) t/m (1,0), vandaar dat de afgeleide die punten niet pakt, ook dit zijn immers weer randpunten. Je moet dus ook bij die afgeleide van mij weer checken op randpunten en dan kom je wel tot je antwoord.quote:Op zondag 25 juni 2006 16:46 schreef 205_Lacoste het volgende:
Je oplossing klopt in ieder geval niet aangezien x= 0,5 en x= -2 0 oplevert uit je afgeleide functie.
Het maximum voor de functie f(x,y) zit echter op (1,0) en het minimum op (-1,0).
Dat is nou het hele punt, die randpunten liggen juist op die cirkel. En aangezien je niet alle punten op die cirkel kan bekijken zoals bij een gebied besloten in een rechthoek waar je alleen de hoekpunten hoeft te nemen is het ook met formule op te lossen.quote:Op zondag 25 juni 2006 16:55 schreef Enigmatic het volgende:
[..]
Waarschijnlijk komt het doordat je wortelfunctie de halve cirkel beslaat van (-1,0) t/m (1,0), vandaar dat de afgeleide die punten niet pakt, ook dit zijn immers weer randpunten. Je moet dus ook bij die afgeleide van mij weer checken op randpunten en dan kom je wel tot je antwoord.
Ook een top ligt niet op 0,5, kijk maar naar de partieel afgeleide over de Fx en de Fy. Hieruit blijkt dat er alleen een kritiek punt op 0,0 ligt.quote:Op zondag 25 juni 2006 17:10 schreef Enigmatic het volgende:
mja die afgeleide die ik neem gaat over de rand van de cirkel, de enige top ligt dus bij 0.5
dan moet je enkel nog checken voor de randpunten, en die blijken idd hoger te zijn dan alles op de rand en binnen de cirkel. Lijkt mij een net bewijs.
Ja, is op zich wel een goede. Moet ik natuurlijk wel weer even uitzoeken hoe Maple werkt, is al lang geledenquote:Op zondag 25 juni 2006 17:43 schreef Enigmatic het volgende:
Ja is ook goed mogelijk, je zou het ook nog even kunnen checken in maple, weet je in één keer hoe het in elkaar zit
Dan doel je vast op D=Fxx*Fyy - [ Fxy]^2quote:Op zondag 25 juni 2006 17:55 schreef GlowMouse het volgende:
Bij y = Sqrt(1-x^2) zijn jullie vergeten om naar de tweede afgeleide te kijken. Voor een maximum moet die negatief zijn.
Bij x = Sqrt(1-y²) zijn jullie dat ook vergeten, maar omdat het gezochte punt daar geen randpunt is, ging het daar wel goed.
Jawel, maar die afgeleide met x=0,5 en x=-2 klopt in het geheel niet bij de opgave.quote:Op zondag 25 juni 2006 18:03 schreef GlowMouse het volgende:
Nee, ik had het over deze: f'(x) = 6x^2 - 4x +4x^3 = 0. f''(x) = 12x²+6x-4
f'(x)=0 levert x=0, x=0,5 of x=-2. De tweede orde afgeleide is alleen voor x=0 negatief, de andere twee punten vallen dus sowieso af.
Met Kuhn-Tucker kom ik op (1,0) als maximum.
Als je x uitdrukt in y, loop je constant over de rand, en zegt de afgeleide wat er gebeurt als je x groter of kleiner maakt. Dat je dan de straal kunt vergroten om een grotere functiewaarde te krijgen, zit niet meer in deze afgeleide verborgen.quote:In beide gevallen gaat het om randpunten aangezien x^2+y^2=1 Dus ook als je deze functie als functie van x of y schrijft.
| 1 2 | teken f'(x) irrelevant 0 + 0 - 0 + |
Wat bedoel je daarmee? Door y=wortel(1-x²) te substitueren, levert elke x in [-1,1] een mogelijke oplossing waarvoor geldt x²+y²=1. Ook x=0,5 (namelijk y=wortel(0,75) of y=-wortel(0,75)).quote:Wat ik zeg is dat x=-0.5 bij voorbaata al nóóit een goed antwoord kan zijn voor het minimum. Het enige kritieke punt ligt op 0,0. Als je voor x=0.5 neemt dan is x^2+y^2 automatisch kleiner dan 1, en dat punt is daarmee, voor welke y ook, nooit een randpunt.
Je hebt gelijk, ik loop vandaag echt te falen. Afgelopen week ging het allemaal knetter soepel, en vandaag is het één grote ramp. Denk dat ik met m'n hoofd er niet bij ben.quote:Op zondag 25 juni 2006 19:52 schreef GlowMouse het volgende:
[..]
Wat bedoel je daarmee? Door y=wortel(1-x²) te substitueren, levert elke x in [-1,1] een mogelijke oplossing waarvoor geldt x²+y²=1. Ook x=0,5 (namelijk y=wortel(0,75) of y=-wortel(0,75)).
Ok, dit zijn wel mooie dingen om te weten, want zulke informatie haal ik niet vaak uit boeken ofzoquote:Op vrijdag 23 juni 2006 10:11 schreef Iblis het volgende:
[..]
Hij bedoelt waarschijnlijk dat de array met waardes ook static zal moeten zijn.
Wat precies het verschil is, is zeker voor beginnende programmeurs niet zo van belang. Het nadeel van Java is dat het snel veel overhead aan verplichte syntax oplevert waarvan de betekenis pas later duidelijk wordt.
Ik wil het echter wel een beetje proberen uit te leggen. Normaliter kun je een class zien als een soort blauwdruk voor een object. Classes zijn de bouwtekeningen, objecten zijn de daadwerkelijke constructies die worden geproduceerd als de bouwtekening wordt gevolgd. Dus, stel je hebt een Class Fiets, met een methode 'Schakel(int versnelling)', dan is dat alleen maar een manier waarop je Java zegt: Indien iemand een object van het type fiets wil hebben, dan moet je zorgen dat er ook een methode Schakel bij hoort, en je moet eventuele ruimte voor variabelen in die class reserveren:
[ code verwijderd ]
Zo'n object maak je meestal aan met 'new', er staat dan ergens in je code waar je zo'n fiets-object nodig hebt: Fiets f = new Fiets(); (Dan krijg je ook te maken met een zogenaamde constructor, die meehelpt het object te construeren.) Pas zodra dat gedaan is kun je f.schakel() aanroepen. Methodes kunnen in beginsel dus alléén worden aangeroepen als ze bij een object horen.
En dat is de truuk waar static methoden in het spel komen. Die bestaan eigenlijk altijd, ook al is er nog geen object aangemaakt. (Voor simpelere programma's versimpelt dat het programmeren wat, want je hoeft geen objecten in het leven te roepen.) Hét klassieke voorbeeld van een statische methode is de methode 'main' – immers er zal een methode moeten zijn waarin eventuele objecten worden aangemaakt die het gehele programma op gang brengen, als het programma start bestaan er nog geen objecten namelijk.
Echter, als zo'n static method wordt aangeroepen dan hoort deze niet bij een object, dus als deze andere methodes of variabelen van die class wil gebruiken (instantievariabelen worden ze genoemd), dan moeten die ook static zijn, want anders kun je niet garanderen dat die bestaan. Een method die bij een object hoort werkt namelijk normaal gesproken op de variabelen in dat object. Als het voorbeeld fiets hebt: met die class of blauwdruk kun je nog een fiets maken. Fiets g = new Fiets(). Als je met die fiets schakelt is het logisch dat de versnellingen van fiets 'f' niet veranderen.
Soms kun je trouwens wel met twee dezelfde namen naar hetzelfde object verwijzen. Als je zegt: Fiets h (d.w.z. h is een variabele die een fiets aanduidt) en je doet Fiets h = f, dan zijn h en f benamingen voor hetzelfde ding. Alles wat aan 'h' verandert verandert dan ook aan 'f'.
| 1 2 3 4 5 6 7 8 9 10 11 | if ( i >= waarde.length ) { if(buitA == buitB) { // geldige mogelijkheid, zorg dat je hier artikelenA en artikelenB laat zien } return true; } else { verdeelbaar_mogelijkheden( i+1, buitA+waarde[i], buitB, artikelenA[] met toegevoegd waarde[i], artikelenB[] ); verdeelbaar_mogelijkheden( i+1, buitA, buitB+waarde[i], artikelenA[], artikelenB[] met toegevoegd waarde[i]); return true; } |
Over welke combinaties heb je het nu? Een gelijke verdeling of zijn bij alle combinaties ook ongelijke verdelingen toegestaan?quote:Op maandag 26 juni 2006 12:07 schreef Haushofer het volgende:
[..]
Ok, dit zijn wel mooie dingen om te weten, want zulke informatie haal ik niet vaak uit boeken ofzo
Nu ben ik bezig geweest met de extensie, dat er moet worden afgedrukt welke dief welke artikelen krijgt,
-bij de eerste de beste combinatie
-bij alle combinaties.
Je kunt beter een array vullen met 0 (gebruiker A) en 1 (gebruiker B). Zodra je een oplossing hebt gevonden kun je dit dan makkelijk omzetten in de gewenste vorm.quote:Nou denk ik zelf dat je hiervoor een extra variabele voor moet invoeren, of 2 arrays: artikelenA en artikelenB. Deze moeten dan worden aangevuld bij de 2 functieaanroepen in de methode zelf. Je kunt dan voor verschillende vormen kiezen; ik heb gekozen voor het idee dat als de dief een artikel niet krijgt, de plaats op dat array op 0 wordt gezet. Dat kan vast netter, maar eerst even het idee![]()
Dan natuurlijk het tellen: Bij de eerste if moet nog een andere conditie staan, namelijk dat er 2^(waarde.length) keer moet worden gecheckt. Hier kan dan eventueel, zoals Wolfje ook al opmerkte, een stopconditie in als de verdeling kansloos wordt. Dat tellen kan dan denk ik met een for lus om de methode heen. En dan nog een printstatement om die arrays af te drukken. Ben ik hiermee een beetje in de goede richting?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | int[] verdeling = new int[waarde.length]; return verdeelbaar(0,0,0,verdeling); } public boolean verdeelbaar( int i, int buitA, int buitB,int[] verdeling ) { if ( i == waarde.length ) { if ( buitA == buitB ) { // doe hier iets met verdeling (printen, opslaan in lijst) return true; } else { return false; } } verdeling[ i ] = 0; if ( verdeelbaar( i+1, buitA+waarde[i],buitB,verdeling ) { return true; } verdeling[ i ] = 1; if ( verdeelbaar(i+1, buitA, buitB+waarde[i],verdeling ) { return true; } return false; } |
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |