Intermezzo
Script schrijven voor het bereken van x1 en x 2 uit een 2de graadsvergelijking
%"ax^2+bx+c=0"
a=-2;
b=5;
c=4;
D=(b)^2-4*a*c
format("shortG");
if D<0
fprintf('discriminant negatief, geen reële oplossingen\n');
else
x1=(-b+sqrt(D))/(2*a)
x2=(-b-sqrt(D))/(2*a)
fprintf('de oplossingen van de vierkansvergelijking\n');
fprintf('zijn %6.2f en %6.2f\n',x1,x2);
end
Theo_1.1
Vul het volgende script aan. De bedoeling is dat er een getal x aan de gebruiker gevraagd wordt en dat ln
(x) berekend wordt als dit kan (Als x tot het domein van de functie behoort). Als dat dat niet kan, moet een
foutmelding op het scherm komen.
a) Vraag een getal x aan de gebruiker
x = input('Voer een getal in: ') ;
b) Ga na of ln (x) berekend kan worden
if x < 0
disp('Het opgegeven getal ligt niet binnen het domein van het natuurlijk logaritme en ka
else
Opl = log(x) ;
fprintf('De oplossing van het natuurlijk logaritme van het opgegeven getal is %2.3f \n',
end
Intermezzo
We schrijven een programma dat aan de gebruiker een x-waarde vraagt en de overeenkomstige functie waarde
berekent afhv het meervoudig functievoorschrift.
gegevens:
f(x) = 1 voor x<-1
= x^2 voor -1<=x<2
=4 voor x>= 2
x=input('geef een x-waarde in:')
1
, if x<-1
y=1;
elseif x<2
y=x^2;
else
y=4
end
fprintf('de bijhoorende y-waarde is %f. \n',y)
x=input('geef een x-waarde in:')
if x<-1
y=1;
elseif x<2
y=x^2;
else
y=4
end
fprintf('de bijhoorende y-waarde is %f. \n',y)
Theo_1.2
In Sessie 2 van S1-Matlab (Opgave 9) schreven we een script dat de BMI van de gebruiker berekent. Vul het
programma hieronder aan zodat het BMI van de gebruiker niet enkel berekend wordt, maar zodat er ook een
aangepaste melding verschijnt naargelang de waarde van het BMI:
• Als BMI < 18,5 dan heeft de gebruiker ondergewicht
• Als 18,5 < BMI < 25 heeft hij een normaal gewicht
• Als 25 < BMI < 30 heeft hij matig overgewicht
• Als BMI >= 30 heeft hij ernstig overgewicht
a) Berekening BMI
Naam = input ('Geef je naam: ','s');
Lengte = input ('Geef je lengte: ');
Gewicht = input ('Geef je gewicht: ');
BMI = Gewicht/Lengte^2 ;
b) Identificatie BMI
if BMI<18,5 ;
fprintf('Met een BMI van %2.2f heeft u ondergewicht',BMI)
elseif 18,5<BMI<25 ;
fprintf('Met een BMI van %2.2f heeft u een normaal gewicht',BMI)
elseif 25<BMI<30 ;
fprintf('Met een BMI van %2.2f heeft u een matig gewicht',BMI)
elseif BMI>=30 ;
fprintf('Met een BMI van %2.2f heeft u ernstig overgewicht',BMI)
end
OF a,b
naam=input('wat is uw naam?:','s');
lengte=input('geef uw lichaamslengte op in meter:');
2
, gewicht=input('geef uw gewicht op in kg:');
bmi=(gewicht/lengte.^2);
if bmi<18.5
fprintf('%s, u hebt ondergewicht wat resulteert in een bmi van %3.2f',naam,bmi)
elseif 18.5<=bmi && bmi<25
fprintf('%s, u hebt een normaal gewicht wat resulteert in een bmi van %3.2f',naam,bmi)
elseif 25<=bmi && bmi<30
fprintf('%s, u hebt matig overgewicht wat resulteert in een bmi van %3.2f',naam,bmi)
else bmi>30
fprintf('%s, u hebt overgewichtwat resulteert in een bmi van %3.2f',naam,bmi)
end
Theo_1.3
We willen het programma hierboven aanpassen zodat:
a) Er 20 getallen gevraagd worden aan de gebruiker
v = zeros(1,20) ;
b) De boodschap in elke stap aangeeft het hoeveelste getal je inleest. Bijvoorbeeld:
Geef getal 1 in:
Geef getal 2 in:
...
for i = 1:20
% Toon eerst de boodschap
fprintf('Geef getal %d in: ',i);
% Gebruik daarna een input (zonder boodschap) om een getal op te slaan.
i = input('')
end
Theo_1.4
Bestudeer onderstaand programma en voeg aan elke regel voldoende commentaar toe zodat je laat zien dat je
begrijpt wat er gebeurt.
n = input('Geef de grootte n van de vierkante matrix op: ')
A = randi ([-5,5],n)
% Er wordt een vierkante matrix van de opgegeven grootte n gecreerd met getallen met een ber
som = 0;
% Deze variabele wordt gecreerd met de intentie om hier je resultaat uiteindelijk in op te s
for i = 1:n
% Bereik van de for lus, telkens met stapsgrootte 1 want niet gedefineerd.
% i zal de nummers gaan aan nemen die random zijn
som = som + A(n+1-i,i);
% Hier wordt de som gemaakt vd variabele 'som' die gelijk is aan 0,
% daarbij worden er waarden van de matrix genomendie de waarde i aanneemt
3
, end
fprintf('De som van de elementen op de nevendiagonaal van A is %d. \n',som)
% Som van de getallen van de nevendiagonaal (rechts van boven naar links ondere)nemen
Intermezzo
Wanneer we een teller i gebruiken als index van een vector of een matrix is het belangrijk om deze de juiste
waarden te laten doorlopen. In het volgende voorbeeld maken we een vector v = [2^0 , 2^1, ... , 2^10] te
maken, en proberen we de som s te bepalen van alle elementen van v met een even exponent.
--- Foute script --- (On purpose)
n=0:10
v=2.^n
s=0;
for i=0:2:10
s=s+v(i)
end
% VERKEERD want, Het element v(0) bestaat NIET
--- Juiste script ---
n=0:10 % Er wordt 10 keer een macht verhoffen van met index van 1, na elke stap komt e
v=2.^n
s=0; % De s is de uitkomst van de eerste, vervolgens wordt de nieuwe waarde bij de e
for i=1:2:11 % Kleine aanpassing
s=s+v(i)
end
% bv. 0+2.^0 = 1(som1) => 1+2.^2=5(som2)
Intermezzo
--- Geneste for lus ---
Matrix handmatig in te vullen, waarvoor twee parameters nodig zijn, namelijk i (rijen) en j (kolommen)
for i=1:3 % Overloopt de rijen
for j=1:4 % (Kolom) Overloopt de elementen in de i-de rij
fprintf('geef het getal op rij %d en kolom %d in',i,j)
% Dit wordt een zeer lange rij met je matrix van 3*4 getallen geven
A(i,j)=input('');
end
end
disp('De gegeven matrix is')
disp(A)
Theo_1.5
Vul het script hieronder aan zodat er eerst een natuurlijk getal n gevraagd wordt aan de gebruiker en dat dan
onderstaande (nxn)-matrix A geconstrueerd wordt
4