You are on page 1of 12

‫אנליזה נומרית‬

‫תרגיל כיתה ‪12‬‬

‫נתונה משוואת לפלס הבאה‪:‬‬ ‫‪.1‬‬


‫‪u xx +u yy =0‬‬

‫עם ‪Ni=20‬‬

‫בנה משוואות ‪ 1,5‬ו‪ 272 ,385 -‬עבור משוואת הלפלס‪.‬‬

‫פתרון ‪:‬‬
‫=‪A‬‬ ‫…‪4 -1 0 0 0 0 0 0 -1‬‬

‫‪-1‬‬ ‫‪4 -1 0 0000…..‬‬ ‫…‪-1‬‬

‫‪0 -1 4 -1 0000000000 -1‬‬

‫‪….‬‬

‫מהם ‪ i‬ו‪?j -‬‬ ‫עבור משוואת לפלס עם‬ ‫‪.2‬‬


‫פתרון‪:‬‬

‫ניזכר בנוסחא ‪:‬‬

‫נבצע חילוק עם שארית‪:‬‬

‫‪.3‬‬
‫תחילת תהליך הפתרון של משוואת לפלס בריבוע הוא תרגום המשוואה הדיפרנציאלית‬
‫הרציפה‬

‫‪u xx +u yy =0‬‬
‫למשוואה (המקוטעת ‪ -‬משוואת ההפרשים)‪:‬‬
‫‪1‬‬
‫‪(4 u i , j −ui−1 , j −ui +1, j−u i, j−1−ui , j+1 )=0‬‬
‫‪h2‬‬
‫בתרגיל זה עליך לערוך שינויים בתוכנית שברשותך לפתרון משוואת לפלס כך שתפתור את‬

‫המשוואה‬
‫לפי ההנחיה הבאה‪:‬‬

‫במטריצה ‪:A‬‬
‫כתוב במילים‪ /‬סמלים מהו השינוי באלכסון המרכזי של המטריצה (אם קיים)‪:‬‬ ‫א‪.‬‬

‫באלכסון הראשי במקום ‪ 4‬יהי ‪8‬‬

‫כתוב במילים‪ /‬סמלים מהם השינויים באלכסונים הצמודים לאלכסון המרכזי (אם קיימים)‪:‬‬ ‫ב‪.‬‬

‫(המקרה הכי פשוט)‪ ,‬אז רשת נראית כך‪:‬‬ ‫נניח כי‬


‫המשוואות יהיו בשפת ‪ w‬אם כך‪:‬‬

‫‪(8 -1 0‬‬ ‫‪0 -3 0 0 0 0 0 0‬‬


‫‪-1‬‬ ‫‪8 -1 0 0 -3 0 ….0‬‬
‫‪0 -1‬‬ ‫‪8 -1 0 0 -3 0…..0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪-1‬‬ ‫‪8 -1 0 0‬‬ ‫‪-3‬‬

‫אברי אלכסון מעל ומתחת לראשי לא ישתנו‬


‫כתוב במילים‪ /‬סמלים מהם השינויים בזוג האלכסונים הנוסף השונה מ אפס (אם קיימים)‪:‬‬ ‫ג‪.‬‬

‫ישתנו ל‪ )-3( -‬במקום (‪)-1‬‬

‫ג‪ .2‬כתוב במילים‪ /‬סמלים מהם השינויים בוקטור "‪"b‬‬

‫במקום ‪ fdown‬ו‪ fup -‬יהיו ‪ 3fdown‬ו‪3fup -‬‬

‫ד‪.‬‬
‫‪2‬‬
‫‪y‬‬
‫‪2‬‬
‫‪u( x , y )=x −‬‬
‫פותרת את המשוואה החדשה?‬ ‫האם הפונקציה ‪3‬‬
‫‪u xx +3u yy =0‬‬

‫כתוב כאן את הבדיקה‬

‫ה‪.‬‬
‫רשום את תנאי השפה המתקבלים מתוך הפתרון המדויק מהסעיף הקודם בריבוע ‪, 0≤x, y≤2‬‬
‫למשל‬

‫‪2‬‬
‫‪:fdown‬‬ ‫‪u( x , y =0)=x‬‬

‫‪:fup‬‬

‫‪:fleft‬‬

‫‪:fright‬‬

‫‪ .4‬פתור את הבעיה‬

‫‪u xx +u yy =6 xy−2‬‬
‫בריבוע ‪0≤x , y≤2‬‬
‫‪2‬‬
‫‪:fdown‬‬ ‫‪u( x , y =0)=2 x +2‬‬ ‫עם תנאי השפה‬
‫‪3‬‬ ‫‪2‬‬
‫‪:fup‬‬ ‫‪u( x , y =2)=2 x +2 x +6 x−10‬‬
‫‪2‬‬
‫‪:fleft‬‬ ‫‪u( x=0 , y )=−3 y +2‬‬
‫‪2‬‬
‫‪:fright‬‬ ‫‪u( x=2 , y )=−3 y +14 y +10‬‬
‫ניתן להניח כי ‪ .Ni=4‬כמה נקודות פנימיות יהיו לרשת?‬

‫‪ ,‬את המשוואה (השישית)‬


‫רשום את המשוואה (הראשונה) שיש לפתור על מנת למצוא את ‪u2,2‬‬

‫‪ ,‬משוואה ‪ 10‬ומשוואה ‪.15‬‬


‫שיש לפתור כדי לחשב את ‪u3,3‬‬

‫פתרון‪:‬‬
%Laplace_final_2019

%Numerical Solution of Laplace equation in a square

clear all; clc; close all

%%%%%%%%% I - Parameters

a=0; b=2;

Ni =25;
N = Ni+2;

NN = Ni^2;

x = linspace(a,b,N);

y = x;

%%%%%%%%%%%%%%%%% II - Definition of matrix of coefficients

A = zeros(NN,NN);

for i=1:NN

A(i,i) = 4;

end

for i=1:(NN-1)

A(i,i+1) = -1;

end

for i=2:NN

A(i,i-1) = -1;

end

for i =(Ni+1):NN

A( (i-Ni) ,i) = -1;

end

for i = (Ni+1):NN

A(i, (i-Ni) ) = -1;

end

for i=1:(Ni-1)

A(i*Ni,i*Ni+1) = 0;

A(i*Ni+1,i*Ni) = 0;

end

A
%%%%%%%%% III - Definition of Right Hand Side

b = zeros(Ni^2,1);

b(1) = fdown(x(2))+fleft( y(2));

for k=2:(Ni-1)

b(k) = fdown(x(k+1));

end

b(Ni) = fdown(x(Ni+1)) + fright(y(2));

for j=2:(Ni-1)

b((j-1)*Ni+1) = fleft(y(j+1));

for k=2:(Ni-1)

b((j-1)*Ni+k) = 0;

end

b((j-1)*Ni+Ni) = fright(y(j+1));

end

b(Ni*(Ni-1)+1) = fleft(y(Ni+1)) + fup(x(2));

for k = 2:(Ni-1)

b((Ni-1)*Ni+k) = fup(x(k+1));

end

b(Ni*Ni) = fright(y(Ni+1))+fup(x(Ni+1));

%%%%%%%% IV - Solution!!!

w = A\b

%%%%%%%%%%%%%%% End of Calculation

%%%%%%%%%%%%%% V = Comparison with Exact Solution (if relevant)

Exact_sltn(x(2),y(2))

Exact_sltn(x(3),y(2))
Exact_sltn(x(4),y(2))

Exact_sltn(x(5),y(2))

Exact_sltn(x(5), y(5))

%%%%% VI - Plotting the solution

xx = x;

yy = zeros(1,N) +y(1);

zz = x.^2 +y(1);

for k=2:N

xx = [xx x];

yy = [yy zeros(1,N)+y(k)];

end

zz = xx - xx;

for k=1:N

zz(k) = fdown(x(k));

zz( (N-1)*N+k) = fup(x(k));

end

for k=1:Ni

zz(k*N+1) = fleft(y(k+1));

zz( (k+1)*N) = fright(y(k+1));

for m=1:Ni

zz(k*N+1+m) = w( (k-1)*Ni +m);

end

end

plot3(xx,yy,zz, ' *')

%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of (main) program


%%%%%%%% functions (Boundary Conditions and exact solution

function u = Exact_sltn(x,y)

u = 2*x^2-2*y^2+4*x*y+9;

end

%%%%%%%%%%%%%%%%%%%%%%%%%

function f1 = fleft(y)

f1 =-2*y^2+9;

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%

function f2 = fright(y)

f2 = -2*y^2+8*y+17;

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function f3 = fdown(x)

f3 = 2*x^2+9;

end

%%%%%%%%%%%%%%%%%%%%%%%%

function f4 = fup(x)

f4 =2*x^2+8*x+1;

end

You might also like