CC 11 Practical
CC 11 Practical
CC 11 Practical
x0 = a
x1 = a + h
x = a + 2h
2 (b − a)
(N + 1)points h= (2)
................... N
xj = a + jh → f orj = 0, 1, . . . , N
xN = a + N h
And,
=⇒ a10 = c2
=⇒ a21 = c3
(N −2) elements lef t side of diagonal elements.
....................
=⇒ aN −2,N −3 = cN −1
#Number of Points=N
#Number of discrete uniform intervals=(N-1)
N=22
#(a)
A=[]
5
A=np.zeros((N-2,N-2))
xi,xf=-0.5,4
yi=0
yf=9*(np.exp(-4))
h=(xf-xi)/(N-1)
xx=[]
pp,qq,rr=[],[],[]
cc,dd,ee=[],[],[]
for i in range(1,N-2+1):
x=xi+i*h
p=2
c=1-((h/2)*p)
e=1+((h/2)*p)
q=1
d=((h**2)*q)-2
r=0
cc.append(c)
dd.append(d)
ee.append(e)
pp.append(p)
qq.append(q)
rr.append(r)
xx.append(x)
for i in range(0,N-3):
A[i+1][i]=cc[i+1] #A[1][0]=C2=cc[1]
for i in range(0,N-2):
A[i][i]=dd[i] #A[0][0]=d1=dd[0]
for i in range(0,N-3):
A[i][i+1]=ee[i] #A[0][1]=e1=ee[0]
B=[]
B=np.zeros((N-2,1))
B[0][0]=((h**2)*rr[0])-(cc[0]*yi)
for i in range(1,N-3):
B[i][0]=(h**2)*rr[i]
B[N-3][0]=((h**2)*rr[N-3])-(ee[N-3]*yf)
6
Y=[]
Y=np.linalg.solve(A,B)
print(Y)
#(b)
xx1=[]
yy=[]
for i in range(N):
x1=xi+i*h
y=((2*x1)+1)*(np.exp(-x1))
xx1.append(x1)
yy.append(y)
plt.plot(xx,Y,’ok’,label=’Numerical Solution’)
plt.plot(xx1,yy,’-k’,label=’Analytic Solution’)
plt.title(’1.(b) Numerical vs Analytic Solution’)
plt.legend()
plt.grid()
plt.show()
#(c)
n=N-2
zz=[]
z=0
for i in range(n):
z=z+(Y[i]-yy[i+1])**2
zz.append(z)
ss=[]
nn=[]
for i in range(n):
s=((1/(i+1))*zz[i])**0.5
ss.append(s)
nn.append(i)
plt.plot(nn,ss,’.-k’)
plt.xlabel(’No. of Points(n)’)
plt.ylabel(’Sigma(n)’)
plt.title(’1.(c) Deviation of Numerical Solution vs No. of Points’)
plt.grid()
plt.show()
7
Output:
8
#Number of Points=N
#Number of discrete uniform intervals=(N-1)
N=17
#(a)
A=[]
A=np.zeros((N-2,N-2))
xi,xf=0,4
yi=0
yf=4*(np.exp(-4))
h=(xf-xi)/(N-1)
xx=[]
pp,qq,rr=[],[],[]
cc,dd,ee=[],[],[]
for i in range(1,N-2+1):
x=xi+i*h
p=np.exp(x)
c=1-((h/2)*p)
e=1+((h/2)*p)
q=1
d=((h**2)*q)-2
r=(2*(x-1)*(np.exp(-x)))-x+1
cc.append(c)
dd.append(d)
ee.append(e)
pp.append(p)
qq.append(q)
9
rr.append(r)
xx.append(x)
for i in range(0,N-3):
A[i+1][i]=cc[i+1] #A[1][0]=C2=cc[1]
for i in range(0,N-2):
A[i][i]=dd[i] #A[0][0]=d1=dd[0]
for i in range(0,N-3):
A[i][i+1]=ee[i] #A[0][1]=e1=ee[0]
B=[]
B=np.zeros((N-2,1))
B[0][0]=((h**2)*rr[0])-(cc[0]*yi)
for i in range(1,N-3):
B[i][0]=(h**2)*rr[i]
B[N-3][0]=((h**2)*rr[N-3])-(ee[N-3]*yf)
Y=[]
Y=np.linalg.solve(A,B)
print(Y)
#(b)
xx1=[]
yy=[]
for i in range(N):
x1=xi+i*h
y=x1*(np.exp(-x1))
xx1.append(x1)
yy.append(y)
plt.plot(xx,Y,’ok’,label=’Numerical Solution’)
plt.plot(xx1,yy,’-k’,label=’Analytic Solution’)
plt.title(’2.(b) Numerical & Analytic Solution’)
plt.legend()
plt.grid()
plt.show()
10
Output:
#Number of Points=N
#Number of discrete uniform intervals=(N-1)
N=22
#(a)
A=[]
A=np.zeros((N-2,N-2))
11
xi,xf=-1,1
yi=0
yf=0
h=(xf-xi)/(N-1)
xx=[]
pp,qq,rr=[],[],[]
cc,dd,ee=[],[],[]
for i in range(1,N-2+1):
x=xi+i*h
p=x
c=1-((h/2)*p)
e=1+((h/2)*p)
q=-4
d=((h**2)*q)-2
r=(14*(x**2))-2
cc.append(c)
dd.append(d)
ee.append(e)
pp.append(p)
qq.append(q)
rr.append(r)
xx.append(x)
for i in range(0,N-3):
A[i+1][i]=cc[i+1] #A[1][0]=C2=cc[1]
for i in range(0,N-2):
A[i][i]=dd[i] #A[0][0]=d1=dd[0]
for i in range(0,N-3):
A[i][i+1]=ee[i] #A[0][1]=e1=ee[0]
B=[]
B=np.zeros((N-2,1))
B[0][0]=((h**2)*rr[0])-(cc[0]*yi)
for i in range(1,N-3):
B[i][0]=(h**2)*rr[i]
B[N-3][0]=((h**2)*rr[N-3])-(ee[N-3]*yf)
Y=[]
12
Y=np.linalg.solve(A,B)
print(Y)
#(b)
xx1=[]
yy=[]
for i in range(N):
x1=xi+i*h
y=(x1**4)-(x1**2)
xx1.append(x1)
yy.append(y)
plt.plot(xx,Y,’ok’,label=’Numerical Solution’)
plt.plot(xx1,yy,’-k’,label=’Analytic Solution’)
plt.title(’3.(b) Numerical & Analytic Solution’)
plt.legend()
plt.grid()
plt.show()
Output:
13
#Number of Points=N
#Number of discrete uniform intervals=(N-1)
N=22
#(a)
A=[]
A=np.zeros((N-2,N-2))
xi,xf=-0.95,0.95
yi,yf=0.85375,0.85375
h=(xf-xi)/(N-1)
xx=[]
pp,qq,rr=[],[],[]
cc,dd,ee=[],[],[]
for i in range(1,N-2+1):
x=xi+i*h
p=(-2*x)/(1-(x**2))
c=1-((h/2)*p)
e=1+((h/2)*p)
q=6/(1-(x**2))
d=((h**2)*q)-2
r=0
cc.append(c)
dd.append(d)
ee.append(e)
pp.append(p)
qq.append(q)
rr.append(r)
14
xx.append(x)
for i in range(0,N-3):
A[i+1][i]=cc[i+1] #A[1][0]=C2=cc[1]
for i in range(0,N-2):
A[i][i]=dd[i] #A[0][0]=d1=dd[0]
for i in range(0,N-3):
A[i][i+1]=ee[i] #A[0][1]=e1=ee[0]
B=[]
B=np.zeros((N-2,1))
B[0][0]=((h**2)*rr[0])-(cc[0]*yi)
for i in range(1,N-3):
B[i][0]=(h**2)*rr[i]
B[N-3][0]=((h**2)*rr[N-3])-(ee[N-3]*yf)
Y=[]
Y=np.linalg.solve(A,B)
print(Y)
#(b)
xx1=[]
yy=[]
for i in range(N):
x1=xi+i*h
y=(3*(x1**2)-1)/2
xx1.append(x1)
yy.append(y)
plt.plot(xx,Y,’ok’,label=’Numerical Solution’)
plt.plot(xx1,yy,’-k’,label=’Analytic Solution’)
plt.title(’4.(b) Numerical & Analytic Solution’)
plt.legend()
plt.grid()
plt.show()
15
Output:
#Number of Points=N
#Number of discrete uniform intervals=(N-1)
N=17
#(a)
A=[]
A=np.zeros((N-2,N-2))
16
xi,xf=-0.95,0.95
yi,yf=-0.7184375,0.7184375
h=(xf-xi)/(N-1)
xx=[]
pp,qq,rr=[],[],[]
cc,dd,ee=[],[],[]
for i in range(1,N-2+1):
x=xi+i*h
p=(-2*x)/(1-(x**2))
c=1-((h/2)*p)
e=1+((h/2)*p)
q=12/(1-(x**2))
d=((h**2)*q)-2
r=0
cc.append(c)
dd.append(d)
ee.append(e)
pp.append(p)
qq.append(q)
rr.append(r)
xx.append(x)
for i in range(0,N-3):
A[i+1][i]=cc[i+1] #A[1][0]=C2=cc[1]
for i in range(0,N-2):
A[i][i]=dd[i] #A[0][0]=d1=dd[0]
for i in range(0,N-3):
A[i][i+1]=ee[i] #A[0][1]=e1=ee[0]
B=[]
B=np.zeros((N-2,1))
B[0][0]=((h**2)*rr[0])-(cc[0]*yi)
for i in range(1,N-3):
B[i][0]=(h**2)*rr[i]
B[N-3][0]=((h**2)*rr[N-3])-(ee[N-3]*yf)
Y=[]
Y=np.linalg.solve(A,B)
17
print(Y)
#(b)
xx1=[]
yy=[]
for i in range(N):
x1=xi+i*h
y=(5*(x1**3)-(3*x1))/2
xx1.append(x1)
yy.append(y)
plt.plot(xx,Y,’ok’,label=’Numerical Solution’)
plt.plot(xx1,yy,’-k’,label=’Analytic Solution’)
plt.title(’5.(b) Numerical & Analytic Solution’)
plt.legend()
plt.grid()
plt.show()
Output:
18
#Number of Points=N
#Number of discrete uniform intervals=(N-1)
N=32
#(a)
A=[]
A=np.zeros((N-2,N-2))
xi,xf=-0.95,0.95
yi,yf=0.5540898438,0.5540898438
h=(xf-xi)/(N-1)
xx=[]
pp,qq,rr=[],[],[]
cc,dd,ee=[],[],[]
for i in range(1,N-2+1):
x=xi+i*h
p=(-2*x)/(1-(x**2))
c=1-((h/2)*p)
e=1+((h/2)*p)
q=20/(1-(x**2))
d=((h**2)*q)-2
r=0
cc.append(c)
dd.append(d)
ee.append(e)
pp.append(p)
qq.append(q)
rr.append(r)
19
xx.append(x)
for i in range(0,N-3):
A[i+1][i]=cc[i+1] #A[1][0]=C2=cc[1]
for i in range(0,N-2):
A[i][i]=dd[i] #A[0][0]=d1=dd[0]
for i in range(0,N-3):
A[i][i+1]=ee[i] #A[0][1]=e1=ee[0]
B=[]
B=np.zeros((N-2,1))
B[0][0]=((h**2)*rr[0])-(cc[0]*yi)
for i in range(1,N-3):
B[i][0]=(h**2)*rr[i]
B[N-3][0]=((h**2)*rr[N-3])-(ee[N-3]*yf)
Y=[]
Y=np.linalg.solve(A,B)
print(Y)
#(b)
xx1=[]
yy=[]
for i in range(N):
x1=xi+i*h
y=(35*(x1**4)-(30*(x1**2))+3)/8
xx1.append(x1)
yy.append(y)
plt.plot(xx,Y,’ok’,label=’Numerical Solution’)
plt.plot(xx1,yy,’-k’,label=’Analytic Solution’)
plt.title(’6.(b) Numerical & Analytic Solution’)
plt.legend()
plt.grid()
plt.show()
20
Output:
The End