MATLAB INTRO II

================

False (=0) / True (=1):

>> 2<3

>> 2>3

>> -3<2

>> 1+1 = = 2

>> 2 = = 3

>> 2 ~= 3

==================

Conditional statements:

>> i=1;

>> if i = = 1 disp('i is one'); end

>> i=2

>> if i = = 1 disp('i is one'); end

>> if i = = 1 disp('i is one'); else disp('i is not one'); end

>> help if

======================

Script files:

>> edit (type disp('hi') and save file as hello.m)

>> hello

Replace disp('hi') by code that sorts a list/vector v=[a b],

that is, gives v=[a b] if a < b and v=[b a] if b < a, for example

if v(1) < v(2)
v=v;
elseif v(2) < v(1)
v=[v(2) v(1)];
end
v

or more elegant

if v(2) < v(1)
v=[v(2) v(1)];
end
v

and save as MyFirstSort.m. Test the script file with

>> v=[2 1]

>> MyFirstSort

>> MyFirstSort

What happens in the two code versions if v(1)=v(2)?

===================

Loops, for and while:

Write code that makes the computer count to a given number N, for example.

i=0;
while i < N
i=i+1;
disp(i)
end

Save as CountToN.m. Test with

>> N=10;

>> CountToN


Alternative code construction

for i=1:N
disp(i)
end

Save as CountToN2.m and test with

>> CountToN2

Exercises:

1. a) Get the computer to count only the odd numbers up to N. Hint: elegant to use the for loop with i=1:2:N.
b) Get the computer to count backwards from N down to 1, first with a "for loop" (hint: elegant to just replace i=1:N by i=N:-1:1), then with a "while loop".

2. Write code that for a given number N tests Leibschnizels conjecture by computing 1+2+..+N and N^2/2, and display their difference and ratio. What is the ratio for N=1000? Explain why two numbers with a considerable difference can have a ratio very close to one!

3. Given natural numbers m and n, have matlab find p and r with 0<=r < n such that m=pn+r. Try the following code

p=0;
r=m;
while r>=n
p=p+1;
r=m-p*n;
end
disp(['m=' num2str(p) 'n+' num2str(r)])

4. Check if a turtle starting at 0 ever reaches 1. Consider and test the following code and explain the outcome!

pos=0;
while pos<1
step=(1-pos)/2;
pos=pos+step;
disp(pos)
end

5. How would the following code work?

while 1<2
disp('this will go on forever')
end

Try it! If you run into problem you can always press Ctrl-C

6. Try and then seek to understand the following code?

while 1
disp('What is 3+4?')
answer=input('');
if answer == 7
disp('Correct')
return
else
disp('Wrong, but you get another chance.')
end
end

>> help input

============================

Computer arithmetic:

>> eps (a very small positive number in the computer. The smallest?)

>> eps/2

>> eps/100000000000000

>> help eps

>> 1+eps = = 1

>> 1+eps/2 = = 1

>> a=10

>> a=a^2 (repeat, first until matlab changes to number representation
of the form d.dddde+ddd, and make sure you can interprete this,
then until matlab gets exhausted ..)

>> Inf=Inf+1

>> Inf*2

>> Inf/2

>> 1/eps

>> 1/0

>> -1/0 (seems as if 0 is somewhat positive after all, strange..)

>> 0/0 (Not a Number, without any reasonable interpretation..)

>> Inf-Inf

>> Inf/Inf

>> 0*Inf

Exercises:

1. Seek the largest number less than Inf, according to matlab.

========================

Composite conditions:

>> 0<=1

>> 1<=1

>> 1<2 | 1>2

>> 1<2 & 1>2

>> ~(1<2)