[NumAn] Oef 1.5, Oef.2.3

2258 days ago by Niels.Neirynck

Numerieke Analyse PC-Oefening 1.5

x = var('x'); plot( (x-1)^4, (-10,10)) 
       

                                
                            

                                
plot( x^4 - 4*x^3 + 6*x^2 - 4*x + 1 , ( -10 , 10)) 
       

                                
                            

                                
plot((((x-4)*x+6)*x-4)*x+1 , (-10,10)) 
       

                                
                            

                                
plot( (x-1)^4, (0.9997,1.0003)) 
       

                                
                            

                                
plot( x^4 - 4*x^3 + 6*x^2 - 4*x + 1 , (0.9997,1.0003)) 
       

                                
                            

                                
plot( (((x-4)*x+6)*x-4)*x+1, (0.9997,1.0003)) 
       

                                
                            

                                

Numerieke Analyse PC-Oefening 2.3

n=15; Digits = 10; 
       
#Lijst van recursief berekende waarden (symbolisch) jlist_sym = [ ln(6/5) ]; for i in range(n): jlist_sym.append( (1/(i+1)) - 5*jlist_sym[i] ) show(jlist_sym) 
       

                                
                            

                                
#Lijst van recursief berekende waarden (FP-voorstelling door omzetting van symbolische waarden) jlist_symnum = []; for i in range(n+1): jlist_symnum.append(N(jlist_sym[i] , digits=Digits)) jlist_symnum 
       
[0.1823215568, 0.08839221604, 0.05803891976, 0.04313873430,
0.03430632781, 0.02846836299, 0.02432486415, 0.02123284340,
0.01883602142, 0.01693344116, 0.01533508301, 0.01428222656,
0.01269531250, 0.01562500000, 0.0000000000, 0.06250000000]
[0.1823215568, 0.08839221604, 0.05803891976, 0.04313873430, 0.03430632781, 0.02846836299, 0.02432486415, 0.02123284340, 0.01883602142, 0.01693344116, 0.01533508301, 0.01428222656, 0.01269531250, 0.01562500000, 0.0000000000, 0.06250000000]
parent(jlist_symnum[0]) 
       
Real Field with 37 bits of precision
Real Field with 37 bits of precision
#Lijst van recursief berekende waarden (Simulatie van FP arithmetic) jlist_num = [N(ln(6/5) , digits=Digits)]; for i in range(n): jlist_num.append( (1/(i+1)) - 5*jlist_num[i] ) jlist_num 
       
[0.1823215568, 0.08839221604, 0.05803891979, 0.04313873440,
0.03430632798, 0.02846836008, 0.02432486625, 0.02123281162,
0.01883594188, 0.01693140173, 0.01534299133, 0.01419413428,
0.01236266194, 0.01510976721, -0.004120264624, 0.08726798979]
[0.1823215568, 0.08839221604, 0.05803891979, 0.04313873440, 0.03430632798, 0.02846836008, 0.02432486625, 0.02123281162, 0.01883594188, 0.01693140173, 0.01534299133, 0.01419413428, 0.01236266194, 0.01510976721, -0.004120264624, 0.08726798979]
#controle op type: parent(jlist_num[3]) 
       
Real Field with 37 bits of precision
Real Field with 37 bits of precision
#Lijst van berekende waarden van integralen. (Symbolisch berekend, omgezet naar FP) jlist_i = []; x = var('x') for i in range(n+1): jlist_i.append( N(integral((x^i) / (x+5) , x, 0 , 1), digits=Digits)) jlist_i 
       
[0.1823215568, 0.08839221613, 0.05803891970, 0.04313873500,
0.03430631757, 0.02846837044, 0.02432465553, 0.02123260498,
0.01882934570, 0.01696777344, 0.01538085938, 0.01464843750,
0.01171875000, 0.0000000000, 0.0000000000, 0.0000000000]
[0.1823215568, 0.08839221613, 0.05803891970, 0.04313873500, 0.03430631757, 0.02846837044, 0.02432465553, 0.02123260498, 0.01882934570, 0.01696777344, 0.01538085938, 0.01464843750, 0.01171875000, 0.0000000000, 0.0000000000, 0.0000000000]
#Voor display: plaats de lijsten als (rij)vectoren in matrix, gebruik de show() functie voor matrices. m = matrix(vector(jlist_symnum)); m = m.stack(vector(jlist_num)); m = m.stack(vector(jlist_i)); #Kolom1: symbolisch berekend, omgezet naar FP #Kolom2: berekend in FP-arithmetic #Komom3: integraal berekend, omgezet naar FP show(m.transpose()) m.transpose() 
       
[   0.1823215568    0.1823215568    0.1823215568]
[  0.08839221604   0.08839221604   0.08839221613]
[  0.05803891976   0.05803891979   0.05803891970]
[  0.04313873430   0.04313873440   0.04313873500]
[  0.03430632781   0.03430632798   0.03430631757]
[  0.02846836299   0.02846836008   0.02846837044]
[  0.02432486415   0.02432486625   0.02432465553]
[  0.02123284340   0.02123281162   0.02123260498]
[  0.01883602142   0.01883594188   0.01882934570]
[  0.01693344116   0.01693140173   0.01696777344]
[  0.01533508301   0.01534299133   0.01538085938]
[  0.01428222656   0.01419413428   0.01464843750]
[  0.01269531250   0.01236266194   0.01171875000]
[  0.01562500000   0.01510976721    0.0000000000]
[   0.0000000000 -0.004120264624    0.0000000000]
[  0.06250000000   0.08726798979    0.0000000000]
[   0.1823215568    0.1823215568    0.1823215568]
[  0.08839221604   0.08839221604   0.08839221613]
[  0.05803891976   0.05803891979   0.05803891970]
[  0.04313873430   0.04313873440   0.04313873500]
[  0.03430632781   0.03430632798   0.03430631757]
[  0.02846836299   0.02846836008   0.02846837044]
[  0.02432486415   0.02432486625   0.02432465553]
[  0.02123284340   0.02123281162   0.02123260498]
[  0.01883602142   0.01883594188   0.01882934570]
[  0.01693344116   0.01693140173   0.01696777344]
[  0.01533508301   0.01534299133   0.01538085938]
[  0.01428222656   0.01419413428   0.01464843750]
[  0.01269531250   0.01236266194   0.01171875000]
[  0.01562500000   0.01510976721    0.0000000000]
[   0.0000000000 -0.004120264624    0.0000000000]
[  0.06250000000   0.08726798979    0.0000000000]
#Bij n=15, Digits=10 #Merk op: show(jlist_sym[15]) 
       

                                
                            

                                
#Bij n=15, Digits=10 #Bij het omzetten naar een FP getal (zie jlist_symnum[15]) treden er fouten indien men vergelijkt met de #berekening van de integraal jlist_i[15]. show([N(2005047491650199/360360) , N(-30517578125 * log(6/5))]) #Er is een aftrekking van bijna gelijke grootheden (cancellation).