#Utilizzo due gaussiane e una serie A=[3, 4, 5.4, 4, 4, 4, 4, 4.02, 15, 15] media1=[]; media2=[]; sig1=[]; #è sigma1 sig2=[]; #è sigma2 a1=[]; #è alfa1 a2=[]; #è alfa2 modellomu=[]; modellosigma=[]; #Parametri gaussiana 1 mu1=-5 sigma1=2 sigmainiz1=sigma1; alfa1= 0.6 #Parametri gaussiana 2 mu2=-5 sigma2=2 sigmainiz2=sigma2; alfa2=1-alfa1; #altri parametri generici validi per entrambe le gaussiane k=3 rho=0.5 incremento=0.02 sigmalimite1=0.5 sigmalimite2=1 sigmalimite3=1.5 for i in A: if abs(i-mu1)=k*sigma2: sigma1=(1-rho)*sigma1+rho*abs(i-mu1) if mu1>=0 and mu1<=100: if sigma1<=sigmalimite1: sigma1=sigmalimite1 elif mu1>100 and mu1<=1000: if sigma1<=sigmalimite2: sigma1=sigmalimite2 elif mu1>1000: if sigma1<=sigmalimite3: sigma1=sigmalimite2 mu1=mu1*(1-rho)+rho*i alfa1=alfa1+incremento alfa2=1-alfa1 if alfa1>0.99: alfa1=0.99 alfa2=1-alfa1 elif abs(i-mu2)=k*sigma1: sigma2=(1-rho)*sigma2+rho*abs(i-mu2) if mu2>=0 and mu2<=100: if sigma2<=sigmalimite1: sigma2=sigmalimite1 elif mu2>100 and mu2<=1000: if sigma2<=sigmalimite2: sigma2=sigmalimite2 elif mu2>1000: if sigma2<=sigmalimite3: sigma2=sigmalimite3 mu2=mu2*(1-rho)+rho*i alfa2=alfa2+incremento alfa1=1-alfa2 if alfa2>=0.99: alfa2=0.99 alfa1=1-alfa2 elif abs(i-mu1)>=k*sigma1 or abs(i-mu2)>=k*sigma2: if alfa1>alfa2: mu2=i sigma2=sigmainiz2 alfa2=alfa2 if alfa1=sigma2: mu1=i sigma1=sigmainiz1 alfa1=alfa1 if alfa1==alfa2 and sigma1=0 and mu2<=100: if sigma2<=sigmalimite1: sigma2=sigmalimite1 elif mu2>100 and mu2<=1000: if sigma2<=sigmalimite2: sigma2=sigmalimite2 elif mu2>1000: if sigma2<=sigmalimite3: sigma2=sigmalimite3 mu2=mu2*(1-rho)+rho*i alfa2=alfa2+incremento alfa1=1-alfa2 if alfa2>=0.99: alfa2=0.99 alfa1=1-alfa2 elif alfa2=0 and mu1<=100: if sigma1<=sigmalimite1: sigma1=sigmalimite1 elif mu1>100 and mu1<=1000: if sigma1<=sigmalimite2: sigma1=sigmalimite2 elif mu1>1000: if sigma1<=sigmalimite3: sigma1=sigmalimite2 mu1=mu1*(1-rho)+rho*i alfa1=alfa1+incremento alfa2=1-alfa1 if alfa1>=0.99: alfa1=0.99; alfa2=1-alfa1; elif alfa1==alfa2 and sigma1>sigma2: sigma2=(1-rho)*sigma2+rho*abs(i-mu2) if mu2>=0 and mu2<=100: if sigma2<=sigmalimite1: sigma2=sigmalimite1 elif mu2>100 and mu2<=1000: if sigma2<=sigmalimite2: sigma2=sigmalimite2 elif mu2>1000: if sigma2<=sigmalimite3: sigma2=sigmalimite3 mu2=mu2*(1-rho)+rho*i alfa2=alfa2+incremento alfa1=1-alfa2 if alfa2>=0.99: alfa2=0.99 alfa1=1-alfa2 elif alfa1==alfa2 and sigma1<=sigma2: sigma1=(1-rho)*sigma1+rho*abs(i-mu1) if mu1>=0 and mu1<=100: if sigma1<=sigmalimite1: sigma1=sigmalimite1 elif [mu1>100 and mu1<=1000]: if sigma1<=sigmalimite2: sigma1=sigmalimite2 elif mu1>1000: if sigma1<=sigmalimite3: sigma1=sigmalimite2 mu1=mu1*(1-rho)+rho*i alfa1=alfa1+incremento alfa2=1-alfa1 if alfa1>=0.99: alfa1=0.99; alfa2=1-alfa1; media1.append(mu1) media2.append(mu2) sig1.append(sigma1) sig2.append(sigma2) a1.append(alfa1) a2.append(alfa2) print('media1 vale',media1) print('media2 vale',media2) print('sigma1 vale',sig1) print('sigma2 vale',sig2) print('alfa1 vale',a1) print('alfa2 vale',a2) if alfa1>alfa2: modellomu.append(mu1) modellosigma.append(sigma1) elif alfa1