abonnement Unibet Coolblue Bitvavo
pi_39171443
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.
Ik bedoelde dus met tabel..., enne die integraal is nu niet echt moeilijk te noemen.
  zaterdag 24 juni 2006 @ 12:29:27 #102
75592 GlowMouse
l'état, c'est moi
pi_39174204
quote:
enne die integraal is nu niet echt moeilijk te noemen.
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.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_39209344
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.
  zondag 25 juni 2006 @ 16:40:31 #104
118774 Enigmatic
Question everything?
pi_39210468
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.
Gewoon invullen in de hoofdvergelijking zoals je al zegt:

2x^3 + (sqrt(1-x^2))^4 = 2x^3 + 1 - 2x^2 + x^4

Daarvan neem je de afgeleide en die stel je gelijk aan nul:

6x^2 - 4x +4x^3 = x(6x-4+4x^2) = 0

Uitwerken met abc formule en als het goed is volgen daar dan de kritieke punten op de rand uit.
Checken voor de onderkant van de cirkel (met die -sqrt()) is niet nodig aangezien de min toch wegvalt.

Succes ermee
pi_39210679
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).
pi_39210804
Dat de min en max zitten op bovengenoemde punten zie ik namelijk ook wel als ik naar de functie kijk, maar het gaat om het wiskundige bewijs.

(Per ongeluk mezelf gequote, dus een soort van aangepaste dubbelpost)
  zondag 25 juni 2006 @ 16:55:40 #107
118774 Enigmatic
Question everything?
pi_39211001
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).
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.
pi_39211379
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.
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.

Ik heb nu x = Sqrt(1-y^2) genomen

Invullen in f(x,y)= 2 (1-y^2) + y^4 = ^y4 - 4y^2 + 1

Afgeleide op 0 stellen -> f'(y) = 4y^3 - 8y = 0

Levert op y = 0

Hiermee mag x 1 of -1 zijn (Te herleiden uit x^2 = 1-y^2)

Kan iemand deze oplossing bevestigen?

@ Enigmatic

Sowieso bedankt voor de moeite die je neemt om het probleem op te lossen! Ik denk alleen dat er ergens bij jouw afgeleide wat misgaat waardoor die rare x=0,5 en nog een andere eruit komen rollen. Dit zijn namelijk absoluut géén kritieke punten van deze functie.
  zondag 25 juni 2006 @ 17:10:59 #109
118774 Enigmatic
Question everything?
pi_39211602
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.
pi_39211761
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.
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. Dit geldt voor zowel binnen als buiten de cirkel. Alleen het afbakenen t/m de rand van de cirkel zorgt ervoor dat er een absoluut maximum en minimum ontstaan waar de partieel afgeleiden Fx en Fy helemaal geen 0 hoeven te zijn.

Ik denk gewoon dat je met het maken van die afgeleide een fout hebt gemaakt bij het tussen haakjes halen, of dat je bijvoorbeeld bent vergeten door te differentiëren
  zondag 25 juni 2006 @ 17:43:35 #111
118774 Enigmatic
Question everything?
pi_39212697
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
  zondag 25 juni 2006 @ 17:55:16 #112
75592 GlowMouse
l'état, c'est moi
pi_39213127
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.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_39213170
quote:
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
Ja, is op zich wel een goede. Moet ik natuurlijk wel weer even uitzoeken hoe Maple werkt, is al lang geleden Eens kijken of ik 4 jaar na dato m'n laatste P vak eens kan binnenkoppen
pi_39213307
quote:
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.
Dan doel je vast op D=Fxx*Fyy - [ Fxy]^2

D>0 en Fxx >0 dan een minimum
D>0 en Fxx <0 dan een minimum
D=0 dan een zadelpunt

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.

Dit doet echter niet terzake in dit geval. Dit zou alleen voor het kritieke punt 0,0 bekeken kunnen worden. Maar de vraag is niet of we te maken hebben met een locaal min of max, maar een globaal min of max.
  zondag 25 juni 2006 @ 18:03:54 #115
75592 GlowMouse
l'état, c'est moi
pi_39213468
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.

[ Bericht 11% gewijzigd door GlowMouse op 25-06-2006 18:21:24 ]
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_39214304
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.
Jawel, maar die afgeleide met x=0,5 en x=-2 klopt in het geheel niet bij de opgave.

En (1,0) is inderdaad het maximum, en (-1,0) het minimum. Maar daar was ik met mijn oplossing inmiddels achter
  zondag 25 juni 2006 @ 19:12:20 #117
75592 GlowMouse
l'état, c'est moi
pi_39216087
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.
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.

Punt is dat je eerst x uitdrukt in y, en daarna maar andersom omdat de eerste niet zou werken. Dat is onzin. Substitueer y=wortel(1-x²). Merk op dat dit overeenkomt met met substitutie van y=-wortel(1-x²).
f(x) = x^4 + 2x³ - 2x² + 1
f'(x) = 4x³+6x²-4x
f''(x) = 12x²+12x
Het toegelaten gebied is -1<=x<=1.

We maken een tekenoverzicht van f'
1
2
getallenlijn ------------- -2 ------ 0 ------ 1/2 ------
teken f'(x)   irrelevant    0   +    0    -   0     +

Je ziet dat alleen x=0 en x=1 potentiele maxima opleveren. Het minimum ligt bij x=-1 of x=1/2. Randen van cirkels hebben hier verder niks mee te maken.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_39216847
Dat hij voor zowel x =.... als y=... moet werken ben ik helemaal met je eens. Dat is ook logisch. Dat je over de rand loopt als je x in y uitdrukt klopt inderdaad ook.

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. Aangezien daarvoor al vastgesteld was dat er binnen de grenzen maar één kritiek punt was, (0,0) zal het punt altijd op (+/-1,+/-0) of (+/-0,+/-1) liggen. Jouw methode laat verder wel duidelijk zien waarom.
  zondag 25 juni 2006 @ 19:52:56 #119
75592 GlowMouse
l'état, c'est moi
pi_39217685
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.
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)).

[ Bericht 8% gewijzigd door GlowMouse op 25-06-2006 20:51:18 (quote weggehaald, verkeerd geïnterpreteerd) ]
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_39220665
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)).
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.
pi_39244125
quote:
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'.
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.

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?


static boolean verdeelbaar(){
return verdeelbaar(0,0,0);
}

static boolean verdeelbaar(int i, int buitA, int buitB) {

for(int j = 1; j <= 2^(waarde.length); j++) {

if ( i >= waarde.length ) {

return buitA==buitB;

} else {
if(verdeelbaar( i+1, buitA+waarde[i], buitB)
return true;
artikelenA[i]=i;
artikelenB[i]=0;

} else {
return verdeelbaar ( i+1, buitA, buitB+waarde[i]);
artikelenA[i]=0;
artikelenB[i]=i;
}

}

}
  maandag 26 juni 2006 @ 12:27:06 #122
75592 GlowMouse
l'état, c'est moi
pi_39244835
De for-loop volgt niets extra's toe. Je wilt uiteindelijk wel 2^waarde.length dingen checken, maar dat moet komen door recursie, niet door loopen. Met jouw loop doe je bovendien heel vaak hetzelfde, en levert het geen nieuwe antwoorden op.
Hieronder heb ik een nieuwe functie geschreven. Het is eenvoudig in te zien dat hier alle mogelijkheden nagelopen worden. Of iets verdeelbaar is of niet wordt pas op het laatste moment gecheckt, maar is verder niet van belang omdat er geen keuzes op gebaseerd worden, vandaar overal return true;

1
2
3
4
5
6
7
8
9
10
11
static boolean verdeelbaar_mogelijkheden(int i, int buitA, int buitB, array artikelenA[], array artikelenB[]) {
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;
}
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_39260276
Euj....ja, idd, die for-loop heeft zo geen zin. Wat je nu doet is dezelfde soort methode gebruiken, alleen geef je nu als extra parameters artikelenA[] en artikelenB[] mee. En je voegt in regel 8 en 9 het bepaalde artikel aan artikelenA[] of aan artikelenB[] ? Hoe kun je dat concreet doen? Waarom probeer je zoiets in de functieaanroep te doen, en niet in de if'jes waar die methode aanroep in staan?
  maandag 26 juni 2006 @ 20:28:30 #124
75592 GlowMouse
l'état, c'est moi
pi_39262590
De ifjes zijn niet meer van belang, omdat het voor de flow van je programma niet meer uitmaakt of een bepaalde verdeling juist is.
Hoe je dit concreet doet weet ik niet, zo goed ken ik Java niet. De reden dat ik het in de functieaanroep doe, is om duidelijk te maken dat artikelenA[] zelf niet aangepast mag worden (ivm de tweede functieaanroep). Om dit concreet te maken gebiedt de overzichtelijkheid eerst een nieuwe array met daarin de extra waarde te maken, en die als parameter mee te geven.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_39263836
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.
Over welke combinaties heb je het nu? Een gelijke verdeling of zijn bij alle combinaties ook ongelijke verdelingen toegestaan?
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?
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.
Dat if lusje in je recursieve methode is ook niet echt nodig zoals al uitgelegd. Bovendien is 2^waarde.length niet wat jij denkt dat het is . In java staat ^ voor de (bitsgewijze) XOR functie. Daar kun je ook heel leuke dingen mee doen, maar niet machtsverheffen.

Ik zou het als volgt doen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public boolean verdeelbaar() {
    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;
}
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')