ΜΑΣ 191. Μαθηματικά με Υπολογιστές Ενδιάμεση εργαστηριακή εξέταση 26 Απριλίου 27 ΟΝΟΜΑ: ΑΤ:. Πρόβλημα 1 Στον πίνακα φαίνονται οι απογραφές πληθυσμού που έγιναν στις ΗΠΑ κατά τον περασμένο αιώνα: Έτος 19 191 192 193 194 195 196 197 198 199 2 Πληθυσμός (σε εκατομμύρια) 75.995 91.972 15.711 123.23 131.669 15.697 179.323 23.312 226.55 249.633 281.422 (α) Σχεδιάστε τον πληθυσμό σαν συνάρτηση του χρόνου στο διάστημα [19, 22] χρησιμοποιώντας μπλε κύκλους για τα δεδομένα. 2. μ. (β) Προσαρμόστε τα δεδομένα με πολυώνυμα 2 ου, 4 ου, 6 ου και 8 ου βαθμού. Στη συνέχεια κατασκευάστε ένα πολλαπλό 2 2 γραφικό με τα γραφήματα των τεσσάρων πολυωνύμων παρεμβολής μαζί με τα σημεία του πίνακα στο διάστημα [19, 22]. 12 μ. (γ) Με βάση το πολυώνυμο παρεμβολής 2 ου βαθμού βρείτε εκτιμήσεις του πληθυσμού των ΗΠΑ για τα έτη 21 και 22. 4 μ. (α) Ορίζουμε τα σημεία: >> t = (19:1:2)'; >> p = [75.995 91.972 15.711 123.23 131.669... 15.697 179.323 23.212 226.55 249.633 281.422]'; Με τις εντολές >> plot(t,p,'bo'); >> ais([19 22 4]); >> title('population of the U.S. 19-2'); >> ylabel('millions'); παίρνουμε το πιο κάτω γράφημα: 1
4 Population of the U.S. 19-2 35 3 25 Millions 2 15 1 5 19 192 194 196 198 2 22 (β) Βρίσκουμε τα πολυώνυμα παρεμβολής p 2, p 4, p 6 και p 8 : >> p2=polyfit(t,p,2) Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the degree of the polynomial, or try centering and scaling as described in HELP POLYFIT. > In polyfit at 8 p2 = 1.e+4 *.94945455 -.3498747 3.22941736363699 >> p4=polyfit(t,p,4) Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the degree of the polynomial, or try centering and scaling as described in HELP POLYFIT. > In polyfit at 8 p4 = 1.e+7 * Columns 1 through 3 -.223.1743942 -.512478459 Columns 4 through 5.663334463658-3.23349657339 >> p6=polyfit(t,p,6) Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the degree of the polynomial, or try centering and scaling as described in HELP POLYFIT. > In polyfit at 8 p6 = 1.e+11 * Columns 1 through 3. -.1.2738 Columns 4 through 6 -.714495.137128215 -.87235293831 Column 7 2.618134186724 >> p8=polyfit(t,p,8) Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the degree of the polynomial, or try centering and scaling as described in HELP POLYFIT. > In polyfit at 8 p8 = 1.e+14 * Columns 1 through 3. -.. Columns 4 through 6 2
-.13.3576 -.47714413 Columns 7 through 9.4653573976 -.259343451759 6.32312266166375 >> Με τις εντολές >> =19:22; >> P2=p2(); P4=p4(); P6=p6(); P8=p8(); >> subplot(2,2,1); plot(t,p,'bo',,p2); ylabel('p_2'); ais([19 22 4]); >> subplot(2,2,2); plot(t,p,'bo',,p4); ylabel('p_4'); ais([19 22 4]); >> subplot(2,2,3); plot(t,p,'bo',,p6); ylabel('p_6'); ais([19 22 4]); >> subplot(2,2,4); plot(t,p,'bo',,p8); ylabel('p_8'); ais([19 22 4]); >> παίρνουμε το πιο κάτω γραφικό: 4 4 3 3 p 2 2 p 4 2 1 1 19 195 2 19 195 2 4 4 3 3 p 6 2 p 8 2 1 1 19 195 2 19 195 2 (γ) Υπολογίζουμε τις τιμές του p 2 για t=21 και 22: >> p21=polyval(p2,21) p21 = 3.11588727272779e+2 >> p22=polyval(p2,22) p22 = 3.441786999952e+2 Με βάση το μοντέλο p 2 ο πληθυσμός των ΗΠΑ θα είναι 311.588 εκατομμύρια το 21 και 344.179 εκατομμύρια το 22. 3
Πρόβλημα 2 Εστω το γραμμικό σύστημα A=b: 31 + 42 + 23 4 + 5 + 76 + 7 21 22 + 33 44 + 55 + 26 + 87 1 + 22 + 33 + 4 + 25 + 46 + 67 51 + 12 + 43 + 34 + 95 26 + 7 31 + 22 23 44 55 66 + 77 21 + 92 + 3 + 34 35 + 56 + 7 = 42 = 32 = 12 = 5 = 1 = 18 2 8 + 4 + 2 + 4 + 5 = 17 1 2 3 4 5 6 7 (α) Βρείτε τη λύση του συστήματος με αριστερή διαίρεση. 3 μ. (β) Βρείτε τον ανηγμένο κλιμακωτό και τη λύση του συστήματος 3 μ. (γ) Βρείτε τη λύση =A -1 b 2 μ. (δ) Βρείτε τις ιδιοτιμές του πίνακα Α 2 μ. (α) (β) >> A=[ 3 4 2-1 1 7 1 ; 2-2 3-4 5 2 8 ; 1 2 3 1 2 4 6 ; 5 1 4 3 9-2 1 ; 3 2-2 -4-5 -6 7 ; -2 9 1 3-3 5 1 ; 1-2 -8 4 2 4 5 ]; >> b=[42 32 12-5 1 18 17]'; >> >> =A\b = -.18899492793561 2.5458965633512-3.28573958554-6.757781756275654 1.32124449497332 4.31944831619757.62945852689442 >> format short >> C=rref([A b]) C = Columns 1 through 7 1. 1. 1. 1. 1. 1. 1. Column 8 -.189 2.5459-3.286-6.7578 1.3212 4
4.3194.6294 (γ) >> =inv(a)*b = -.18899492793561 2.5458965633513-3.285739585543-6.75778175627566 1.321244494973321 4.31944831619757.62945852689442 (δ) >> eig(a) ans = -1.5167 -.199 +11.2644i -.199-11.2644i 4.3329 + 4.4573i 4.3329-4.4573i 8.8161 5.2546 5
Πρόβλημα 3 Δίνεται το γραμμικό σύστημα: + 2 + = 1 2 3 4 2 + + 3 2 = 16 1 2 3 4 + + = 1 1 2 3 4 (α) Βρείτε τον ανηγμένο κλιμακωτό του επαυξημένου πίνακα [Α b]. 2 μ. (β) Βρείτε τη γενική λύση του συστήματος. 4 μ. (α) >> A=[1 2-1 1; 2 1 3-2; -1-1 1 1]; >> b=[ 16-1]'; >> >> C=rref([A b]) C = 1. -2.6 4.6 1. 2. -1. 1..4 2.6 >> (β) Η γενική λύση του συστήματος είναι = 4.6 + 2.6λ 1 2 3 4 = 1 2λ =.4 2.6λ = λ 6
Πρόβλημα 4 Δίνεται ο πίνακας 1 2 3 4 2 3 1 A = 4 3 2 2 1 3 4 1 (α) Βρείτε την 1-, την 2-, την - και τη νόρμα Frobenius του πίνακα Α. 4 μ. (β) Βρείτε τον δείκτη κατάστασης του πίνακα Α. Είναι ο πίνακας καλής κατάστασης; 2 μ. (α) (β) >> A=[1 2 3 4; -2 3 1; -4 3-2 2; 1 3 4 1]; >> norm1=norm(a,1) norm1 = 12 >> norm2=norm(a,2) norm2 = 7.5922441636575 >> norminf=norm(a,inf) norminf = 11 >> normfro=norm(a,'fro') normfro = 1.1983927185569 >> cond2=cond(a) cond2 = 3.466216253577 Επειδή κ(α)=ο(1), ο Α είναι καλής κατάστασης. 7
Πρόβλημα 5 Δίνεται ότι η συνάρτηση Bessel 2 ου είδους και τάξης n που συμβολίζεται με Υ n δίνεται από τη συνάρτηση βιβλιοθήκης bessely(n,) Για περισσότερες πληροφορίες δοκιμάστε τη βοήθεια help bessely. (α) Ορίστε τις ανώνυμες συναρτήσεις Υ και Υ 1 για τις συναρτήσεις Bessel 2 ου είδους και τάξης και 1 αντίστοιχα. 2. μ. (β) Σχεδιάστε στο ίδιο γράφημα τις γραφικές παραστάσεις των Υ και Υ 1 στο διάστημα [, 1] έτσι ώστε να φαίνονται τα σημεία τομής τους με τον άξονα των. 4 μ. (γ) Βρείτε εκτιμήσεις όλων των ριζών των Υ και Υ 1 στο διάστημα [, 1]. 6 μ. (δ) Βρείτε τις ακριβείς τιμές των ριζών των Υ και Υ 1 στο διάστημα [, 1]. 6 μ. (ε) Βρείτε τα σημεία τομής των Υ και Υ 1 στο διάστημα [, 1]. 6 μ. (α) >> Y=@() bessely(,) Y = @() bessely(,) >> Y1=@() bessely(1,) Y1 = @() bessely(1,) (β) Με τις εντολές >> =:.1:1; >> plot(,y(),,y1(),'r') >> ais([ 1-2 2]) παίρνουμε το πιο κάτω γράφημα: 2 1.5 1.5 Y Y1 -.5-1 -1.5-2 1 2 3 4 5 6 7 8 9 1 (γ) Οι ρίζες της Υ φαίνονται προσεγγιστικά με ανοικτούς κύκλους και αυτές της Υ 1 με κλειστούς κύκλους: 8
2 1.5 1.5 -.5-1 -1.5-2 1 2 3 4 5 6 7 8 9 1 Βρίσκουμε προσεγγίσεις των ριζών των Υ και Υ 1 με την εντολή ginput. Για τη Υ έχουμε: >> [,y]=ginput(3) =.8871 3.9747 7.183 y = -.58 -.58.58 Για την Υ 1 βρίσκουμε: >> [1,y1]=ginput(3) 1 = 2.1774 5.4493 8.5599 y1 = -.58 -.58.58 (δ) Θα βρούμε τις ακριβείς ρίζες με τη συνάρτηση fzero. Για τη Υ βρίσκουμε: >> format long >> for i=1:3 yroot(i)=fzero(y,(i)); end >> yroot yroot =.893576966279167 3.957678419314858 7.8651631773 Ομοίως βρίσκουμε τις ρίζες της Υ 1 : >> for i=1:3 y1root(i)=fzero(y1,1(i)); end >> y1root y1root = 2.1971413263117 5.4296814794136 8.5965868331169 9
(ε) Με τη βοήθεια της ginput βρίσκουμε πρώτα προσεγγίσεις των σημείων τομής των Y και Υ 1 : 2 1.5 1.5 -.5-1 -1.5-2 1 2 3 4 5 6 7 8 9 1 >> [r,yr]=ginput(3) r = 3.991 6.2558 9.4124 yr =.345 -.2398.193 Ορίζουμε πρώτα την ανώνυμη συνάρτηση Y -Y 1 και χρησιμοποιούμε την fzero: >> YY1=@() bessely(,)-bessely(1,) YY1 = @() bessely(,)-bessely(1,) >> for i=1:3 sec(i)=fzero(yy1,r(i)); end >> cpoints=[sec' Y(sec)'] cpoints = 3.88763181862552.34716979922631 6.265935553282 -.234585698455815 9.4184429975349.18884811358598 1
Πρόβλημα 6 Διαβάστε το αρχείο b2 που βρίσκεται στην ιστοσελίδα του μαθήματος το οποίο περιέχει σε 4 στήλες τα διανύσματα, y 1, y 2 και y 3. Στη συνέχεια σχεδιάστε στο ίδιο πολλαπλό γράφημα τις γραφικές παραστάσεις των y 1, y 2 και y 3 συναρτήσει του, ως εξής: y 1 y 2 y 3 Με τις εντολές >> fid=fopen('b2.tt'); >> X=fscanf(fid,'%g %g %g %g',[4 inf])'; >> fclose(fid); >> subplot(3,1,1); plot(x(:,1),x(:,2)); label(''); ylabel('y_1'); >> subplot(3,1,2); plot(x(:,1),x(:,3)); label(''); ylabel('y_2'); >> subplot(3,1,3); plot(x(:,1),x(:,4)); label(''); ylabel('y_3'); παίρνουμε το πιο κάτω γράφημα 8 μ. 1 y 1 5-2 -18-16 -14-12 -1-8 -6-4 -2 5 y 2 4.5 4-2 -18-16 -14-12 -1-8 -6-4 -2.24 y 3.23.22-2 -18-16 -14-12 -1-8 -6-4 -2 11
Πρόβλημα 7 Εστω το πολυώνυμο f 3 2 ( ) = 27 7225 + 865 3444 (α) Βρείτε τις ρίζες του πολυωνύμου. 2 μ. (β) Σχεδιάστε το γράφημα του f έτσι ώστε να φαίνονται καθαρά οι 3 ρίζες του. 4 μ. (γ) Ποια ρίζα βρίσκει η μέθοδος Newton με αρχική εκτίμηση =1; (Χρησιμοποιήστε το m-file Newton1.m στην ιστοσελίδα του μαθήματος) 2 μ. (δ) Ποια ρίζα βρίσκει η μέθοδος Newton με αρχική εκτίμηση =1.15; 2 μ. (ε) Αν * η ακριβής ρίζα που βρήκατε στο (δ) υπολογίστε το σφάλμα ε = *, k =,1,2, k k και σχεδιάστε το ε k συναρτήσει του k σε ημιλογαριθμικό γράφημα (κατά τον άξονα των ε k ). 6 μ. (α) Ορίζουμε το πολυώνυμο f και χρησιμοποιούμε την εντολή roots: >> pf=[27-7225 865-3444]; >> roots(pf) ans = 1.29664884194126 1.248727297626 1.9838123568884 (β) Με τις εντολές >> f=@() polyval(pf,) f = @() polyval(pf,) >> =1:.1:1.4; >> plot(,f()) >> ais([1 1.4-1 1]) παίρνουμε το πιο κάτω γράφημα: 1.8.6.4.2 -.2 -.4 -.6 -.8-1 1 1.5 1.1 1.15 1.2 1.25 1.3 1.35 1.4 12
(γ) Ορίζουμε σαν ανώνυμη συνάρτηση την παράγωγο της f και καλούμε την Newton1: ( δ) >> dpf=polyder(pf) dpf = 621-1445 865 >> df=@() polyval(dpf,) df = @() polyval(dpf,) >> root=newton1(f,df,1,1e-6,1) --------------------------------------------- k _k f(_k) --------------------------------------------- 1. -12. 1 1.54298643-3.22851831 2 1.84191946 -.73143372 3 1.96172439 -.9662267 4 1.98314119 -.2846782 5 1.98381171 -.2751 6 1. 98381236 -. --------------------------------------------- Newton method has converged root = 1.9838123568839 >> root=newton1(f,df,1.15,1e-6,1) --------------------------------------------- k _k f(_k) --------------------------------------------- 1.15.833625 1 1.326335272 1.64969565 2 3 4 5 6 1.34739377 1.29751787 1.2966661 1.296648842 1.29664884.33463979.32149234.42961.8 -. --------------------------------------------- Newton method has converged root = 1.29664884194113 Παρατηρούμε ότι τώρα βρήκαμε την 3 η ρίζα του f. (ε) >> XK=[ 1.15 1.326335272 1.34739377 1.29751787 1.2966661 1.296648842 1.29664884 ]; >> error=abs(xk-root) error =.14664884194113.2968643185887.8953685887.86824685887.117685887.185887.194113 >> kvec=:6; >> semilogy(kvec,error,'o') 13
>> label('iteration') >> ylabel('error') Παίρνουμε το πιο κάτω γράφημα που δείχνει την τετραγωνική σύγκλιση της μεθόδου Newton: 1 1-2 1-4 Error 1-6 1-8 1-1 1 2 3 4 5 6 Iteration 14
Πρόβλημα 8 ( α) Δημιουργείστε ένα function m-file με όνομα wrpol.m και δεδομένα εισόδου ένα πολυώνυμο p, το όνομα fname ενός αρχείου και δύο αριθμούς a b με b >a το οποίο θα διαμερίζει το διάστημα [a,b] σε 11 ισαπέχοντες κόμβους i και θα τυπώνει στο αρχείο fname σε τρείς στήλες τις τιμές i, p( i ), dp/d( i ) (β) Χρησιμοποιείστε το πιο πάνω m-file για το πολυώνυμο 6 μ. p 3 2 ( ) = 2 + 4 5 στο διάστημα [,1]. 2 μ. (α) Το ζητούμενο m-file είναι το εξής: function []=wrpol(p, fname, a, b) % WRPOL % Prints the values of p and p' in [a,b] % =a:(b-a)/1:b; pd=polyder(p); Y= [ ; polyval(p,); polyval(pd,)] ; fid=fopen(fname,'w'); fprintf(fid,'%4.1f %13.8f %13.8f \n',y); fclose(fid); % End of WRPOL (β) Με την εντολή >> wrpol([1-2 4-5], 'data1',, 1) παίρνουμε το αρχείο data1:. -5. 4..1-4.619 3.63.2-4.272 3.32.3-3.953 3.7.4-3.656 2.88.5-3.375 2.75.6-3.14 2.68.7-2.837 2.67.8-2.568 2.72.9-2.291 2.83 1. -2. 3. 15
Πρόβλημα 9 Διαμερίστε στη ΜΑΤLAB το διάστημα [, 1] με 21 ισαπέχοντες κόμβους i, i=1,., 21 έτσι ώστε: Στη συνέχεια υπολογίστε το γινόμενο =.5( i 1), i= 1,, 21 i 21 i= 1, i 9 ( i ) με τη χρήση μόνο ενός βρόχου for. 4 μ. >> =(:2)/2; >> product=1; >> for i=1:21 if i ~=9 product=product*((9)-(i)) end end Εναλλακτικά μπορούμε να γράψουμε: >> =linspace(,1,21); >> product=1; >> for i=[1:8 1:21] product= product*((9)-(i)) end Και στις δύο περιπτώσεις παίρνουμε: 9 >> product product = 1.8419e-13 16