60 likes | 225 Views
Problems and solutions Session 3. Problems. Write function Xn = mspolygon(X,x0,a) that scales the INPUT polygon by a (a>0) and moves its center to point x0, and draws both polygons in one image.
E N D
Problems • Write function Xn = mspolygon(X,x0,a) that scales the INPUT polygon by a (a>0) and moves its center to point x0, and draws both polygons in one image. • The polygon is given by matrix X whose columns are the nodes (corner points) of the polygon. The output Xn is the nodes of new polygon. • Define the centerpoint to be the average of the nodes. • Test your function with P of Exercise 1/Session 2. Introduction to MATLAB - Solutions 3
Problems • Write a function Xt = roundt(X,t) that rounds real numbers to grid tZ = (…,-2t,-t,0,t,2t,…) and complex numbers to grid tC = tZ+itZ. • The input X can be a matrix and t>0. • Test your function (real case) with X = -5:.01:5 and t=sqrt(2)/2. Draw a picture. • Test your function (complex case) with X = randn(1,5)+2*i*randn(1,5) and t=0.5. Draw a picture. • Write both test cases in one m-file. Introduction to MATLAB - Solutions 3
Problems • Continue the Triangle Exercise 7/Session 2. a) Write a function xn = Qpoints(n) where the input argument n is a vector n(j) = number of random points in [0,1]x[0,1] (e.g. n = 1000:1000:10000) and xn is a cell array with xn{j} = n(j) random points. b) Call Qpoints many times to find an approximative error when computing the area of T with different n’s. Represent the results graphically. Introduction to MATLAB - Solutions 3
function Xn = mspolygon(X,x0,a); Xsc = a*X; Xn = [Xsc(1,:)+x0(1);Xsc(2,:)+x0(2)]; CALL Xn = mspolygon(P,[2;1],0.75); plot(P(1,:),P(2,:),’b’,Xn(1,:),Xn(2,:),’r’) function Xt = roundt(X,t); Xt = t*round(X/t); CALL X = -5:.01:5; Xt = roundt(X,sqrt(2)/2); plot(X,Xt,’.’) Z = round(1,5)+2*i*round(1,5); Zt = roundt(Z,0.5); plot(Z(1,:),Z(2,:),’o’,Zt(1,:),Zt(2,:),’rx’) Some solutions Introduction to MATLAB - Solutions 3
function xn = Qpoints(n); nn=length(n); xn = cell(n,1); for j = 1:nn xn{j} = rand(2,n(nn)); end --- A routine to compute the area of T: --- function aT = areaT(xn) % area of T computed with xn (cell) nn = length(xn); aT = zeros(nn,1); for j = 1:nn x = xn{j}; aT(j) = sum(x(2,:)<(1-x(1,:)))/size(x,2); end Some solutions Main m-file: % number of points –vector: n = [1, 10, 100,1000,10000,100000]; nn = length(n); % number of rounds: N = 1000; aTall = zeros(n,N); for k = 1:N % compute the areas N times xn = Qpoints(n); aTall(:,k) = areaT(xn); end deviations = std(aTall’) % histograms, nn even for k = 1:nn subplot(2,nn/2,k) hist(aTall(k,:)) end Introduction to MATLAB - Solutions 3