Professional Documents
Culture Documents
Homework-6
Fall 2019
Name ID
fprintf(' x w\n');
h = (b-a)/n;
u1 = alpha;
u2 = 0;
v1 = 0;
v2 = 1;
u = zeros(2,n);
v = zeros(2,n);
for i = 1 : n
x = a+(i-1)*h;
t = x+0.5*h;
k11 = h*u2;
k12 = h*(p(x)*u2+q(x)*u1+r(x));
k21 = h*(u2+0.5*k12);
k22 = h*(p(t)*(u2+0.5*k12)+q(t)*(u1+0.5*k11)+r(t));
k31 = h*(u2+0.5*k22);
k32 = h*(p(t)*(u2+0.5*k22)+q(t)*(u1+0.5*k21)+r(t));
t = x+h;
k41 = h*(u2+k32);
k42 = h*(p(t)*(u2+k32)+q(t)*(u1+k31)+r(t));
u1 = u1+(k11+2*(k21+k31)+k41)/6;
u2 = u2+(k12+2*(k22+k32)+k42)/6;
k11 = h*v2;
k12 = h*(p(x)*v2+q(x)*v1);
t = x+0.5*h;
k21 = h*(v2+0.5*k12);
k22 = h*(p(t)*(v2+0.5*k12)+q(t)*(v1+0.5*k11));
k31 = h*(v2+0.5*k22);
k32 = h*(p(t)*(v2+0.5*k22)+q(t)*(v1+0.5*k21));
t = x+h;
k41 = h*(v2+k32);
k42 = h*(p(t)*(v2+k32)+q(t)*(v1+k31));
v1 = v1+(k11+2*(k21+k31)+k41)/6;
v2 = v2+(k12+2*(k22+k32)+k42)/6;
u(1,i) = u1;
u(2,i) = u2;
v(1,i) = v1;
v(2,i) = v2;
end
w1 = alpha;
z = (beta-u(1,n))/v(1,n);
x = a;
i = 0;
fprintf('%5.4f %11.8f \n', x, w1);
for i = 1 : n
x = a+i*h;
w1 = u(1,i)+z*v(1,i);
w2 = u(2,i)+z*v(2,i);
fprintf('%5.4f %11.8f \n', x, w1);
end
y1 = w;
x1 = [0:1:10]
b = 0.3872*x1;
y2 = 3.016944*exp(b)+(236.9831*exp(-1*b))
plot (x,y1,x1,y2);
x T (Matlab) T (Analytical)
0 240 240.000044
1 165.3461279 165.3444385
2 115.7927381 115.7891642
3 83.81747435 83.81141705
4 64.56646002 64.55677289
5 55.1174742 55.10225501
6 54.03637147 54.0126078
7 61.15941058 61.12241595
8 77.56845472 77.51099327
9 105.7552873 105.6662294
10 150 149.8622673
Plot
As both Matlab and analytical solution are quite same so both graphs coincide very well. X-axis is for
x and Y-axis is for T values.
2b) MATLAB code using the finite difference approach
for i = 2 : m
x = aa+i*h;
a(i) = 2+h^2*q(x);
b(i) = -1+0.5*h*p(x);
c(i) = -1-0.5*h*p(x);
d(i) = -h^2*r(x);
end
x = bb-h;
a(n) = 2+h^2*q(x);
c(n) = -1-0.5*h*p(x);
d(n) = -h^2*r(x)+(1-0.5*h*p(x))*beta;
l(1) = a(1);
u(1) = b(1)/a(1);
z(1) = d(1)/l(1);
for i = 2 : m
l(i) = a(i)-c(i)*u(i-1);
u(i) = b(i)/l(i);
z(i) = (d(i)-c(i)*z(i-1))/l(i);
end
l(n) = a(n)-c(n)*u(n-1);
z(n) = (d(n)-c(n)*z(n-1))/l(n);
w(n) = z(n);
for j = 1 : m
i = n-j;
w(i) = z(i)-u(i)*w(i+1);
end
i = 0;
fprintf('%5.4f %11.8f\n', aa, alpha);
for i = 1 : n
x = aa+i*h;
fprintf('%5.4f %11.8f\n', x, w(i));
end
i = n+1;
fprintf('%5.4f %11.8f\n', bb, beta);
y1 = w;
x1 = [0:1:10]
b = 0.3872*x1;
y2 = 3.016944*exp(b)+(236.9831*exp(-1*b))
plot (x,y1,x1,y2);
Plot
As both Matlab and analytical solution are quite same so both graphs coincide very well. X-axis is for
x and Y-axis is for T values.