Professional Documents
Culture Documents
עם Ni=20
פתרון :
=A …4 -1 0 0 0 0 0 0 -1
….
.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
כתוב במילים /סמלים מהו השינוי באלכסון המרכזי של המטריצה (אם קיים): א.
כתוב במילים /סמלים מהם השינויים באלכסונים הצמודים לאלכסון המרכזי (אם קיימים): ב.
ד.
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כמה נקודות פנימיות יהיו לרשת?
פתרון:
%Laplace_final_2019
%%%%%%%%% I - Parameters
a=0; b=2;
Ni =25;
N = Ni+2;
NN = Ni^2;
x = linspace(a,b,N);
y = x;
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
end
for i = (Ni+1):NN
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);
for k=2:(Ni-1)
b(k) = fdown(x(k+1));
end
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
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
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))
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));
end
for k=1:Ni
zz(k*N+1) = fleft(y(k+1));
for m=1:Ni
end
end
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