Mathslabmanual Vtu
Mathslabmanual Vtu
Mathslabmanual Vtu
of
Second Semester Engineering Mathematics
as prescribed by Visvesvaraya Technological University, Belagavi
Compiled by:
Dr. Ramananda H. S. Dr. K. Sushan Bairy
St Joseph Engineering College, SOAS, REVA University,
Mangaluru, INDIA. Bengaluru, INDIA.
2. Each Lab will be evaluated for 15 marks and finally average will be taken for 15
marks.
3. Viva questions shall be asked in labs and attendance also can be considered for
everyday Lab evaluation.
4. Tests shall be considered for 5 marks and final Lab assessment is for 20 marks.
3
Contents: Computer Science and Engineering Stream
Lab 1. Programme to compute area, volume and center of gravity.
Lab 4. Computation of basis and dimension for a vector space and graphical representation
of linear transformation
Lab 7. Interpolation /Extrapolation using Newton’s forward and backward di↵erence for-
mula
1 rd
Lab 8. Computation of area under the curve using Trapezoidal, Simpson’s 3
and Simp-
th
sons 38 rule
Lab 9. Solution of ODE of first order and first degree by Taylor’s series and Modified
Euler’s method
Lab 10. Solution of ODE of first order and first degree by Runge-Kutta 4th order method
and Milne’s predictor and corrector method
51
LAB 1: Programme to compute area, volume and cen-
ter of gravity
1.1 Objectives:
Use python
2. integrate:
integrate ( function ,( variable , min_limit , max_limit ) )
1/3
Example 2:
R3 3R x 3 Rx y
Evaluate the integral (xyz)dzdydx
0 0 0
from sympy import *
x = Symbol ( 'x ')
y = Symbol ( 'y ')
z = Symbol ( 'z ')
w2 = integrate (( x * y * z ) ,(z ,0 , 3 - x - y ) ,(y ,0 , 3 - x ) ,(x ,0 , 3 ) )
print ( w2 )
81/80
52
Example 3:
RR 2 RR 2
Prove that (x + y 2 )dydx = (x + y 2 )dxdy
from sympy import *
x = Symbol ( 'x ')
y = Symbol ( 'y ')
z = Symbol ( 'z ')
w3 = integrate ( x ** 2 + y ** 2 ,y , x )
pprint ( w3 )
w4 = integrate ( x ** 2 + y ** 2 ,x , y )
pprint ( w4 )
Example 4:
p
Ra (b/a) R a2 x2
Find the area of an ellipse by double integration. A=4 dydx
0 0
from sympy import *
x = Symbol ( 'x ')
y = Symbol ( 'y ')
# a = Symbol ( ' a ')
# b = Symbol ( ' b ')
a=4
b=6
w3 = 4 * integrate (1 ,( y ,0 ,( b / a ) * sqrt ( a ** 2 - x ** 2 ) ) ,(x ,0 , a ) )
print ( w3 )
24.0*pi
RR
1.4 Area of the region R in the polar form is rdrd✓
R
Example 5:
Find the area of the cardioid r = a(1 + cos✓) by double integration
from sympy import *
r = Symbol ( 'r ')
t = Symbol ( 't ')
a = Symbol ( 'a ')
#a=4
53
RRR
1.5 Volume of a solid is given by dxdydz
V
Example 6:
Find the volume of the tetrahedron bounded by the planes x=0,y=0 and z=0, xa + yb + zc = 1
from sympy import *
x = Symbol ( 'x ')
y = Symbol ( 'y ')
z = Symbol ( 'z ')
a = Symbol ( 'a ')
b = Symbol ( 'b ')
c = Symbol ( 'c ')
w2 = integrate (1 ,( z ,0 , c * ( 1 - x / a - y / b ) ) ,(y ,0 , b * ( 1 - x / a ) ) ,(x ,0 , a ) )
print ( w2 )
a*b*c/6
rad = np . arange (0 , ( 2 * np . pi ) , 0 . 01 )
5*a/6
54
1.7 Exercise:
R1 Rx
1. Evaluate (x + y)dydx
0 0
Ans: 0.5
log(2)
R Rx x+log(y)
R
2. Find the (ex+y+z )dzdydx
0 0 0
Ans: -0.2627
4. Find the volume of the tetrahedron bounded by the planes x=0,y=0 and z=0,
x
2
+ y3 + z4 = 1
Ans: 4
55
LAB 2: Evaluation of improper integrals, Beta and
Gamma functions
2.1 Objectives:
Use python
1. to evaluate improper integrals using Beta function.
2. to evaluate improper integrals using Gamma function.
Parameters :
x : The number whose gamma value needs to be computed.
2. beta
math . beta (x , y )
Parameters :
x ,y: The numbers whose beta value needs to be computed.
3. Note: We can evaluate improper integral involving infinity by using inf.
Example 1:
R1
Evaluate e x dx.
0
from sympy import *
x = symbols ( 'x ')
w1 = integrate ( exp ( - x ) ,(x ,0 , float ( ' inf ') ) )
print ( simplify ( w1 ) )
1
R1
Gamma function is x(n) = 0
e x xn 1 dx
Example 2:
Evaluate (5) by using definition
from sympy import *
x = symbols ( 'x ')
w1 = integrate ( exp ( - x ) * x ** 4 ,( x ,0 , float ( ' inf ') ) )
print ( simplify ( w1 ) )
24
56
Example 3:
R1 st
Evaluate e cos(4t)dt . That is Laplace transform of cos(4t)
0
from sympy import *
t , s = symbols ( 't , s ')
# for infinity in sympy we use oo
w1 = integrate ( exp ( - s * t ) * cos ( 4 * t ) ,(t ,0 , oo ) )
display ( simplify ( w1 ) )
Example 4:
Find Beta(3,5), Gamma(5)
# beta and gamma functions
from sympy import beta , gamma
m = input ( 'm : ') ;
n = input ( 'n : ') ;
m = float ( m ) ;
n = float ( n ) ;
s = beta (m , n ) ;
t = gamma ( n )
print ( ' gamma ( ' ,n , ') is % 3 . 3f '% t )
print ( ' Beta ( ' ,m ,n , ') is % 3 . 3f '% s )
m :3
n :5
gamma ( 5.0 ) is 24.000
Beta ( 3.0 5.0 ) is 0.010
Example 5:
Calculate Beta(5/2,7/2) and Gamma(5/2).
# beta and gamma functions
# If the number is a fraction give it in decimals . Eg 5 / 2 = 2 . 5
from sympy import beta , gamma
m = float ( input ( 'm : ') ) ;
n = float ( input ( 'n : ') ) ;
s = beta (m , n ) ;
t = gamma ( n )
print ( ' gamma ( ' ,n , ') is % 3 . 3f '% t )
print ( ' Beta ( ' ,m ,n , ') is % 3 . 3f '% s )
57
m : 2.5
n :3.5
gamma ( 3.5 ) is 3.323
Beta ( 2.5 3.5 ) is 0.037
Example 6:
Verify that Beta(m, n) = Gamma(m)Gamma(n)/Gamma(m + n) for m=5 and n=7
from sympy import beta , gamma
m=5;
n=7;
m = float ( m ) ;
n = float ( n ) ;
s = beta (m , n ) ;
t = ( gamma ( m ) * gamma ( n ) ) / gamma ( m + n ) ;
print (s , t )
if ( abs ( s - t ) < = 0 . 00001 ) :
print ( ' beta and gamma are related ')
else :
print ( ' given values are wrong ')
0.000432900432900433 0.000432900432900433
beta and gamma are related
2.2 Exercise:
R1
1. Evaluate e t cos(2t)dt
0
Ans: 1/5
58
LAB 3: Finding gradient, divergent, curl and their
geometrical interpretation
1.1 Objectives:
Use python
1.2 Method I:
To find gradient of = x2 y + 2xz 4.
# To find gradient of scalar point function .
from sympy . vector import *
from sympy import symbols
N = CoordSys3D ( 'N ') # Setting the coordinate system
x ,y , z = symbols ( 'x y z ')
A = N . x ** 2 * N . y + 2 * N . x * N . z - 4 # Variables x ,y , z to be used with coordinate
system N
delop = Del () # Del operator
display ( delop ( A ) ) # Del operator applied to A
gradA = gradient ( A ) # Gradient function is used
print ( f " \ n Gradient of { A } is \ n " )
display ( gradA )
59
To find curl of F~ = x2 yz î + y 2 zxĵ + z 2 xy k̂
# To find curl of a vector point function
from sympy . vector import *
from sympy import symbols
N = CoordSys3D ( 'N ')
x ,y , z = symbols ( 'x y z ')
A = N . x ** 2 * N . y * N . z * N . i + N . y ** 2 * N . z * N . x * N . j + N . z ** 2 * N . x * N . y * N . k
delop = Del ()
curlA = delop . cross ( A )
display ( curlA )
60
To find divergence of F~ = x2 y î + yz 2 ĵ + x2 z k̂.
# To find divergence of F = x ^ 2yi + yz ^ 2j + x ^ 2zk
from sympy . physics . vector import *
from sympy import var
var ( 'x ,y , z ')
v = ReferenceFrame ( 'v ')
F = v [ 0 ] ** 2 * v [ 1 ] * v . x + v [ 1 ] * v [ 2 ] ** 2 * v . y + v [ 0 ] ** 2 * v [ 2 ] * v . z
G = divergence (F , v )
F = F . subs ( [ ( v [ 0 ] ,x ) ,( v [ 1 ] ,y ) ,( v [ 2 ] ,z ) ] )
print ( " Given vector point function is " )
display ( F )
G = G . subs ( [ ( v [ 0 ] ,x ) ,( v [ 1 ] ,y ) ,( v [ 2 ] ,z ) ] )
print ( " Divergence of F = " )
display ( G )
G = G . subs ( [ ( v [ 0 ] ,x ) ,( v [ 1 ] ,y ) ,( v [ 2 ] ,z ) ] )
print ( " curl of F = " )
display ( G )
61
1.4 Exercise:
1. If u = x + y + z, v = x2 + y 2 + z 2 , w = yz + zx + xy, find gradu, gradv and gradw.
Ans: î + ĵ + k̂, 2(xî + y ĵ + z k̂), (y + z)î + (z + x)ĵ + (z + x)k̂.
2. Evaluate divF and curlF at the point (1,2,3), given that F~ = x2 yz î+xy 2 z ĵ +xyz 2 k̂.
Ans: 6xyz, x(z 2 y 2 )î + y(x2 z 2 )ĵ + z(y 2 x2 )k̂.
3. Prove that the vector (yz x2 )î + (4y z 2 x)ĵ + (2xz 4z)k̂ is solenoidal.
62
LAB 4: Computation of basis and dimension for a vec-
tor space and graphical representation of linear trans-
formation
4.1 Objectives:
Use python
63
4.3 Dimension of Vector Space
Find the dimension of subspace spanned by the vectors (1, 2, 3), (2, 3, 1) and (3, 1, 2).
import numpy as np
Extract the linearly independent rows in given matrix : Basis of Row space
from numpy import *
import sympy as sp
A = [ [1 , -1 ,1 , 1 ] ,[2 , -5 ,2 , 2 ] ,[3 , -3 ,5 , 3 ] ,[4 , -4 ,4 , 4 ] ]
AB = array ( A )
S = shape ( A )
n = len ( A )
for i in range ( n ) :
if AB [i , i ] = = 0 :
ab = copy ( AB )
for k in range ( i +1 , S [ 0 ] ) :
if ab [k , i ] ! = 0 :
ab [i , : ] = AB [k , : ]
ab [k , : ] = AB [i , : ]
AB = copy ( ab )
for j in range ( i +1 , n ) :
Fact = AB [j , i ] / AB [i , i ]
for k in range (i , n ) :
AB [j , k ] = AB [j , k ] - Fact * AB [i , k ]
display ( " REF of given matrix : " , sp . Matrix ( AB ) )
temp = { (0 , 0 , 0 , 0 ) }
result = [ ]
for idx , row in enumerate ( map ( tuple , AB ) ) :
if row not in temp :
result . append ( idx )
print ( " \ n Basis are non - zero rows of A : " )
display ( sp . Matrix ( AB [ result ] ) )
64
4.4 Graphical representation of a transformation
4.4.1 Horizontal stretch:
Represent the horizontal stretch transformation T : R2 ßR2 geometrically
Find the image of vector (10, 0) when it is stretched horizontally by 2 units.
import numpy as np
import matplotlib . pyplot as plt
V = np . array ( [ [ 10 , 0 ] ] )
origin = np . array ( [ [0 , 0 , 0 ] ,[0 , 0 , 0 ] ] ) # origin point
A = np . matrix ( [ [2 , 0 ] ,[0 , 1 ] ] )
V1 = np . matrix ( V )
V2 = A * np . transpose ( V1 )
V2 = np . array ( V2 )
plt . quiver ( * origin , V [ : ,0 ] , V [ : ,1 ] , color = [ 'b '] , scale = 50 )
plt . quiver ( * origin , V2 [0 , : ] , V2 [1 , : ] , color = [ 'r '] , scale = 50 )
plt . show ()
Another example.
from math import pi , sin , cos
65
import matplotlib . pyplot as plt
import numpy as np
A = np . array ( [ [2 , 0 ] ,[0 , 1 ] ] )
A_coords = A@coords
x_LT1 = A_coords [0 , : ]
y_LT1 = A_coords [1 , : ]
# Plot the points . x and y are original vectors , x_LT1 and y_LT1 are
images
ax . plot (x ,y , ' ro ')
ax . plot ( x_LT1 , y_LT1 , ' bo ')
66
4.4.2 Reflection:
Represent the reflection transformation T : R2 ! R2 geometrically.
Find the image of vector (10, 0) when it is reflected about y axis.
import numpy as np
import matplotlib . pyplot as plt
V = np . array ( [ [ 10 , 0 ] ] )
origin = np . array ( [ [0 , 0 , 0 ] ,[0 , 0 , 0 ] ] ) # origin point
A = np . matrix ( [ [ -1 , 0 ] ,[0 , 1 ] ] )
V1 = np . matrix ( V )
V2 = A * np . transpose ( V1 )
V2 = np . array ( V2 )
plt . quiver ( * origin , V [ : ,0 ] , V [ : ,1 ] , color = [ 'b '] , scale = 50 )
plt . quiver ( * origin , V2 [0 , : ] , V2 [1 , : ] , color = [ 'r '] , scale = 50 )
plt . show ()
Another example.
B = np . array ( [ [ -1 , 0 ] ,[0 , 1 ] ] )
B_coords = B@coords
x_LT2 = B_coords [0 , : ]
y_LT2 = B_coords [1 , : ]
# Plot the points . x and y are original vectors , x_LT1 and y_LT1 are
images
ax . plot (x ,y , ' ro ')
ax . plot ( x_LT2 , y_LT2 , ' bo ')
67
ax . axhline ( y =0 , color = " k " , ls = " : " )
ax . grid ( True )
ax . axis ( [ -2 ,2 , -1 , 2 ] )
ax . set_aspect ( ' equal ')
ax . set_title ( " Reflection " ) ;
4.4.3 Rotation:
Represent the rotation transformation T : R2 ! R2 geometrically.
Find the image of vector (10, 0) when it is rotated by ⇡/2 radians.
import numpy as np
import matplotlib . pyplot as plt
V = np . array ( [ [ 10 , 0 ] ] )
origin = np . array ( [ [0 , 0 , 0 ] ,[0 , 0 , 0 ] ] ) # origin point
A = np . matrix ( [ [0 , - 1 ] ,[1 , 1 ] ] )
V1 = np . matrix ( V )
V2 = A * np . transpose ( V1 )
V2 = np . array ( V2 )
plt . quiver ( * origin , V [ : ,0 ] , V [ : ,1 ] , color = [ 'b '] , scale = 50 )
plt . quiver ( * origin , V2 [0 , : ] , V2 [1 , : ] , color = [ 'r '] , scale = 50 )
plt . show ()
68
Another example.
theta = pi / 6
R = np . array ( [ [ cos ( theta ) ,- sin ( theta ) ] ,[ sin ( theta ) , cos ( theta ) ] ] )
R_coords = R@coords
x_LT3 = R_coords [0 , : ]
y_LT3 = R_coords [1 , : ]
# Plot the points . x and y are original vectors , x_LT1 and y_LT1 are
images
ax . plot (x ,y , ' ro ')
ax . plot ( x_LT3 , y_LT3 , ' bo ')
69
4.4.4 Shear Transformation
Represent the Shear transformation T : R2 ! R2 geometrically.
Find the image of (2, 3) under shear transformation.
import numpy as np
import matplotlib . pyplot as plt
V = np . array ( [ [2 , 3 ] ] )
origin = np . array ( [ [0 , 0 , 0 ] ,[0 , 0 , 0 ] ] ) # origin point
A = np . matrix ( [ [1 , 2 ] ,[0 , 1 ] ] )
V1 = np . matrix ( V )
V2 = A * np . transpose ( V1 )
V2 = np . array ( V2 )
print ( " Image of given vectors is : " , V2 )
plt . quiver ( * origin , V [ : ,0 ] , V [ : ,1 ] , color = [ 'b '] , scale = 20 )
plt . quiver ( * origin , V2 [0 , : ] , V2 [1 , : ] , color = [ 'r '] , scale = 20 )
plt . show ()
70
Another example.
S = np . array ( [ [1 , 2 ] ,[0 , 1 ] ] )
S_coords = S@coords
x_LT4 = S_coords [0 , : ]
y_LT4 = S_coords [1 , : ]
# Plot the points . x and y are original vectors , x_LT1 and y_LT1 are
images
ax . plot (x ,y , ' ro ')
ax . plot ( x_LT4 , y_LT4 , ' bo ')
71
4.4.5 Composition
Represent the composition of two 2D transformations.
Find the image of vector (10, 0) when it is rotated by ⇡/2 radians then stretched hori-
zontally 2 units.
import numpy as np
import matplotlib . pyplot as plt
V = np . array ( [ [2 , 3 ] ] )
origin = np . array ( [ [0 , 0 , 0 ] ,[0 , 0 , 0 ] ] ) # origin point
A = np . matrix ( [ [0 , - 1 ] ,[1 , 0 ] ] )
B = np . matrix ( [ [2 , 0 ] ,[0 , 1 ] ] )
V1 = np . matrix ( V )
V2 = A * np . transpose ( V1 )
V3 = B * V2
V2 = np . array ( V2 )
V3 = np . array ( V3 )
print ( " Image of given vectors is : " , V3 )
plt . quiver ( * origin , V [ : ,0 ] , V [ : ,1 ] , color = [ 'b '] , scale = 20 )
plt . quiver ( * origin , V2 [0 , : ] , V2 [1 , : ] , color = [ 'r '] , scale = 20 )
plt . quiver ( * origin , V3 [0 , : ] , V3 [1 , : ] , color = [ 'g '] , scale = 20 )
plt . title ( ' Blue = original , Red = Rotated , Green = Rotated + Streached ')
plt . show ()
72
Another example.
C = np . array ( [ [ - cos ( theta ) , sin ( theta ) ] ,[ sin ( theta ) , cos ( theta ) ] ] )
C_coords = C@coords
x_LT5 = C_coords [0 , : ]
y_LT5 = C_coords [1 , : ]
# Plot the points . x and y are original vectors , x_LT1 and y_LT1 are
images
ax . plot (x ,y , ' ro ')
ax . plot ( x_LT5 , y_LT5 , ' bo ')
73
4.5 Exercise:
1. Verify the rank nullity theorem for the following linear transformation
a) Horizontal stretch
b) Reflection
c) Shear
d) Rotation
74
LAB 5: Computing the inner product and orthogo-
nality
5.1 Objectives:
Use python
# initialize arrays
A = np . array ( [2 , 1 , 5 , 4 ] )
B = np . array ( [3 , 4 , 7 , 8 ] )
# dot product
output = np . dot (A , B )
print ( output )
77
# initialize arrays
A = np . array ( [2 , 1 , 5 , 4 ] )
B = np . array ( [3 , 4 , 7 , 8 ] )
# dot product
output = np . dot (A , B )
print ( ' Inner product is : ' , output )
if output = = 0 :
print ( ' given vectors are orthognal ')
else :
print ( ' given vectors are not orthognal ')
Inner product is : 77
given vectors are not orthognal
75
5.4 Exercise:
1. Find the inner product of (1, 2, 3) and (3, 4, 5).
Ans: 26
76
LAB 6: Solution of algebraic and transcendental equa-
tion by Regula-Falsi and Newton-Raphson method
6.1 Objectives:
Use python
for i in range (1 , N + 1 ) :
c=(a*f(b)-b*f(a))/(f(b)-f(a))
if (( f ( a ) * f ( c ) < 0 ) ) :
b=c
else :
a=c
print ( ' itration % d \ t the root % 0 . 3f \ t function value % 0 . 3f \ n '%
(i ,c , f ( c ) ) ) ;
77
# Regula Falsi method while loop2
from sympy import *
x = Symbol ( 'x ')
g = input ( ' Enter the function ') # % x ^3 - 2 *x - 5 ; % function
f = lambdify (x , g )
a = float ( input ( ' Enter a valus : ') ) # 2
b = float ( input ( ' Enter b valus : ') ) # 3
N = float ( input ( ' Enter tolarence : ') ) # 0 . 001
x=a;
c=b;
i=0
while ( abs ( x - c ) > = N ) :
x=c
c = (( a * f ( b ) - b * f ( a ) ) / ( f ( b ) - f ( a ) ) ) ;
if (( f ( a ) * f ( c ) < 0 ) ) :
b=c
else :
a=c
i=i+1
print ( ' itration % d \ t the root % 0 . 3f \ t function value % 0 . 3f \ n '%
(i ,c , f ( c ) ) ) ;
print ( ' final value of the root is % 0 . 5f '% c )
78
df = lambdify (x , dg )
x0 = float ( input ( ' Enter the intial approximation ') ) ; # x0 = 1
n = int ( input ( ' Enter the number of iterations ') ) ; #n=5;
for i in range (1 , n + 1 ) :
x1 = ( x0 - ( f ( x0 ) / df ( x0 ) ) )
print ( ' itration % d \ t the root % 0 . 3f \ t function value % 0 . 3f \ n '%
(i , x1 , f ( x1 ) ) ) ; # print all
iteration value
x0 = x1
6.4 Exercise:
1. Find a root of the equation 3x = cos x+1, between 0 and 1, by Regula-falsi method.
Perform 5 iterations.
Ans: 0.607
79
LAB 7: Interpolation /Extrapolation using Newton’s
forward and backward di↵erence formula
7.1 Objectives:
Use python
1. to interpolate using Newton’s Forward interpolation method.
for i in range (0 , n ) :
print ( '% 0 . 2f ' % ( x [ i ] ) , end = ' ')
for j in range (0 , n - i ) :
print ( '\ t \ t % 0 . 2f ' % ( y [ i ] [ j ] ) , end = ' ')
print ()
# obtaining the polynomial
t = symbols ( 't ')
f = [ ] # f is a list type data
p=(t-x[0])/(x[1]-x[0])
f . append ( p )
for i in range (1 , n - 1 ) :
f . append ( f [ i - 1 ] * ( p - i ) / ( i + 1 ) )
poly = y [ 0 ] [ 0 ]
for i in range ( n - 1 ) :
poly = poly + y [ 0 ] [ i + 1 ] * f [ i ]
80
simp_poly = simplify ( poly )
print ( '\ nTHE INTERPOLATING POLYNOMIAL IS \ n ') ;
pprint ( simp_poly )
# if you want to interpolate at some point the next session will help
inter = input ( ' Do you want to interpolate at a point ( y / n ) ? ') # y
if inter = = 'y ':
a = float ( input ( ' enter the point ') ) # 2
interpol = lambdify (t , simp_poly )
result = interpol ( a )
print ( '\ nThe value of the function at ' ,a , ' is \ n ' , result ) ;
81
print ( ' Enter data for x and y : ')
for i in range ( n ) :
x [ i ] = float ( input ( 'x [ '+ str ( i ) + ' ]= ') )
y [ i ] [ 0 ] = float ( input ( 'y [ '+ str ( i ) + ' ]= ') )
for i in range (0 , n ) :
print ( '% 0 . 2f ' % ( x [ i ] ) , end = ' ')
for j in range (0 , i + 1 ) :
print ( '\ t % 0 . 2f ' % ( y [ i ] [ j ] ) , end = ' ')
print ()
p=(t-x[n-1])/(x[1]-x[0])
f . append ( p )
for i in range (1 , n - 1 ) :
f . append ( f [ i - 1 ] * ( p + i ) / ( i + 1 ) )
poly = y [ n - 1 ] [ 0 ]
print ( poly )
for i in range ( n - 1 ) :
poly = poly + y [ n - 1 ] [ i + 1 ] * f [ i ]
simp_poly = simplify ( poly )
print ( '\ nTHE INTERPOLATING POLYNOMIAL IS \ n ') ;
pprint ( simp_poly )
# if you want to interpolate at some point the next session will help
inter = input ( ' Do you want to interpolate at a point ( y / n ) ? ')
if inter = = 'y ':
a = float ( input ( ' enter the point ') )
interpol = lambdify (t , simp_poly )
result = interpol ( a )
print ( '\ nThe value of the function at ' ,a , ' is \ n ' , result ) ;
82
7.2 Exercise:
1. Obtain the interpolating polynomial for the following data
x: 0 1 2 3
y: 1 2 1 10
Ans: 2x3 7x2 + 6x + 1
2. Find the number of men getting wage Rs. 100 from the following table:
wage: 50 150 250 350
No. of men: 9 30 35 42
Ans: 23 men
3. Using Newton’s backward interpolation method obtain y(160) for the following data
x: 100 150 200 250 300
y: 10 13 15 17 18
Ans: 13.42
4. Using Newtons forward interpolation polynomial and calculate y(1) and y(10).
x: 3 4 5 6 7 8 9
y: 4.8 8.4 14.5 23.6 36.2 52.8 73.9
Ans: 3.1 and 100
83
LAB 8: Computation of area under the curve using
rd th
Trapezoidal, Simpson’s 13 and Simpsons 38 rule
8.1 Objectives:
Use python
1. to find area under the curve represented by a given function using Trapezoidal rule.
1 rd
2. to find area under the curve represented by a given function using Simpson’s 3
rule.
3 th
3. to find area under the curve represented by a given function using Simpson’s 8
rule.
4. to find the area below the curve when discrete points on the curve are given.
# Input section
lower_limit = float ( input ( " Enter lower limit of integration : " ) )
upper_limit = float ( input ( " Enter upper limit of integration : " ) )
sub_interval = int ( input ( " Enter number of sub intervals : " ) )
# Print result
print ( " Integration result by Trapezoidal method is : " , result )
84
1 rd
8.3 Simpson’s 3 Rule
R5 1
Evaluate 1+x2
.
0
# Definition of the function to integrate
def my_func ( x ) :
return 1 / ( 1 + x ** 2 )
def simpson13 ( x0 , xn , n ) :
h = ( xn - x0 ) / n # calculating step size
# Finding sum
integration = ( my_func ( x0 ) + my_func ( xn ) )
k = x0
for i in range (1 , n ) :
if i % 2 = = 0 :
integration = integration + 4 * my_func ( k )
else :
integration = integration + 2 * my_func ( k )
k += h
# Finding final integration value
integration = integration * h * ( 1 / 3 )
return integration
# Input section
lower_limit = float ( input ( " Enter lower limit of integration : " ) )
upper_limit = float ( input ( " Enter upper limit of integration : " ) )
sub_interval = int ( input ( " Enter number of sub intervals : " ) )
85
h = (b - a) / n
s = f(a) + f(b)
for i in range (1 , n , 3 ) :
s += 3 * f(a + i * h)
for i in range (3 , n -1 , 3 ) :
s += 3 * f(a + i * h)
for i in range (2 , n -2 , 3 ) :
s += 2 * f(a + i * h)
return s * 3 * h / 8
def f ( x ) :
return 1 / ( 1 + x ** 2 ) # function here
a = 0 # lower limit
b = 6 # upper limit
n = 6 # number of sub intervals
result = simpsons_3_8_rule (f , a , b , n )
print ( '% 3 . 5f '% result )
1.27631
8.5 Exercise:
Z1
x2 1
1. Evaluate the integral 3
dx using Simpson’s rule.
1+x 3
0
Ans: 0.23108
Z0.6
3 x2
2. Use Simpson’s rule to find e dx by taking seven ordinates.
8
0
Ans: 0.5351
Z⇡
3. Evaluate using trapezoidal rule sin2 xdx. Take n = 6.
0
Ans: ⇡/2
4. A solid of revolution is formed by rotating about the x-axis, the area between the
x-axis, the lines x = 0 and x = 1, and a curve through the points with the following
co-ordinates:
x y
0.00 1.0000
0.25 0.9896
0.50 0.9589
0.75 0.9089
1.00 0.8415
86
1
Estimate the volume of the solid formed using Simpson’s rd rule. Hint: Required
R1 2 3
volume is 0 y ⇤ ⇡dx. **[Ans: 2.8192]**
5. The velocity v(km/min) of a moped which starts from rest, is given at fixed intervals
of time t(min) as follows:
t: 2 4 6 8 10 12 14 16 18 20
v: 10 18 25 29 32 20 11 5 2 0
Estimate approximately the distance covered in twenty minutes.
Answer for 5.
We know that ds/dt=v. So to get distance (s) we have to integrate.
Here h = 2.2, v0 = 0, v1 = 10, v2 = 18, v3 = 25 etc.
# we shall use simpson 's 1 / 3 rule directly to estimate
h=2
y = [0 , 10 ,18 , 25 , 29 , 32 ,20 , 11 ,5 ,2 , 0 ]
result = ( h / 3 ) * (( y [ 0 ] + y [ 10 ] ) + 4 * ( y [ 1 ] + y [ 3 ] + y [ 5 ] + y [ 7 ] + y [ 9 ] ) + 2 * ( y [ 2 ] + y [ 4 ] + y [
6]+y[8]))
309.33333 km.
87
LAB 9: Solution of ODE of first order and first degree
by Taylor’s series and Modified Euler’s method
9.1 Objectives:
Use python
88
D[0] = [ 2 * y [ 0 ] + 3 * exp ( x ) ]
D[1] = [ 4 * y [ 0 ] + 9 * exp ( x ) ]
D[2] = [ 8 * y [ 0 ] + 21 * exp ( x ) ]
D[3] = [ 16 * y [ 0 ] + 45 * exp ( x ) ]
return D
89
return D
# Define parameters
f = lambda x , y : np . exp ( - x ) # ODE
h = 0 . 2 # Step size
y0 = - 1 # Initial Condition
n=3
# Explicit Euler Method
y [ 0 ] = y0
x[0]=0
for i in range (0 , n ) :
x[i+1]=x[i]+h
y[i + 1] = y[i] + h*f(x[i], y[i])
90
The required values are at x= 0.00, y=-1.00000, x=0.20, y=-0.80000,
x = 0.40, y=-0.63625,x = 0.60, y=-0.50219
Solve: y 0 = 2y + x3 e 2x
with y(0) = 1 using Euler’s method at x = 0.1, 0.2.
import numpy as np
import matplotlib . pyplot as plt
# Define parameters
f = lambda x , y : - 2 * y + ( x ** 3 ) * np . exp ( - 2 * x ) # ODE
h = 0 . 1 # Step size
y0 = 1 # Initial Condition
n=2
# Explicit Euler Method
y [ 0 ] = y0
x[0]=0
for i in range (0 , n ) :
x[i+1]=x[i]+h
y[i + 1] = y[i] + h*f(x[i], y[i])
plt . plot (x , y , 'bo - - ' , label = " Approximate ( Euler 's method ) " )
91
The required values are at x= 0.00, y=1.00000, x=0.10, y=0.80000,
x=0.20, y=0.64008
def modified_euler (f , x0 , y0 , h , n ) :
x = np . zeros ( n + 1 )
y = np . zeros ( n + 1 )
x [ 0 ] = x0
y [ 0 ] = y0
for i in range ( n ) :
x[i+1] = x[i] + h
k1 = h * f ( x [ i ] , y [ i ] )
k2 = h * f ( x [ i + 1 ] , y [ i ] + k1 )
y [ i + 1 ] = y [ i ] + 0 . 5 * ( k1 + k2 )
return x , y
92
def f (x , y ) :
return - 0 . 01 * y # ODE dy / dx = - ky
x0 = 0 . 0
y0 = 100 . 0
h = 25
n = 4
x , y = modified_euler (f , x0 , y0 , h , n )
9.5 Exercise:
1. Find y(0.1) by Taylor Series exapnsion when y 0 = x y 2 , y(0) = 1.
Ans: y(0.1) = 0.9138
93
3. Evaluate by modified Euler’s method: y 0 = ln(x + y), y(0) = 2 at x = 0(0.2)0.8.
Ans: 2.0656, 2.1416, 2.2272, 2.3217
94
LAB 10: Solution of ODE of first order and first de-
gree by Runge-Kutta 4th order method and Milne’s
predictor and corrector method
10.1 Objectives:
1. To write a python program to solve first order di↵erential equation using 4th order
Runge Kutta method.
2. To write a python program to solve first order di↵erential equation using Milne’s
predictor and corrector method.
95
y1 = 2 . 2156
y2 = 2 . 4649
y3 = 2 . 7514
h=0.1
x1 = x0 + h
x2 = x1 + h
x3 = x2 + h
x4 = x3 + h
def f (x , y ) :
return x ** 2 + ( y / 2 )
y10 = f ( x0 , y0 )
y11 = f ( x1 , y1 )
y12 = f ( x2 , y2 )
y13 = f ( x3 , y3 )
y4p = y0 + ( 4 * h / 3 ) * ( 2 * y11 - y12 + 2 * y13 )
print ( ' predicted value of y4 is % 3 . 3f '% y4p )
y14 = f ( x4 , y4p ) ;
for i in range (1 , 4 ) :
y4 = y2 + ( h / 3 ) * ( y14 + 4 * y13 + y12 ) ;
print ( ' corrected value of y4 after \ t iteration %d is \ t % 3 . 5f \ t '%
(i , y4 ) )
y14 = f ( x4 , y4 ) ;
In the next program, function will take all the inputs from the user and display the
answer.
Apply Milne’s predictor and corrector method to solve dy/dx = x2 + (y/2) at y(1.4).
Given that y(1)=2, y(1.1)=2.2156, y(1.2)=2.4649, y(1.3)=2.7514. Use corrector formula
thrice.
from sympy import *
def Milne (g , x0 ,h , y0 , y1 , y2 , y3 ) :
x , y = symbols ( 'x , y ')
f = lambdify ( [x , y ] ,g )
x1 = x0 + h
x2 = x1 + h
x3 = x2 + h
x4 = x3 + h
y10 = f ( x0 , y0 )
y11 = f ( x1 , y1 )
y12 = f ( x2 , y2 )
y13 = f ( x3 , y3 )
y4p = y0 + ( 4 * h / 3 ) * ( 2 * y11 - y12 + 2 * y13 )
print ( ' predicted value of y4 ' , y4p )
y14 = f ( x4 , y4p )
for i in range (1 , 4 ) :
y4 = y2 + ( h / 3 ) * ( y14 + 4 * y13 + y12 )
print ( ' corrected value of y4 , iteration % d '%i , y4 )
96
y14 = f ( x4 , y4 )
Milne ( 'x ** 2 + y / 2 ' ,1 , 0 .1 ,2 , 2 . 2156 , 2 . 4649 , 2 . 7514 )
Apply Milne’s predictor and corrector method to solve dy/dx = x y 2 , y(0)=2 obtain
y(0.8). Take h=0.2. Use Runge-Kutta method to calculate required initial values.
Y = RungeKutta ( 'x - y ** 2 ' ,0 , 0 .2 ,0 , 0 . 8 )
print ( 'y values from Runge - Kutta method : ' ,Y )
Milne ( 'x - y ** 2 ' ,0 , 0 .2 , Y [ 0 ] ,Y [ 1 ] ,Y [ 2 ] ,Y [ 3 ] )
y values from Runge -Kutta method: [0. 0.02 0.08 0.18 0.3 ]
predicted value of y4 0.3042133333333334
corrected value of y4 , iteration 1 0.3047636165214815
corrected value of y4 , iteration 2 0.3047412758696499
corrected value of y4 , iteration 3 0.3047421836520892
10.4 Exercise:
1. Find y(0.1) by Runge Kutta method when y 0 = x y 2 , y(0) = 1.
Ans: y(0.1) = 0.91379
97
LAB 1: Programme to compute area, volume and cen-
ter of gravity
1.1 Objectives:
Use python
2. integrate:
integrate ( function ,( variable , min_limit , max_limit ) )
1/3
Example 2:
R3 3R x 3 Rx y
Evaluate the integral (xyz)dzdydx
0 0 0
from sympy import *
x = Symbol ( 'x ')
y = Symbol ( 'y ')
z = Symbol ( 'z ')
w2 = integrate (( x * y * z ) ,(z ,0 , 3 - x - y ) ,(y ,0 , 3 - x ) ,(x ,0 , 3 ) )
print ( w2 )
81/80
99
Example 3:
RR 2 RR 2
Prove that (x + y 2 )dydx = (x + y 2 )dxdy
from sympy import *
x = Symbol ( 'x ')
y = Symbol ( 'y ')
z = Symbol ( 'z ')
w3 = integrate ( x ** 2 + y ** 2 ,y , x )
pprint ( w3 )
w4 = integrate ( x ** 2 + y ** 2 ,x , y )
pprint ( w4 )
Example 4:
p
Ra (b/a) R a2 x2
Find the area of an ellipse by double integration. A=4 dydx
0 0
from sympy import *
x = Symbol ( 'x ')
y = Symbol ( 'y ')
# a = Symbol ( ' a ')
# b = Symbol ( ' b ')
a=4
b=6
w3 = 4 * integrate (1 ,( y ,0 ,( b / a ) * sqrt ( a ** 2 - x ** 2 ) ) ,(x ,0 , a ) )
print ( w3 )
24.0*pi
RR
1.4 Area of the region R in the polar form is rdrd✓
R
Example 5:
Find the area of the cardioid r = a(1 + cos✓) by double integration
from sympy import *
r = Symbol ( 'r ')
t = Symbol ( 't ')
a = Symbol ( 'a ')
#a=4
100
RRR
1.5 Volume of a solid is given by dxdydz
V
Example 6:
Find the volume of the tetrahedron bounded by the planes x=0,y=0 and z=0, xa + yb + zc = 1
from sympy import *
x = Symbol ( 'x ')
y = Symbol ( 'y ')
z = Symbol ( 'z ')
a = Symbol ( 'a ')
b = Symbol ( 'b ')
c = Symbol ( 'c ')
w2 = integrate (1 ,( z ,0 , c * ( 1 - x / a - y / b ) ) ,(y ,0 , b * ( 1 - x / a ) ) ,(x ,0 , a ) )
print ( w2 )
a*b*c/6
rad = np . arange (0 , ( 2 * np . pi ) , 0 . 01 )
5*a/6
101
1.7 Exercise:
R1 Rx
1. Evaluate (x + y)dydx
0 0
Ans: 0.5
log(2)
R Rx x+log(y)
R
2. Find the (ex+y+z )dzdydx
0 0 0
Ans: -0.2627
4. Find the volume of the tetrahedron bounded by the planes x=0,y=0 and z=0,
x
2
+ y3 + z4 = 1
Ans: 4
102
LAB 2: Evaluation of improper integrals, Beta and
Gamma functions
2.1 Objectives:
Use python
1. to evaluate improper integrals using Beta function.
2. to evaluate improper integrals using Gamma function.
Parameters :
x : The number whose gamma value needs to be computed.
2. beta
math . beta (x , y )
Parameters :
x ,y: The numbers whose beta value needs to be computed.
3. Note: We can evaluate improper integral involving infinity by using inf.
Example 1:
R1
Evaluate e x dx.
0
from sympy import *
x = symbols ( 'x ')
w1 = integrate ( exp ( - x ) ,(x ,0 , float ( ' inf ') ) )
print ( simplify ( w1 ) )
1
R1
Gamma function is x(n) = 0
e x xn 1 dx
Example 2:
Evaluate (5) by using definition
from sympy import *
x = symbols ( 'x ')
w1 = integrate ( exp ( - x ) * x ** 4 ,( x ,0 , float ( ' inf ') ) )
print ( simplify ( w1 ) )
24
103
Example 3:
R1 st
Evaluate e cos(4t)dt . That is Laplace transform of cos(4t)
0
from sympy import *
t , s = symbols ( 't , s ')
# for infinity in sympy we use oo
w1 = integrate ( exp ( - s * t ) * cos ( 4 * t ) ,(t ,0 , oo ) )
display ( simplify ( w1 ) )
Example 4:
Find Beta(3,5), Gamma(5)
# beta and gamma functions
from sympy import beta , gamma
m = input ( 'm : ') ;
n = input ( 'n : ') ;
m = float ( m ) ;
n = float ( n ) ;
s = beta (m , n ) ;
t = gamma ( n )
print ( ' gamma ( ' ,n , ') is % 3 . 3f '% t )
print ( ' Beta ( ' ,m ,n , ') is % 3 . 3f '% s )
m :3
n :5
gamma ( 5.0 ) is 24.000
Beta ( 3.0 5.0 ) is 0.010
Example 5:
Calculate Beta(5/2,7/2) and Gamma(5/2).
# beta and gamma functions
# If the number is a fraction give it in decimals . Eg 5 / 2 = 2 . 5
from sympy import beta , gamma
m = float ( input ( 'm : ') ) ;
n = float ( input ( 'n : ') ) ;
s = beta (m , n ) ;
t = gamma ( n )
print ( ' gamma ( ' ,n , ') is % 3 . 3f '% t )
print ( ' Beta ( ' ,m ,n , ') is % 3 . 3f '% s )
104
m : 2.5
n :3.5
gamma ( 3.5 ) is 3.323
Beta ( 2.5 3.5 ) is 0.037
Example 6:
Verify that Beta(m, n) = Gamma(m)Gamma(n)/Gamma(m + n) for m=5 and n=7
from sympy import beta , gamma
m=5;
n=7;
m = float ( m ) ;
n = float ( n ) ;
s = beta (m , n ) ;
t = ( gamma ( m ) * gamma ( n ) ) / gamma ( m + n ) ;
print (s , t )
if ( abs ( s - t ) < = 0 . 00001 ) :
print ( ' beta and gamma are related ')
else :
print ( ' given values are wrong ')
0.000432900432900433 0.000432900432900433
beta and gamma are related
2.2 Exercise:
R1
1. Evaluate e t cos(2t)dt
0
Ans: 1/5
105
LAB 3: Finding gradient, divergent, curl and their
geometrical interpretation
1.1 Objectives:
Use python
1.2 Method I:
To find gradient of = x2 y + 2xz 4.
# To find gradient of scalar point function .
from sympy . vector import *
from sympy import symbols
N = CoordSys3D ( 'N ') # Setting the coordinate system
x ,y , z = symbols ( 'x y z ')
A = N . x ** 2 * N . y + 2 * N . x * N . z - 4 # Variables x ,y , z to be used with coordinate
system N
delop = Del () # Del operator
display ( delop ( A ) ) # Del operator applied to A
gradA = gradient ( A ) # Gradient function is used
print ( f " \ n Gradient of { A } is \ n " )
display ( gradA )
106
To find curl of F~ = x2 yz î + y 2 zxĵ + z 2 xy k̂
# To find curl of a vector point function
from sympy . vector import *
from sympy import symbols
N = CoordSys3D ( 'N ')
x ,y , z = symbols ( 'x y z ')
A = N . x ** 2 * N . y * N . z * N . i + N . y ** 2 * N . z * N . x * N . j + N . z ** 2 * N . x * N . y * N . k
delop = Del ()
curlA = delop . cross ( A )
display ( curlA )
107
To find divergence of F~ = x2 y î + yz 2 ĵ + x2 z k̂.
# To find divergence of F = x ^ 2yi + yz ^ 2j + x ^ 2zk
from sympy . physics . vector import *
from sympy import var
var ( 'x ,y , z ')
v = ReferenceFrame ( 'v ')
F = v [ 0 ] ** 2 * v [ 1 ] * v . x + v [ 1 ] * v [ 2 ] ** 2 * v . y + v [ 0 ] ** 2 * v [ 2 ] * v . z
G = divergence (F , v )
F = F . subs ( [ ( v [ 0 ] ,x ) ,( v [ 1 ] ,y ) ,( v [ 2 ] ,z ) ] )
print ( " Given vector point function is " )
display ( F )
G = G . subs ( [ ( v [ 0 ] ,x ) ,( v [ 1 ] ,y ) ,( v [ 2 ] ,z ) ] )
print ( " Divergence of F = " )
display ( G )
G = G . subs ( [ ( v [ 0 ] ,x ) ,( v [ 1 ] ,y ) ,( v [ 2 ] ,z ) ] )
print ( " curl of F = " )
display ( G )
108
1.4 Exercise:
1. If u = x + y + z, v = x2 + y 2 + z 2 , w = yz + zx + xy, find gradu, gradv and gradw.
Ans: î + ĵ + k̂, 2(xî + y ĵ + z k̂), (y + z)î + (z + x)ĵ + (z + x)k̂.
2. Evaluate divF and curlF at the point (1,2,3), given that F~ = x2 yz î+xy 2 z ĵ +xyz 2 k̂.
Ans: 6xyz, x(z 2 y 2 )î + y(x2 z 2 )ĵ + z(y 2 x2 )k̂.
3. Prove that the vector (yz x2 )î + (4y z 2 x)ĵ + (2xz 4z)k̂ is solenoidal.
109
LAB 4: Verification of Green’s theorem
1.1 Objectives:
Use python
1. to evaluate integrals using Green’s theorem.
I= -1
H
2. Using Green’s theorem, evaluate [(xy + y 2 )dx + x2 dy], where c is the closed curve
c
bounded by y = x and y = x2 .
from sympy import *
var ( 'x , y ')
p = x * y + y ** 2
q = x ** 2
f = diff (q , x ) - diff (p , y )
soln = integrate (f , [y , x ** 2 , x ] ,[x ,0 , 1 ] )
print ( " I = " , soln )
I= -1/20
1.3 Exercise:
H
1. Using Green’s theorem, evaluate [(3x + 4y)dx + (2x 3y)dy], where c is the
c
boundary of the circle x2 + y 2 = 4.
Ans: 8⇡
110
LAB 5: Solution of Lagrange’s linear partial di↵eren-
tial equations
1.1 Objectives:
Use python
@z @z
Solve the PDE 2p + 3q = 1, where p = @x
and p = @y
from sympy . solvers . pde import pdsolve
from sympy import Function , Eq , cot , classify_pde , pprint
from sympy . abc import x , y , a
f = Function ( 'f ')
z = f (x , y )
zx = z . diff ( x )
zy = z . diff ( y )
# Solve 2p + 3q = 1
eq = Eq ( 2 * zx + 3 * zy , 1 )
pprint ( eq )
print ( " \ n " )
soln = pdsolve ( eq , z )
pprint ( soln )
111
@z @z
Solve the PDE x2 p + y 2 q = (x + y)z, where p = @x
and p = @y
from sympy . solvers . pde import pdsolve
from sympy import Function , Eq , cot , classify_pde , pprint
from sympy . abc import x , y , a
f = Function ( 'f ')
z = f (x , y )
zx = z . diff ( x )
zy = z . diff ( y )
# Solve x ^ 2p + y ^ 2q =( x + y ) z
eq = Eq ( x ** 2 * zx + y ** 2 * zy ,( x + y ) * z )
pprint ( eq )
1.2 Exercise:
1. Solve y 2 p + x2 q = y 2 x
Ans: z = x2 /2 + F (y 3 x3 )
2. Solve xp + yq = 3z
Ans: z = x3 F (y/x)
112
LAB 6: Solution of algebraic and transcendental equa-
tion by Regula-Falsi and Newton-Raphson method
6.1 Objectives:
Use python
for i in range (1 , N + 1 ) :
c=(a*f(b)-b*f(a))/(f(b)-f(a))
if (( f ( a ) * f ( c ) < 0 ) ) :
b=c
else :
a=c
print ( ' itration % d \ t the root % 0 . 3f \ t function value % 0 . 3f \ n '%
(i ,c , f ( c ) ) ) ;
113
# Regula Falsi method while loop2
from sympy import *
x = Symbol ( 'x ')
g = input ( ' Enter the function ') # % x ^3 - 2 *x - 5 ; % function
f = lambdify (x , g )
a = float ( input ( ' Enter a valus : ') ) # 2
b = float ( input ( ' Enter b valus : ') ) # 3
N = float ( input ( ' Enter tolarence : ') ) # 0 . 001
x=a;
c=b;
i=0
while ( abs ( x - c ) > = N ) :
x=c
c = (( a * f ( b ) - b * f ( a ) ) / ( f ( b ) - f ( a ) ) ) ;
if (( f ( a ) * f ( c ) < 0 ) ) :
b=c
else :
a=c
i=i+1
print ( ' itration % d \ t the root % 0 . 3f \ t function value % 0 . 3f \ n '%
(i ,c , f ( c ) ) ) ;
print ( ' final value of the root is % 0 . 5f '% c )
114
df = lambdify (x , dg )
x0 = float ( input ( ' Enter the intial approximation ') ) ; # x0 = 1
n = int ( input ( ' Enter the number of iterations ') ) ; #n=5;
for i in range (1 , n + 1 ) :
x1 = ( x0 - ( f ( x0 ) / df ( x0 ) ) )
print ( ' itration % d \ t the root % 0 . 3f \ t function value % 0 . 3f \ n '%
(i , x1 , f ( x1 ) ) ) ; # print all
iteration value
x0 = x1
6.4 Exercise:
1. Find a root of the equation 3x = cos x+1, between 0 and 1, by Regula-falsi method.
Perform 5 iterations.
Ans: 0.607
115
LAB 7: Interpolation /Extrapolation using Newton’s
forward and backward di↵erence formula
7.1 Objectives:
Use python
1. to interpolate using Newton’s Forward interpolation method.
for i in range (0 , n ) :
print ( '% 0 . 2f ' % ( x [ i ] ) , end = ' ')
for j in range (0 , n - i ) :
print ( '\ t \ t % 0 . 2f ' % ( y [ i ] [ j ] ) , end = ' ')
print ()
# obtaining the polynomial
t = symbols ( 't ')
f = [ ] # f is a list type data
p=(t-x[0])/(x[1]-x[0])
f . append ( p )
for i in range (1 , n - 1 ) :
f . append ( f [ i - 1 ] * ( p - i ) / ( i + 1 ) )
poly = y [ 0 ] [ 0 ]
for i in range ( n - 1 ) :
poly = poly + y [ 0 ] [ i + 1 ] * f [ i ]
116
simp_poly = simplify ( poly )
print ( '\ nTHE INTERPOLATING POLYNOMIAL IS \ n ') ;
pprint ( simp_poly )
# if you want to interpolate at some point the next session will help
inter = input ( ' Do you want to interpolate at a point ( y / n ) ? ') # y
if inter = = 'y ':
a = float ( input ( ' enter the point ') ) # 2
interpol = lambdify (t , simp_poly )
result = interpol ( a )
print ( '\ nThe value of the function at ' ,a , ' is \ n ' , result ) ;
117
print ( ' Enter data for x and y : ')
for i in range ( n ) :
x [ i ] = float ( input ( 'x [ '+ str ( i ) + ' ]= ') )
y [ i ] [ 0 ] = float ( input ( 'y [ '+ str ( i ) + ' ]= ') )
for i in range (0 , n ) :
print ( '% 0 . 2f ' % ( x [ i ] ) , end = ' ')
for j in range (0 , i + 1 ) :
print ( '\ t % 0 . 2f ' % ( y [ i ] [ j ] ) , end = ' ')
print ()
p=(t-x[n-1])/(x[1]-x[0])
f . append ( p )
for i in range (1 , n - 1 ) :
f . append ( f [ i - 1 ] * ( p + i ) / ( i + 1 ) )
poly = y [ n - 1 ] [ 0 ]
print ( poly )
for i in range ( n - 1 ) :
poly = poly + y [ n - 1 ] [ i + 1 ] * f [ i ]
simp_poly = simplify ( poly )
print ( '\ nTHE INTERPOLATING POLYNOMIAL IS \ n ') ;
pprint ( simp_poly )
# if you want to interpolate at some point the next session will help
inter = input ( ' Do you want to interpolate at a point ( y / n ) ? ')
if inter = = 'y ':
a = float ( input ( ' enter the point ') )
interpol = lambdify (t , simp_poly )
result = interpol ( a )
print ( '\ nThe value of the function at ' ,a , ' is \ n ' , result ) ;
118
7.2 Exercise:
1. Obtain the interpolating polynomial for the following data
x: 0 1 2 3
y: 1 2 1 10
Ans: 2x3 7x2 + 6x + 1
2. Find the number of men getting wage Rs. 100 from the following table:
wage: 50 150 250 350
No. of men: 9 30 35 42
Ans: 23 men
3. Using Newton’s backward interpolation method obtain y(160) for the following data
x: 100 150 200 250 300
y: 10 13 15 17 18
Ans: 13.42
4. Using Newtons forward interpolation polynomial and calculate y(1) and y(10).
x: 3 4 5 6 7 8 9
y: 4.8 8.4 14.5 23.6 36.2 52.8 73.9
Ans: 3.1 and 100
119
LAB 8: Computation of area under the curve using
rd th
Trapezoidal, Simpson’s 13 and Simpsons 38 rule
8.1 Objectives:
Use python
1. to find area under the curve represented by a given function using Trapezoidal rule.
1 rd
2. to find area under the curve represented by a given function using Simpson’s 3
rule.
3 th
3. to find area under the curve represented by a given function using Simpson’s 8
rule.
4. to find the area below the curve when discrete points on the curve are given.
# Input section
lower_limit = float ( input ( " Enter lower limit of integration : " ) )
upper_limit = float ( input ( " Enter upper limit of integration : " ) )
sub_interval = int ( input ( " Enter number of sub intervals : " ) )
# Print result
print ( " Integration result by Trapezoidal method is : " , result )
120
1 rd
8.3 Simpson’s 3 Rule
R5 1
Evaluate 1+x2
.
0
# Definition of the function to integrate
def my_func ( x ) :
return 1 / ( 1 + x ** 2 )
def simpson13 ( x0 , xn , n ) :
h = ( xn - x0 ) / n # calculating step size
# Finding sum
integration = ( my_func ( x0 ) + my_func ( xn ) )
k = x0
for i in range (1 , n ) :
if i % 2 = = 0 :
integration = integration + 4 * my_func ( k )
else :
integration = integration + 2 * my_func ( k )
k += h
# Finding final integration value
integration = integration * h * ( 1 / 3 )
return integration
# Input section
lower_limit = float ( input ( " Enter lower limit of integration : " ) )
upper_limit = float ( input ( " Enter upper limit of integration : " ) )
sub_interval = int ( input ( " Enter number of sub intervals : " ) )
121
h = (b - a) / n
s = f(a) + f(b)
for i in range (1 , n , 3 ) :
s += 3 * f(a + i * h)
for i in range (3 , n -1 , 3 ) :
s += 3 * f(a + i * h)
for i in range (2 , n -2 , 3 ) :
s += 2 * f(a + i * h)
return s * 3 * h / 8
def f ( x ) :
return 1 / ( 1 + x ** 2 ) # function here
a = 0 # lower limit
b = 6 # upper limit
n = 6 # number of sub intervals
result = simpsons_3_8_rule (f , a , b , n )
print ( '% 3 . 5f '% result )
1.27631
8.5 Exercise:
Z1
x2 1
1. Evaluate the integral 3
dx using Simpson’s rule.
1+x 3
0
Ans: 0.23108
Z0.6
3 x2
2. Use Simpson’s rule to find e dx by taking seven ordinates.
8
0
Ans: 0.5351
Z⇡
3. Evaluate using trapezoidal rule sin2 xdx. Take n = 6.
0
Ans: ⇡/2
4. A solid of revolution is formed by rotating about the x-axis, the area between the
x-axis, the lines x = 0 and x = 1, and a curve through the points with the following
co-ordinates:
x y
0.00 1.0000
0.25 0.9896
0.50 0.9589
0.75 0.9089
1.00 0.8415
122
1
Estimate the volume of the solid formed using Simpson’s rd rule. Hint: Required
R1 2 3
volume is 0 y ⇤ ⇡dx. **[Ans: 2.8192]**
5. The velocity v(km/min) of a moped which starts from rest, is given at fixed intervals
of time t(min) as follows:
t: 2 4 6 8 10 12 14 16 18 20
v: 10 18 25 29 32 20 11 5 2 0
Estimate approximately the distance covered in twenty minutes.
Answer for 5.
We know that ds/dt=v. So to get distance (s) we have to integrate.
Here h = 2.2, v0 = 0, v1 = 10, v2 = 18, v3 = 25 etc.
# we shall use simpson 's 1 / 3 rule directly to estimate
h=2
y = [0 , 10 ,18 , 25 , 29 , 32 ,20 , 11 ,5 ,2 , 0 ]
result = ( h / 3 ) * (( y [ 0 ] + y [ 10 ] ) + 4 * ( y [ 1 ] + y [ 3 ] + y [ 5 ] + y [ 7 ] + y [ 9 ] ) + 2 * ( y [ 2 ] + y [ 4 ] + y [
6]+y[8]))
309.33333 km.
123
LAB 9: Solution of ODE of first order and first degree
by Taylor’s series and Modified Euler’s method
9.1 Objectives:
Use python
124
D[0] = [ 2 * y [ 0 ] + 3 * exp ( x ) ]
D[1] = [ 4 * y [ 0 ] + 9 * exp ( x ) ]
D[2] = [ 8 * y [ 0 ] + 21 * exp ( x ) ]
D[3] = [ 16 * y [ 0 ] + 45 * exp ( x ) ]
return D
125
return D
# Define parameters
f = lambda x , y : np . exp ( - x ) # ODE
h = 0 . 2 # Step size
y0 = - 1 # Initial Condition
n=3
# Explicit Euler Method
y [ 0 ] = y0
x[0]=0
for i in range (0 , n ) :
x[i+1]=x[i]+h
y[i + 1] = y[i] + h*f(x[i], y[i])
126
The required values are at x= 0.00, y=-1.00000, x=0.20, y=-0.80000,
x = 0.40, y=-0.63625,x = 0.60, y=-0.50219
Solve: y 0 = 2y + x3 e 2x
with y(0) = 1 using Euler’s method at x = 0.1, 0.2.
import numpy as np
import matplotlib . pyplot as plt
# Define parameters
f = lambda x , y : - 2 * y + ( x ** 3 ) * np . exp ( - 2 * x ) # ODE
h = 0 . 1 # Step size
y0 = 1 # Initial Condition
n=2
# Explicit Euler Method
y [ 0 ] = y0
x[0]=0
for i in range (0 , n ) :
x[i+1]=x[i]+h
y[i + 1] = y[i] + h*f(x[i], y[i])
plt . plot (x , y , 'bo - - ' , label = " Approximate ( Euler 's method ) " )
127
The required values are at x= 0.00, y=1.00000, x=0.10, y=0.80000,
x=0.20, y=0.64008
def modified_euler (f , x0 , y0 , h , n ) :
x = np . zeros ( n + 1 )
y = np . zeros ( n + 1 )
x [ 0 ] = x0
y [ 0 ] = y0
for i in range ( n ) :
x[i+1] = x[i] + h
k1 = h * f ( x [ i ] , y [ i ] )
k2 = h * f ( x [ i + 1 ] , y [ i ] + k1 )
y [ i + 1 ] = y [ i ] + 0 . 5 * ( k1 + k2 )
return x , y
128
def f (x , y ) :
return - 0 . 01 * y # ODE dy / dx = - ky
x0 = 0 . 0
y0 = 100 . 0
h = 25
n = 4
x , y = modified_euler (f , x0 , y0 , h , n )
9.5 Exercise:
1. Find y(0.1) by Taylor Series exapnsion when y 0 = x y 2 , y(0) = 1.
Ans: y(0.1) = 0.9138
129
3. Evaluate by modified Euler’s method: y 0 = ln(x + y), y(0) = 2 at x = 0(0.2)0.8.
Ans: 2.0656, 2.1416, 2.2272, 2.3217
130
LAB 10: Solution of ODE of first order and first de-
gree by Runge-Kutta 4th order method and Milne’s
predictor and corrector method
10.1 Objectives:
1. To write a python program to solve first order di↵erential equation using 4th order
Runge Kutta method.
2. To write a python program to solve first order di↵erential equation using Milne’s
predictor and corrector method.
131
y1 = 2 . 2156
y2 = 2 . 4649
y3 = 2 . 7514
h=0.1
x1 = x0 + h
x2 = x1 + h
x3 = x2 + h
x4 = x3 + h
def f (x , y ) :
return x ** 2 + ( y / 2 )
y10 = f ( x0 , y0 )
y11 = f ( x1 , y1 )
y12 = f ( x2 , y2 )
y13 = f ( x3 , y3 )
y4p = y0 + ( 4 * h / 3 ) * ( 2 * y11 - y12 + 2 * y13 )
print ( ' predicted value of y4 is % 3 . 3f '% y4p )
y14 = f ( x4 , y4p ) ;
for i in range (1 , 4 ) :
y4 = y2 + ( h / 3 ) * ( y14 + 4 * y13 + y12 ) ;
print ( ' corrected value of y4 after \ t iteration %d is \ t % 3 . 5f \ t '%
(i , y4 ) )
y14 = f ( x4 , y4 ) ;
In the next program, function will take all the inputs from the user and display the
answer.
Apply Milne’s predictor and corrector method to solve dy/dx = x2 + (y/2) at y(1.4).
Given that y(1)=2, y(1.1)=2.2156, y(1.2)=2.4649, y(1.3)=2.7514. Use corrector formula
thrice.
from sympy import *
def Milne (g , x0 ,h , y0 , y1 , y2 , y3 ) :
x , y = symbols ( 'x , y ')
f = lambdify ( [x , y ] ,g )
x1 = x0 + h
x2 = x1 + h
x3 = x2 + h
x4 = x3 + h
y10 = f ( x0 , y0 )
y11 = f ( x1 , y1 )
y12 = f ( x2 , y2 )
y13 = f ( x3 , y3 )
y4p = y0 + ( 4 * h / 3 ) * ( 2 * y11 - y12 + 2 * y13 )
print ( ' predicted value of y4 ' , y4p )
y14 = f ( x4 , y4p )
for i in range (1 , 4 ) :
y4 = y2 + ( h / 3 ) * ( y14 + 4 * y13 + y12 )
print ( ' corrected value of y4 , iteration % d '%i , y4 )
132
y14 = f ( x4 , y4 )
Milne ( 'x ** 2 + y / 2 ' ,1 , 0 .1 ,2 , 2 . 2156 , 2 . 4649 , 2 . 7514 )
Apply Milne’s predictor and corrector method to solve dy/dx = x y 2 , y(0)=2 obtain
y(0.8). Take h=0.2. Use Runge-Kutta method to calculate required initial values.
Y = RungeKutta ( 'x - y ** 2 ' ,0 , 0 .2 ,0 , 0 . 8 )
print ( 'y values from Runge - Kutta method : ' ,Y )
Milne ( 'x - y ** 2 ' ,0 , 0 .2 , Y [ 0 ] ,Y [ 1 ] ,Y [ 2 ] ,Y [ 3 ] )
y values from Runge -Kutta method: [0. 0.02 0.08 0.18 0.3 ]
predicted value of y4 0.3042133333333334
corrected value of y4 , iteration 1 0.3047636165214815
corrected value of y4 , iteration 2 0.3047412758696499
corrected value of y4 , iteration 3 0.3047421836520892
10.4 Exercise:
1. Find y(0.1) by Runge Kutta method when y 0 = x y 2 , y(0) = 1.
Ans: y(0.1) = 0.91379
133