#example 1.1
#rounding off
#page 7
a1=1.6583
a2=30.0567
a3=0.859378
a4=3.14159
print "\nthe numbers after rounding to 4 significant figures are given below\n"
print " %f %.4g\n'" %(a1,a1)
print " %f %.4g\n" %(a2,a2)
print " %f %.4g\n" %(a3,a3)
print " %f %.4g\n" %(a4,a4)
#example 1.2
#percentage accuracy
#page 9
import math
x=0.51 # the number given
n=2 #correcting upto 2 decimal places
d=math.pow(10,-n)
d=d/2.0
p=(d/x)*100 #percentage accuracy
print "the percentage accuracy of %f after correcting to two decimal places is %f" %(x,p)
#example 1.3
#absolute and relative errors
#page 9
X=3.1428571 #approximate value of pi
T_X=3.1415926 # true value of pi
A_E=T_X-X #absolute error
R_E=A_E/T_X #relative error
print "Absolute Error = %0.7f \n Relative Error = %0.7f" %(A_E,R_E)
#example 1.4
#best approximation
#page 10
import math
X=1/3 #the actual number
X1=0.30
X2=0.33
X3=0.34
E1=abs(X-X1)
E2=abs(X-X2)
E3=abs(X-X3)
if E1<E2:
if E1<E3:
B_A=X1
elif E2<E1:
if E2<E3:
B_A=X2
elif E3<E2:
if E3<E1:
B_A=X3
print "the best approximation of 1/3 is %f" %(B_A)
#relative error
#example 1.5
#page 10
import math
n=8.6 # the corrected number
N=1 #the no is rounded to one decimal places
E_A=math.pow(10,-N)/2
E_R=E_A/n
print "the relative error of the number is:%0.4f" %(E_R)
#example 1.6
#absolute error and relative error
#page 10
import math
s=math.sqrt(3)+math.sqrt(5)+math.sqrt(7) #the sum square root of 3,5,7
n=4
Ea=3*(math.pow(10,-n)/2) #absolute error
R_E=Ea/s
print "the sum of square roots is %0.4g \n" %(s)
print "the absolute error is %f \n" %(Ea)
print "the relative error is %f" %(R_E)
#absolute error
#example 1.7
#page 10
import math
n=[0.1532, 15.45, 0.0000354, 305.1, 8.12, 143.3, 0.0212, 0.643, 0.1734] #original numbers
#rounding all numbers to 2 decimal places
n=[305.1, 143.3, 0.15,15.45, 0.00, 8.12, 0.02, 0.64, 0.17]
sum=0;
#l=length(n);
for i in range(len(n)):
sum=sum+n[i];
E_A=2*math.pow(10,-1)/2+7*math.pow(10,-2)/2
print "the absolute error is:%0.2f" %(E_A)
#difference in 3 significant figures
#example 1.8
#page 11
import math
X1=math.sqrt(6.37)
X2=math.sqrt(6.36)
d=X1-X2 #difference between two numbers
print "the difference corrected to 3 significant figures is %0.3g" %(d)
#relative error
#example 1.10
#page 12
import math
a=6.54
b=48.64
c=13.5
da=0.01
db=0.02
dc=0.03
s=math.pow(a,2)*math.sqrt(b)/math.pow(c,3)
print "s=%f" %(s)
r_err=2*(da/a)+(db/b)/2+3*(dc/c)
print "the relative error is :%f" %(r_err)
#relative error
#example 1.11
#page 13
import math
x=1
y=1
z=1
u=(5*x*math.pow(y,3))/math.pow(z,3)
dx=0.001
dy=0.001
dz=0.001
max=((5*math.pow(y,2))/math.pow(z,3))*dx+((10*x*y)/math.pow(z,3))*dy+((15*x*math.pow(y,2))/math.pow(z,4))*dz
e=max/u
print " the relative error is :%f" %(e)
#taylor series
#example 1.12
#page 12
import math
def f(x):
return math.pow(x,3)+5*x-10
def f1(x):
return 3*math.pow(x,2)-6*x+5
def f2(x):
return 6*x-6
def f3(x):
return 6
D=[0,f(0), f1(0), f2(0), f3(0)]
S1=0;
h=1;
for i in range(1,5):
S1=S1+math.pow(h,i-1)*D[i]/math.factorial(i-1)
print "the third order taylors series approximation of f(1) is :%d" %(S1)
#taylor series
#example 1.13
#page 16
import math
def f(x):
return math.sin(x)
def f1(x):
return math.cos(x)
def f2(x):
return -1*math.sin(x)
def f3(x):
return -1*math.cos(x)
def f4(x):
return math.sin(x)
def f5(x):
return math.cos(x)
def f6(x):
return -1*math.sin(x)
def f7(x):
return -1*math.cos(x)
D=[0,f(math.pi/6), f1(math.pi/6), f2(math.pi/6), f3(math.pi/6), f4(math.pi/6), f5(math.pi/6), f6(math.pi/6), f7(math.pi/6)]
S1=0
h=math.pi/6
print "order of approximation computed value of sin(pi/3) absolute eror\n\n"
for j in range(1,10):
for i in range(1,j):
S1=S1+math.pow(h,i-1)*D[i]/math.factorial(i-1)
print "%d %0.9f %0.9f\n" %(j,S1,abs(math.sin(math.pi/3)-S1))
S1=0
#maclaurins expansion
#example 1.14
#page 18
import math
n=8 #correct to 8 decimal places
x=1
for i in range(1,50):
if x/math.factorial(i)<math.pow(10,-8)/2:
c=i
break
print "no. of terms needed to correct to 8 decimal places is : %d " %(c)
#series apprixamation
#example 1.15
#page 18
import math
x=.09090909 # 1/11 =.09090909
S1=0
for i in range(1,5,2):
S1=S1+math.pow(x,i)/i
print "value of log(1.2) is : %0.8f\n\n" %(2*S1)
c=0
for i in range(1,50):
if math.pow(.09090909,i)/i<2*math.pow(10,-7):
c=i
break
print "min no of terms needed to get value wuth same accuracy is :%d" %(c)