Fraktálok

92 days ago by Sandor_Czirbusz

PÉLDÁK FRAKTÁLOKRA

 

A Cantor  - halmaz

1. Iterált függvnyrendszerrel

def f1(x): return x/3 def f2(x): return (x + 2)/3 def Cantor(n): L = [0, 1] for i in xrange(1,n + 1): L1 = [] for j in range(len(L)): L1.append(f1(L[j])) for j in range(len(L)): L1.append(f2(L[j])) if n > 0: L = L1 L.sort() G = line([(L[0],n + 1),(L[1],n + 1)]) i = 2 for i in xrange(2,len(L), 2): G = G + line([(L[i],n + 1), (L[i + 1],n + 1)]) return G def CantorSet(n): G = Cantor(0) for i in xrange(n + 1): G = G + Cantor(i) G.show() 
       
CantorSet(n=7) 
       

2. Transzlációval

def CantorTrans(n): L = [0] LL = [] s = 2 / 3 for i in range(n): L1 = [] for j in L: L1.append(j + s) L.extend(L1) s = s / 3 LL = [(j,n + 1) for j in L] P = point(LL, pointsize = 1) return P def CantorIter(n): G = CantorTrans(0) for i in range(n + 1): G = G + CantorTrans(i) G.show() 
       
CantorIter(10) 
       
 
       

A Sierpienski - háromszög

Dilatációval

def dilatation(r, (a, b), (x,y)): return ((r * x + (1 - r) * a, r * y + (1 - r) * b)) def SierpinskiIter(n): A, B, C = (0,0), (1,0), (1/2, sqrt(3)/2) S = [A, B, C] def f0((x,y)): return dilatation(1/2, A, (x,y)) def f1((x,y)): return dilatation(1/2, B, (x,y)) def f2((x,y)): return dilatation(1/2, C, (x,y)) for i in range(n): S0 = [] S0.extend([f0((D[0],D[1])) for D in S ]) S0.extend([f1((D[0],D[1])) for D in S ]) S0.extend([f2((D[0],D[1])) for D in S ]) S.extend(S0) P = point(S, pointsize=1) P.show() 
       
SierpinskiIter(8) 
       

Transzlációval

def SierpinskiTrans(n): L0 = (0,0) S = [L0] s = 1/2 u = (1,0) v = (1/2, sqrt(3)/2) def translate((x,y), w, s): return ((x + w[0] * s,y + w[1] * s )) for i in range(n): S0 = [] S0.extend([translate(C, u, s) for C in S]) S0.extend([translate(C, v, s) for C in S]) S.extend(S0) s = s / 2 P = point(S, pointsize=1) P.show() SierpinskiTrans(7) 
       
def PascalTriangle(n): P = matrix(n + 1) for i in range(n + 1): P[i,0] = 1 for i in range(1, n + 1): for j in range(1, n + 1): P[i, j] = P[i - 1, j - 1] + P[i - 1, j] return P def ModPascalTriangle(n, m): l = "" P = PascalTriangle(n) for i in range(n + 1): for j in range(n + 1): k = P[i, j] % m if k == 0: l = l + " " else: l = l + "*" print l l = "" ModPascalTriangle(50, 3) 
       
*                                                  
**                                                 
***                                                
*  *                                               
** **                                              
******                                             
*  *  *                                            
** ** **                                           
*********                                          
*        *                                         
**       **                                        
***      ***                                       
*  *     *  *                                      
** **    ** **                                     
******   ******                                    
*  *  *  *  *  *                                   
** ** ** ** ** **                                  
******************                                 
*        *        *                                
**       **       **                               
***      ***      ***                              
*  *     *  *     *  *                             
** **    ** **    ** **                            
******   ******   ******                           
*  *  *  *  *  *  *  *  *                          
** ** ** ** ** ** ** ** **                         
***************************                        
*                          *                       
**                         **                      
***                        ***                     
*  *                       *  *                    
** **                      ** **                   
******                     ******                  
*  *  *                    *  *  *                 
** ** **                   ** ** **                
*********                  *********               
*        *                 *        *              
**       **                **       **             
***      ***               ***      ***            
*  *     *  *              *  *     *  *           
** **    ** **             ** **    ** **          
******   ******            ******   ******         
*  *  *  *  *  *           *  *  *  *  *  *        
** ** ** ** ** **          ** ** ** ** ** **       
******************         ******************      
*        *        *        *        *        *     
**       **       **       **       **       **    
***      ***      ***      ***      ***      ***   
*  *     *  *     *  *     *  *     *  *     *  *  
** **    ** **    ** **    ** **    ** **    ** ** 
******   ******   ******   ******   ******   ******
*                                                  
**                                                 
***                                                
*  *                                               
** **                                              
******                                             
*  *  *                                            
** ** **                                           
*********                                          
*        *                                         
**       **                                        
***      ***                                       
*  *     *  *                                      
** **    ** **                                     
******   ******                                    
*  *  *  *  *  *                                   
** ** ** ** ** **                                  
******************                                 
*        *        *                                
**       **       **                               
***      ***      ***                              
*  *     *  *     *  *                             
** **    ** **    ** **                            
******   ******   ******                           
*  *  *  *  *  *  *  *  *                          
** ** ** ** ** ** ** ** **                         
***************************                        
*                          *                       
**                         **                      
***                        ***                     
*  *                       *  *                    
** **                      ** **                   
******                     ******                  
*  *  *                    *  *  *                 
** ** **                   ** ** **                
*********                  *********               
*        *                 *        *              
**       **                **       **             
***      ***               ***      ***            
*  *     *  *              *  *     *  *           
** **    ** **             ** **    ** **          
******   ******            ******   ******         
*  *  *  *  *  *           *  *  *  *  *  *        
** ** ** ** ** **          ** ** ** ** ** **       
******************         ******************      
*        *        *        *        *        *     
**       **       **       **       **       **    
***      ***      ***      ***      ***      ***   
*  *     *  *     *  *     *  *     *  *     *  *  
** **    ** **    ** **    ** **    ** **    ** ** 
******   ******   ******   ******   ******   ******
 
       
E.<t> = PowerSeriesRing(GF(2))