ΜΑΣ 9. Μαθηματικά με Υπολογιστές Ενδιάμεση εργαστηριακή εξέταση 9 Απριλίου 29 ΟΝΟΜΑ: ΑΠΤ:. Πρόβλημα Υπολογίστε κάθε παράσταση με μόνο μια εντολή της MATLAB: (α) n + k 2 k = + k (β) + + + + 4 7 3n + (γ) a + a33 + + a 2n +,2n + Λύση (α) 6 μ. (β) >> n=3; >> sum ( (+(:n-))./(+(:n-).^2) ).6 >> n=; >> sum(./(3*(:n)+) ).8383 (γ) >> trace( A(:2:end,:2:end) )
Πρόβλημα 2 Έστω το γραμμικό σύστημα Ax=b όπου A=magic(8) και b = [62 78 78 62 62 78 78 62] T (α) Βρείτε τον ανηγμένο κλιμακωτό του επαυξημένου πίνακα [Α b]. μ. (β) Βρείτε τη γενική λύση του συστήματος. 3 μ. Λύση (α) >> rref([magic(8) [62 78 78 62 62 78 78 62]']) 8 3 4-3 -4 7 44-3 -4 4 5-7 -26 (β) Έχουμε άπειρο πλήθος λύσεων με 5 ελεύθερες μεταβλητές, τις x 4 έως x 8. Η γενική λύση του συστήματος έχει ως εξής: x = 8 λ λ2 λ5 x2 = 44 3λ 4λ2 + 3λ3+ 4λ4 7λ5 x3 = 26 + 3λ+ 4λ2 4λ3 5λ4 + 7λ5 x4 = λ x5 = λ2 x6 = λ3 x7 = λ4 x = λ 8 5 2
Πρόβλημα 3 Θεωρούμε τη συνάρτηση z = x y x y 2 3 (2 )(2 ) (α) Με ποιες εντολές παίρνουμε το πιο κάτω γράφημα της z; 2 μ. 5 z -5.5 y -.5 - - (β) Με ποιες εντολές παίρνουμε το πιο κάτω γράφημα της z; 2 μ. -.5 x.5 (γ) Με ποιες εντολές παίρνουμε το πιο κάτω γράφημα; 6 μ. 3
Λύση (α) >> [x,y]=meshgrid(-:.:, -:.:); >> z=(2*x.^2-y).*(2*x-y.^3); >> meshc(x,y,z) >> xlabel('x') >> ylabel('y') >> zlabel('z') >> set(gcf,'color','w') (β) >> contourf(x,y,z), colorbar >> set(gcf,'color','w') (γ) >> [cs,h]=contour(x,y,z, [-5::- -:.25: ::8]); >> clabel(cs,h,- 5::8,'Fontsize',,'Fontweight','b','rotation',,'Labelspacing',288) ; >> set(gcf,'color','w') 4
Πρόβλημα 4 Διαβάστε τα αρχεία b.txt έως b4.txt που βρίσκονται στην ιστοσελίδα του μαθήματος. Αυτά περιέχουν σε 4 στήλες τα διανύσματα x, y, y 2 και y 3. Στη συνέχεια σχεδιάστε στο ίδιο γράφημα τις 4 γραφικές παραστάσεις του y 3 συναρτήσει του x. 5 μ. Λύση Με τις εντολές >> fid=fopen('b.txt'); X=fscanf(fid,'%g %g %g %g',[4 inf])'; >> fclose(fid); x=x(:,); y3=x(:,4); >> fid=fopen('b2.txt'); X=fscanf(fid,'%g %g %g %g',[4 inf])'; >> fclose(fid); x2=x(:,); y32=x(:,4); >> fid=fopen('b3.txt'); X=fscanf(fid,'%g %g %g %g',[4 inf])'; >> fclose(fid); x3=x(:,); y33=x(:,4); >> fid=fopen('b4.txt'); X=fscanf(fid,'%g %g %g %g',[4 inf])'; >> fclose(fid); x4=x(:,); y34=x(:,4); >> plot(x,y3,x2,y32,x3,y33,x4,y34) >> set(gcf,'color','w') παίρνουμε το πιο κάτω γράφημα 5
Πρόβλημα 5 (α) Έστω ότι A n =magic(n). Υπολογίστε τους βαθμούς rank(α n ) των μαγικών πινάκων της MATLAB για n=:5 και σχεδιάστε τις τιμές τους (με κόκκινους κύκλους) συναρτήσει του n. Πόσες περιπτώσεις ξεχωρίζετε; 5 μ. (β) Κατασκευάστε το γράφημα των δεικτών κατάστασης των μαγικών πινάκων A n συναρτήσει του n=:2:2 (με κόκκινους κύκλους). 3 μ. (γ) Προσαρμόστε τις πιο πάνω τιμές με πολυώνυμα ου, 2 ου και 3 ου βαθμού. Στη συνέχεια κατασκευάστε ένα πολλαπλό 3 γραφικό με τα γραφήματα των τριών πολυωνύμων παρεμβολής μαζί με τα δεδομένα του ερωτήματος (β). 6 μ (δ) Συγκρίνετε τις προβλέψεις των πιο πάνω πολυωνύμων για το δείκτη κατάστασης του μαγικού πίνακα A 3 με την ακριβή τιμή και σχολιάστε τα αποτελέσματά σας. 4 μ. (ε) Βρείτε την -, την 2-, την - και τη νόρμα Frobenius του πίνακα Α 5. 2 μ. Λύση (α) >> n=:5; >> ranka=n; >> for i=:5 ranka(i)=rank(magic(i)); end >> plot(n,ranka,'o') 5 45 4 35 3 25 2 5 5 5 5 2 25 3 35 4 45 5 Ξεχωρίζουμε 3 περιπτώσεις: rank(a)=n για n=2k+ rank(a)=2k+3 για n=4k+2 rank(a)=3 για n=4k (β) >> n=:2:2; >> condan=n; >> for i=:length(n) condan(i)=cond(magic(n(i))); end >> plot(n,condan,'o') >> xlabel('n'); ylabel('cond(a_n)'); >> title('condition numbers of magic matrices') 6
25 Condition numbers of magic matrices 2 5 cond(a n ) 5 5 5 2 25 n (γ) >> p=polyfit(n,condan,) p =.9752694874.5368454242 >> p2=polyfit(n,condan,2) p2 =.399555835.9449334728973.644425394759738 >> p3=polyfit(n,condan,3) p3 =.4786475753 -.443272447698.8623734.3822254399846 >> x=:.:25; >> P=polyval(p,x); >> P2=polyval(p2,x); >> P3=polyval(p3,x); Με τις εντολές >> subplot(3,,); plot(n, condan,'ro',x,p); xlabel('n'); ylabel('p_') >> subplot(3,,2); plot(n, condan,'ro',x,p2); xlabel('n'); ylabel('p_2') >> subplot(3,,3); plot(n, condan,'ro',x,p3); xlabel('n'); ylabel('p_3') παίρνουμε το ακόλουθο γράφημα: 7
4 p 2 5 5 2 25 n 4 p 2 2 p 3 5 5 2 25 n 4 2 5 5 2 25 n (δ) >> cond(magic(3)) 3.26647787577438 >> polyval(p,3) 3.636254396792445 >> polyval(p2,3) 3.373439592874 >> polyval(p3,3) 34.2848885926855 (ε) >> A5=magic(5); >> norm(a5,) 65 >> norm(a5,2) 64.99999999999999 >> norm(a5,'fro') 74.3334373659253 8
Πρόβλημα 6 Θεωρούμε την εξίσωση f ( x) = J ( x) ax όπου a=.5 (ΑΠΤ)/ 6. (α) Σχεδιάστε το γράφημα της f(x) στο [,3]. 2 μ. (β) Βρείτε τη ρίζα της f με τη βοήθεια της fzero. 2 μ. (γ) Βρείτε τη ρίζα της f με τη μέθοδο Newton. 4 μ. ΥΠΟΔΕΙΞΗ: Χρησιμοποιείστε το m-file Newton.m από το Κεφάλαιο 8. Δίνεται επίσης ότι J ( x) = J ( x) (δ) Τροποποιείστε το Newton.m έτσι ώστε να σημειώνει την προσεγγιστική ρίζα με κόκκινο κύκλο και να σχεδιάζει τη σύγκλιση της μεθόδου. Το νέο m-file έχει όνομα Newton2.m και έχει ακριβώς τις ίδιες μεταβλητές εισόδου όπως και το Newton.m. Αυτό για την εξίσωση f ( x) = x και για x =2 μας δίνει το ακόλουθο γράφημα: 2 - -2-3 -4-5 -6-7 -8.5.5 2 2.5 3 Λύση (α) Με τις εντολές >> a=.5*58/^6 a =.295 >> ff=@(x) besselj(,x)-a*x ff = @(x)besselj(,x)-a*x >> ezplot(ff,[ 5]) παίρνουμε το γράφημα: 2 μ. 9
besselj(,x)-a x.5 -.5 - -.5.5.5 2 2.5 3 3.5 4 4.5 5 x (β) Παρατηρούμε ότι η συνάρτηση έχει μια ρίζα κοντά στο.5: >> fzero(ff,.5).5897325478539 (γ) >> ff ff = @(x)besselj(,x)-a*x >> df=@(x) -besselj(,x)-a df = @(x)-besselj(,x)-a >> Newton(ff,df,.5,e-6,) --------------------------------------------- k x_k f(x_k) ---------------------------------------------.5.7677672.58966879 -.5366 2.5897347 -.8 3.5897325 -. --------------------------------------------- Newton method has converged.5897325478539 >> (δ) Το ζητούμενο πρόγραμμα έχει ως εξής: function root=newton2(fname,fdname,x,delta,nmax) % % Epilush mh grammikhs exiswshs f(x)= me th meodo Newton: % % f(x_k) % x_k+ = x_k - --------- % f'(x_k) % % Metablhtes eisodou: % fname : onoma sunexous sunarthshs mias metablhths f(x) % fdname: h paragwgos df/dx ths f(x) % x : arxikh ektimhsh ths rizas
% delta : anoxh (mh arnhjtikos pragmatikos) % Nmax : megistos arimos epanalhyewn % % Metablhth exodou: % root: h riza pou upologizetai me th meodo Newton % xvec=zeros(,nmax); xk=x; xvec()=xk; fk=feval(fname,xk); dfk=feval(fdname,xk); disp('---------------------------------------------') disp(' k x_k f(x_k)') disp('---------------------------------------------') disp(sprintf(' %3.f %4.9f %4.9f',, xk, fk)) niter=; for k=:nmax xk=xk-fk/dfk; dx=abs(xk-xk); xk=xk; fk=feval(fname,xk); dfk=feval(fdname,xk); disp(sprintf(' %3.f %4.9f %4.9f', k, xk, fk)) niter=niter+; xvec(k+)=xk; if dx < delta+eps disp('---------------------------------------------') disp('newton method has converged'); root=xk; % Plot xvec=xvec(:niter); xmin=floor(min(xvec))-; xmax=ceil(max(xvec))+; xxx=xmin:(xmax-xmin)*.:xmax; yyy=feval(fname,xxx); plot(xxx,yyy,'b','linewidth',3) set(gcf,'color','w') hold on plot([xmin xmax],[ ],'k:') for iip=:niter- xx=[xvec(iip) xvec(iip) xvec(iip+)]; yy=[ feval(fname,xvec(iip)) ]; plot(xx,yy,'k','linewidth',2) end plot(xvec(niter),,'ro','markersize',) hold off return end end disp('no convergence after Nmax iterations'); % Plot xvec=xvec(:niter); xmin=floor(min(xvec))-; xmax=ceil(max(xvec))+; xxx=xmin:(xmax-xmin)*.:xmax; yyy=feval(fname,xxx); plot(xxx,yyy,'b','linewidth',3) set(gcf,'color','w') hold on plot([xmin xmax],[ ],'k:') for iip=:niter-
xx=[xvec(iip) xvec(iip) xvec(iip+)]; yy=[ feval(fname,xvec(iip)) ]; plot(xx,yy,'k','linewidth',2) end hold off % End of Newton.m Για την εξίσωσή που μελετούμε και για μια πιο μακρυνή αρχική εκτίμηση, παίρνουμε το πιο κάτω σχήμα:.5 -.5 - -.5-2.5.5 2 2.5 3 3.5 4 Με αρχική τιμή κοντά στο πήραμε:.5.5 -.5 - -.5-2.5.5 2 2.5 3 3.5 2