Ejniko & Kapodistriako Panepisthmio Ajhnwn Tmhma Plhroforikhc & Thlepikoinwniwn, PMS Upologistikh Episthmh Μάθημα: «Επισημονικοί Υπολογισμοί» Διδάσκν: Φίλιππος Τζαφέρης Χειμερινό Εξάμηνο 6-7 Άγγελος Μανζαφλάρης, Μ9, amantzaf@mathuoagr Κυριακή 8 Ιανουαρίου, 7 Επίλυση ης δισδιάσαης εξίσσης Συγκένρσης- ιάχυσης ( ) u + u u + c + c u c u(, ) = f(, ) µε χρήση ης επαναληπικής µεθόδου ESOR ιακριοποίηση Θερούµε ένα οµοιόµορφο εραγνικό πλέγµα (N + ) (N + ) ij Λαµβάνουµε κενρικές διαφορές : u = u i+,j u i,j h u = u i,j+ u i,j h,, u = u i+,j u ij + u i,j h u = u i,j+ u ij + u i,j h και η αρχική εξίσση γίνεαι (u i+,j u ij + u i,j + u i,j+ u ij + u i,j ) + c h(u i+,j u i,j ) + c h(u i,j+ u i,j ) c h u ij = f ij Αν ϑέσουµε β = c h, γ = c h, σ = c h λαµβάνουµε ελικά (β + )u i,j (γ + )u i,j + ( σ)u ij + (γ )u i+,j + (β )u i,j+ = f ij Το υπολογισικό µόριο είναι πένε σηµείν γ- i+,j -(β+) i,j- -σ ij β- i,j+ -(γ+) i-,j Θερούµε η ϕυσική αρίθµηση ν κόµβν, δηλαδή ο άγνσο διάνυσµα ης αριθµηικής λύσης είναι ũ = [ u u i,j u i,j u ij u i+,j u i,j+ u NN ] t Τα κά αρισερά σοιχεία ϑα µας δώσουν ο κά ριγνικό µέρος ου πίνακα ου συσήµαος, ενώ α πάν δεξιά ο άν ριγνικό µέρος Ο συνελεσής ου u ij εµφανίζεαι σην κύρια διαγώνιο
Εσ ο σύσηµα Aũ = b Παραηρούµε όι ένα εσερικό γινόµενο γραµµής ου A επί ũ έχει η µορφή [ (β + ) (γ + ) σ γ β ] u i,j u i,j u ij u i+,j u i,j+ Τα σοιχεία u N+,j δίνοναι από ις συνοριακές συνθήκες και οι ανίσοιχοι όροι αφαιρούναι από ο δεξί µέλος, ση ϑέση in Οµοια οι όροι µε u,j αφαιρούναι από ις ϑέσεις + (j )N ου δεξιού µέλους, j = N Για i = N αφαιρείαι ο όρος που περιέχει u i από ο δεξί µέλος από η ϑέση i ου b και ο όρος u i,n+ από η ϑέση N N + i Τελικά ο πίνακας και ο δεξί µέλος ου συσήµαος είναι A = T (β )I (β + )I T (β )I (β + )I T (β )I (β + )I T, b = f b b b N (β + )u (β + )u N (β )u,n+ (β )u N,N+ όπου ο διάνυσµα f περιέχει ις ιµές f ij := f(ih, jh) και T = σ γ γ σ γ γ σ γ γ σ, b i = (γ + )u i (γ )u N+,i ίνουµε µια οπικοποίηση ου πίνακα ου συσήµαος, για N = : 5 6 7 8 9 5 6 7 8 9 nz = 6
Επαναληπική µέθοδος ESOR Θα επιλύσουµε η διαφορική εξίσση µε ην επαναληπική µέθοδο ESOR Εσ η ϐασική διάσπαση ου A: και ο επαναληπικό σχήµα ης ESOR όπου Ανικαθισώνας A = D C L C U ũ n+ = G, ũ (n) + k, G, = I R A, k, = R b, R = D C L ũ (n+) = ũ (n) + (I L) D (b Aũ (n) ), n =,,, και µεά από πράξεις ũ (n+) = ( )ũ (n) + Lũ (n+) ( )Lũ (n) + Uũ (n) + D b Λαµβάνονας υπόψιν η µορφή ου πίνακα A µεαρέπουµε α γινόµενα που εµφανίζοναι σε µορφή συνεαγµένν : Τελικά Lũ = D C L Uũ = D C U u (n+) ij = ( )u (n) ij + +(γ )u (n) i+,j D b b ij σ σ ) + σ ( ) (γ + )ui,j + (β + )u i,j σ ( ) (β )ui,j+ (γ )u i+,j σ ( (γ + )u (n+) i,j ) + (β + )u(n+) i,j σ ( (n) (γ + )u i,j + (β + )u(n) i,j ( (β )u (n) i,j+ + ) + σ b ij Οαν οι δείκες µικρόεροι ου ή υπερβαίνουν ο N, οι ανίσοιχοι όροι περνάνε σο δεξί µέλος (καά ην υλοποίηση διακρίνουµε αυές ις περιπώσεις) Επίσης ο γινόµενο Lũ (n+) πρέπει να κραείαι ση µνήµη για να χρησιµοποιηθεί σην επόµενη επανάληψη, διόι ο ũ (n+) χρειάζεαι α Lũ (n+) και Lũ (n+) Εγινε υλοποίηση σε Matlab: Το άγνσο διάνυσµα ũ παρισάνεαι µε έναν N N πίνακα, και οι αρχικές συνθήκες µε έναν N πίνακα, κάθε σήλη ου οποίου περιέχει ις συνοριακές συνθήκες σε µια πλευρά ου συνόρου Οµοια ο δεξί µέλος είναι ένας N N πίνακας Εσι διαηρείαι η αρίθµηση ης παραπάν σχέσης Το µειονέκηµα είναι όι πρέπει να διακρίνουµε περιπώσεις για ις γραµµές σις οποίες υπεισέρχοναι συνοριακές συνθήκες, διόι αυές έχουν ενσµαθεί σο διάνυσµα b και οι ανίσοιχοι όροι σην επαναληπική σχέση πρέπει να µηδενισούν Η µέθοδος υλοποιείαι ση ϱουίνα condiffm ίνουµε ον κώδικα : function u=condiff(n,c,c,c,t,w) tol = 5e-8; n_iter = ; h = /(N+); u = zeros(n); b = zeros(n); du = zeros(n,); b =(c*h+); g =(c*h+); d = -c*hˆ; g = -(c*h-) ; b = -(c*h-) ; Lu=zeros(N); %Arikes Sin8ikes Dirichlet du(:,)=; %Deji Melos b(:,)=b*du(:,); b(:,n)=b*du(:,); b(,:)= b(,:)+g*du(:,) ; b(n,:)= b(n,:)+g*du(:,) ; %for i=:nˆ b(i)=b(i)+f(i*h,i*h);
%Epilish me ESOR iter=; while iter<=n_iter %disp(iter) u_prev=u; %j=, i= u(,) = (-t)*u(,)+(t/d)*(b*u(,)+g*u(,))+(t/d)*b(,); Lu(,)= ; %j= for i=:n- c = g*u(i-,)/d; u(i,) = (-t)*u(i,)+w*c+(t-w)*lu(i,)+(t/d)*(b*u(i,)+g*u(i+,))+(t/d)*b(i,); Lu(i,)= c; %j=, i=n c = g*u(n-,)/d; u(n,) = (-t)*u(n,)+w*c+(t-w)*lu(n,)+(t/d)*b*u(n,)+(t/d)*b(n,); Lu(N,)= c; for j=:n- %i= c = b*u(,j-)/d; u(,j) = (-t)*u(,j)+w*c+(t-w)*lu(,j)+(t/d)*(b*u(,j+)+g*u(,j))+(t/d)*b(,j); Lu(,j)= c; for i=:n- c = (g*u(i-,j)+b*u(i,j-))/d; u(i,j) = (-t)*u(i,j)+w*c+(t-w)*lu(i,j)+(t/d)*(b*u(i,j+)+g*u(i+,j))+(t/d)*b(i,j); Lu(i,j)= c; %i=n c = (g*u(n-,j)+b*u(n,j-))/d; u(n,j) = (-t)*u(n,j)+w*c+(t-w)*lu(n,j)+(t/d)*b(n,j); Lu(N,j)= c; %j=n, i= c = b*u(,n-)/d; u(,n) = (-t)*u(,n)+w*c+(t-w)*lu(,n)+(t/d)*g*u(,n)+(t/d)*b(,n); Lu(,N)= c; %j=n for i=:n- c = (g*u(i-,n)+b*u(i,n-))/d; u(i,n) = (-t)*u(i,n)+w*c+(t-w)*lu(i,n)+(t/d)*g*u(i+,n)+(t/d)*b(i,n); Lu(i,N)= c; %j=n, i=n c = (g*u(n-,n)+b*u(n,n-))/d; u(n,n) = (-t)*u(n,n)+w*c+(t-w)*lu(n,n)+(t/d)*b(n,n); Lu(N,N)= c; if norm(u-u_prev,inf)<tol disp(!sigklish META APO ),disp(iter),disp( EPANALHPSEIS ) [,]=meshgrid(h:h:-h,h:h:-h); figure subplot(,,) mesh(,,u); title( \SigmaYNAPTH\SigmaH u(,) ); label( ); label( ); subplot(,,) surf(,,u); title( \SigmaYNAPTH\SigmaH u(,) ); label( );
label( ); shading interp subplot(,,) contour(,,u); title( \SigmaYNAPTH\SigmaH u(,) - Contour ); label( ); label( ); subplot(,,) contourf(,,u); title( \SigmaYNAPTH\SigmaH u(,) - Contour ); label( ); label( ); return iter=iter+; u=; disp(!den YPARXEI SIGKLISH META APO ),disp(n_iter),disp( EPANALHPSEIS ) Για να ϐρούµε ϐέλισες ιµές για ις παραµέρους και υπολογίζουµε ον επαναληπικό πίνακα G, και κάνουµε ις γραφικές παρασάσεις (,, G, ) και (,, S(G, )) Η διαδικασία αυή είναι αρκεά χρονοβόρα, αφού ο G, είναι ένας N N πίνακας, µε πολλά µη µηδενικά σοιχεία Η παρακά ϱουίνα επισρέφει ον επαναληπικό πίνακα : function G=G(N,c,c,c,t,w) h=/(n+); N=Nˆ; b=-(c*h+); g=-(c*h+); d = -c*h; g= c*h-; b= c*h-; i= [ N+:N :N :N :N- :N-N ]; j= [ :N-N :N- :N :N (N+):N ]; s= [b*ones(,n-n) g*ones(,n-) d*ones(,n) g*ones(,n-) b*ones(,n-n)]; A= sparse(i,j,s); for i=:n-, A(i*N+,i*N)=; A(i*N,i*N+)=; % G=I-t*inv(R)*A G = spee(n) - t*inv( diag(diag(a))+w*tril(a,-) )*A; Ο πίνακας G, αποθηκεύεαι σαν αραιός πίνακας ση µνήµη, µε χρήση ης ενολής sparse ου Matlab Η δοµή ου είναι σχεδόν κά ριγνική, µε N επιπλέον µη µηδενικές διαγνίους πάν από ην κύρια διαγώνιο Τα σοιχεία ου σχηµαίζουν ένα ρίγνο Sierpinski Παρακά δίνοναι οπικοποιήσεις ου πίνακα διάσασης και 6 6: 5
Η ϱουίνα findoptm διαρέχει ο διάσηµα (, ) µε κάποιο ϐήµα που δίνεαι σαν όρισµα, υπολογίζει η νόρµα G, και η ϕασµαική ακίνα S(G, ) και σχεδιάζει ις ανίσοιχες γραφικές παρασάσεις Για η νόρµα δίνει ένα διάγραµµα ισοϋψών καµπύλν, ώσε να γίνουν ϕανερά υχόν σηµεία ελαχίσου Η νόρµα υπολογίζεαι προσεγγισικά, µε ην ενολή normest για αραιούς πίνακες Επίσης η µεγαλύερη κα απόλυο ιµή ιδιοιµή ου G, υπολογίζεαι µε χρήση ης ϐιβλιοθήκης ARPACK, µε ην ενολή eigs που είναι ειδικά για αραιούς πίνακες function [m, topt, wopt]=findopt(n,c,c,c,step) OPTSdisp = ; OPTSmait = ; OPTStol = 5e-; calc=(/step-); [t,w]= meshgrid(step:step:-step, step:step:-step); disp( STEPS= ),disp(calcˆ) count=; for i=:calc for j=:calc count=count+;disp(count) z(i,j)=normest(g(n,c,c,c,t(i,j),w(i,j)),inf); r(i,j)= abs( eigs(g(n,c,c,c,t(i,j),w(i,j)),, lm,opts)); figure subplot(,,) surf(t,w,z); title( G_{\tau,\omega} ); label( \tau ); label( \omega ); subplot(,,) surf(t,w,r); title( \PhiA\SigmaMATIKH AKTINA ); label( \tau ); label( \omega ); subplot(,,) surf(t,w,z); view([ 6]) %title( G_{\tau,\omega} ); label( \tau ); label( \omega ); subplot(,,) surf(t,w,r); view([ 6]) %title( \PhiA\SigmaMATIKH AKTINA ); label( \tau ); label( \omega ); figure [c,h] =contour(t,w,r,calc*); clabel(c); title( \PhiA\SigmaMATIKH AKTINA - Contour ); label( \tau ); label( \omega ); [m, i, j] = minn(r); topt = t(i,j); wopt = w(i,j); 6
Εφαρµογές Για ϐοήθεια σον πειραµαισµό, καασκευάσηκε η ϱουίνα findoptiterm η οποία εκελεί ην ESOR για όλες ις ιµές ν παραµέρν, µε κάποιο ϐήµα που δίνεαι σαν όρισµα Εσι ελέγχουµε πόσες επαναλήψεις γίνοναι συναρήσει ν, και συγκρίνουµε ις ιµές µε α ϐέλισα, ς προς η ϕασµαική ακίνα Εσ N =, (c, c, c ) = (,, ) Η γραφική παράσαση ης νόρµας και ης ϕασµαικής ακίνας είναι 8 G, ΦAΣMATIKH AKTINA 5 8 8 6 και ο διάγραµµα ισοϋψών καµπύλν 8 7 9 ΦAΣMATIKH AKTINA Contour 8 7 678 66 55 567 599 59 69 767 7 65 66 58 6 6 69 7 76 6 55 5 87 56 9 8 6 85 96 8 8 65 5 8 65 96 8 6 6 8 6 8 Η ϕασµαική ακίνα παράµένει µεγαλύερη ου σε όλο ο πλέγµα Κάθε προσπάθεια επίλυσης ου συσήµαος µε ην condiffm απέυχε, για όλες ις ανίσοιχες ιµές, 7
Εσ N =, (c, c, c ) = (5, 5, ) Η γραφική παράσαση ης νόρµας και ης ϕασµαικής ακίνας είναι(ϐήµα ): G, ΦAΣMATIKH AKTINA 6 5 5 8 6 Η ϕασµαική ακίνα εκοξεύεαι σα ύψη για µεγάλες ιµές ου, Το ϐέλισο ϐρέθηκε για =, = 6 όπου S(G,6 ) = 6 Πράγµαι χρειάσηκαν 57 επαναλήψεις για να λάβουµε η λύση : ΣYNAPTHΣH u(,) ΣYNAPTHΣH u(,) 5 5 5 5 5 5 5 5 ΣYNAPTHΣH u(,) Contour ΣYNAPTHΣH u(,) Contour 8 8 6 6 6 8 6 8 Ενδεικικά αναφέρουµε όι για =, = 5 οι επαναλήψεις είναι 8, ενώ για =, = χρειάσηκαν επαναλήψεις 8
Εσ N =, (c, c, c ) = (,, ) Το διάγραµµα ισοϋψών καµπύλν είναι(ϐήµα ): 8 6 95 8 ΦAΣMATIKH AKTINA Contour 876 99 55 6 69 9 6 5 59 66 7 8 88 96 8 77 8 999 7 56 8 55 65 7 7 5 95 8 6 579 7 55 6 95 78 9 7 5 78 69 77 8 997 9 6 6 8 6 8 Το ϐέλισο ϐρέθηκε για = = όπου S(G, ) = 69 Πράγµαι χρειάσηκαν 9 επαναλήψεις για να λάβουµε η λύση : ΣYNAPTHΣH u(,) ΣYNAPTHΣH u(,) 5 5 5 5 ΣYNAPTHΣH u(,) Contour ΣYNAPTHΣH u(,) Contour 8 8 6 6 6 8 6 8 9
Εσ N =, (c, c, c ) = (5,, )Η γραφική παράσαση ης νόρµας και ης ϕασµαικής ακίνας είναι(ϐήµα ): 8 G, ΦAΣMATIKH AKTINA 8 5 5 5 Το διάγραµµα ισοϋψών καµπύλν είναι : 8 ΦAΣMATIKH AKTINA Contour 88 6 66 77 8 9 56 6 9 5 6 99 6 9 8 7 8 6 588 8 6 6 8 5 79 857 7 9 5 5 96 9 8 6 588 695 96 96 9 857 7 8 5 56 9 9 6 9 77 8 88 9 857 99 9 5 9 5 7 6 66 6 6 8 6 8 Το ϐέλισο ϐρέθηκε για = = όπου S(G, ) = 88 Πράγµαι χρειάσηκαν επαναλήψεις για να λάβουµε η λύση :
ΣYNAPTHΣH u(,) ΣYNAPTHΣH u(,) 5 5 5 5 ΣYNAPTHΣH u(,) Contour ΣYNAPTHΣH u(,) Contour 8 8 6 6 6 8 6 8 Εσ N =, (c, c, c ) = (,, 5)Η γραφική παράσαση ης νόρµας και ης ϕασµαικής ακίνας είναι(ϐήµα ): G, ΦAΣMATIKH AKTINA 6 5 Το διάγραµµα ισοϋψών καµπύλν είναι :
8 6 ΦAΣMATIKH AKTINA Contour 9 9 89 5 9 67 8 9 8 7 6 75 58 97 5 5 6 7 8 7 5 6 7 8 9 79 88 96 5 9 8 5 9 9 8 6 9 87 5 5 6 7 8 89 97 5 6 6 6 8 6 8 Το ϐέλισο ϐρέθηκε για =, = 7 όπου S(G,7 ) = 875 Πράγµαι χρειάσηκαν επαναλήψεις για να λάβουµε η λύση : ΣYNAPTHΣH u(,) ΣYNAPTHΣH u(,) 5 5 5 5 ΣYNAPTHΣH u(,) Contour ΣYNAPTHΣH u(,) Contour 8 8 6 6 6 8 6 8
Εσ N = 6, (c, c, c ) = (,, 7)Η γραφική παράσαση ης νόρµας και ης ϕασµαικής ακίνας είναι(ϐήµα ): 7 G, ΦAΣMATIKH AKTINA 5 7 8 6 5 5 5 Το διάγραµµα ισοϋψών καµπύλν είναι : 8 6 ΦAΣMATIKH AKTINA Contour 5 5 5 9 7 6 5 9 7 6 6 6 6 6 6 6 8 9 6 8 65 57 65 7 8 6 7 5 6 9 95 99 8 7 5 9 7 86 6 78 6 5 58 6 8 6 8 Το ϐέλισο ϐρέθηκε για = 9 = = 9 όπου S(G,8 ) = 9778 Χρειάσηκαν86 επαναλήψεις για να λάβουµε η λύση :
ΣYNAPTHΣH u(,) ΣYNAPTHΣH u(,) 5 5 5 5 5 5 ΣYNAPTHΣH u(,) Contour ΣYNAPTHΣH u(,) Contour 8 8 6 6 6 8 6 8 Κοιάζονας ο διάγραµµα ισοϋψών καµπύλν, ϐλέπουµε όι γύρ σο =, = 6 υπάρχουν καµπύλες που δηλώνουν πιθανό ελάχισο Πράγµαι για αυές ις παραµέρους η ESOR ολοκληρώνει σε 6 επαναλήψεις! Πιθανόαα η ανίφαση αυή να οφείλεαι σα σφάλµαα καά ην προσέγγιση ης ϕασµαικής ακίνας