Elementaire logica

Moderators: dirkwb, Xilvo

Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
Reageer
Berichten: 411

Elementaire logica

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?

Gebruikersavatar
Berichten: 10.179

Re: Elementaire logica

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.

Berichten: 4.246

Re: Elementaire logica

~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.

Berichten: 411

Re: Elementaire logica

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?

Gebruikersavatar
Berichten: 2.097

Re: Elementaire logica

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:

Code: Selecteer alles

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:

Code: Selecteer alles

(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

Berichten: 411

Re: Elementaire logica

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

Reageer