Springen naar inhoud

Elementaire logica


  • Log in om te kunnen reageren

#1

Uomo Universale

    Uomo Universale


  • >250 berichten
  • 411 berichten
  • Ervaren gebruiker

Geplaatst op 17 februari 2012 - 16:41

Ik ben net begonnen in een handleiding over Matlab en voerde het volgende in:
--------------------------------------------------
>> x=0; y=6;
>> z=~x

z =

1

>> z=(x|y)

z =

1

>> z=(x&y)

z =

0

>> z=xor(x,y)

z =

1

>> z=1&2+3
z =

1
-----------------------------------------
Ik begrijp niet hoe men hier telkens aan een '1' of '0' komt. Om maar het eerste voorbeeld te nemen. Ik zie dit als 'z is niet gelijk aan x'. Aangezien Matlab hier een '1' als antwoord geeft betekent dit dat dit waar is. Maar nergens heb ik z een waarde gegeven, hoe kan dit dan?

Ik vrees dat ik hier iets heel elementairs niet ken in verband met logica. Iemand die me hierbij kan helpen?

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Drieske

    Drieske


  • >5k berichten
  • 10217 berichten
  • Moderator

Geplaatst op 17 februari 2012 - 16:46

Je moet eens, zonder ergens een waarde aan z toe te kennen, simpelweg 'z' typen in Matlab. Dan komt daaruit:
z =

0
Of ik snap je vraag foutief ;).
Zoek je graag naar het meest interessante wetenschapsnieuws? Wij zoeken nog een vrijwilliger voor ons nieuwspostteam.

#3

dirkwb

    dirkwb


  • >1k berichten
  • 4172 berichten
  • Moderator

Geplaatst op 17 februari 2012 - 18:02

~x betekent niet x en dat is niet nul wat weer gelijk is aan 1 deze ken je toe aan z.
Quitters never win and winners never quit.

#4

Uomo Universale

    Uomo Universale


  • >250 berichten
  • 411 berichten
  • Ervaren gebruiker

Geplaatst op 17 februari 2012 - 19:12

Oké, voor het eerst geval kan ik nog begrijpen dat z=1 doordat z niet mag gelijk zijn aan 0.
Maar laten we dan eens het tweede geval bekijken:
>> z=(x|y)

z =

1

Wat ik hier zie staan is 'z is gelijk aan 0 of 6'. Dit geeft als 'uitkomst' z=1 wat ik interpreteer als 'true'. Maar hoe kan deze gelijkheid 'true' zijn als je vooraf geen waarde hebt toegekend aan z?

#5

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 18 februari 2012 - 13:06

Je interpreteert daar de betekenis van die uitdrukking verkeerd. Het gelijkheidsteken is een toekenning van de expressie die erachter staat. Geen logische test.
Met andere woorden: Je stelt z gelijk aan (x|y).
Invullen van x en y levert: (0|6). Matlab interpreteert getallen verschillend van 0 in een dergelijke logische vergelijking als '1' of true, dus staat er (0|1), wat gelijk is aan 1. En deze waarde ken je toe aan z.

De betekenis die jij toekent aan het gelijkheidsteken, die van 'is dit gelijk aan?' kan je uitdrukken in Matlab (en verschillende andere programmeertalen) als '=='

Bijvoorbeeld:
x=0;y=1;z=5;
z==(x|y)
Dit geeft als resultaat: ans = 0

Hetgeen hier staat is dus: is z gelijk aan de expressie (0|1)? Of verder uitgewerkt: is z gelijk aan 1? Of z ingevuld: is 5 gelijk aan 1? Het antwoord is nee, dus uitkomst 0.

Wil je jouw eigen interpretatie vertalen (is z gelijk aan x of y?) naar matlab, dan moet je het volgende ingeven:
(z==x)|(z==y)
begrijp je nu de opbouw van deze formule?
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#6

Uomo Universale

    Uomo Universale


  • >250 berichten
  • 411 berichten
  • Ervaren gebruiker

Geplaatst op 19 februari 2012 - 21:45

Dat was de uitleg die ik nodig had, bedankt ZVdP!





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures