Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

All published worksheets from http://sagenb.org

Views: 168742
Image: ubuntu2004
def MFDFAHTau(S,FqS,Q): i=0 lS=[] lFqS=[] print FqS[1,1] while i<len(S): lS.append(log(S[i])) i=i+1 row=FqS.nrows() col=FqS.ncols() lFqS=matrix(RR,row,col) for i in range (0,row): for j in range (0,col): lFqS[i,j]=RR(log(FqS[i,j])) lFqS[i,j]=lFqS[i,j] Hq=vector(RR,{(row-1):0}) TAUq=vector(RR,{(row-1):0}) g=1 for i in range (0,row): temp=[] for j in range (0,col): temp.append(lFqS[i,j]) A=GeneralMinSquare(lS,temp,g) Hq[i]=A[1] TAUq[i]=(Q[i]*Hq[i]-1) Q1=vector(Q).transpose() return Hq,TAUq,Q1
def MFDFAAlphaFTAUSpline(Q,TAUq,percFunction): # Мультифрактальний DFA (MF-DFA) за статтею # "Multifractal detrended fluctuation analysis of nonstationary time series" # Визначення alpha та F(alpha) # Аргументи: # Q - вектор-рядок значень q # Hq - вектор-рядок значень tau(q) # Результати: # ALPHA - значення аргументів ALPHA # FALPHA - значення функції F(alpha) # визначимо кількість значень Q nQ=len(Q) # якщо Q має більше одного рядка - транспонуємо if (nQ==1): Q=vector(Q).transpose() nQ=len(Q) # визначимо кількість значень TAUq nTau=len(TAUq) # якщо TAUq має більше одного рядка - транспонуємо if (nTau==1): TAUq=vector(TAUq).transpose() nTau=len(TAUq) # створюємо два нульових вектора ALPHA та FALPHA ALPHA =vector(RR,{(nQ):0}) FALPHA=vector(RR,{(nQ):0}) ALPHA2 =vector(RR,{(nQ):0}) FALPHA2=vector(RR,{(nQ):0}) # знаходимо alpha PP=natural_spline(Q,TAUq) for i in range(1,nQ-1): ALPHA[i]=calc_dspline(PP,float(Q[i])) #ALPHA[i] = (TAUq[i]-TAUq[i-1])/float(Q[i]-Q[i-1]) FALPHA[i]=Q[i]*ALPHA[i]-TAUq[i] #print ALPHA[i],FALPHA[i] if (percFunction!=0): maxFALPHA=percFunction/100.0*float(max(FALPHA)) nA=len(FALPHA) ALPHA2 =[] FALPHA2=[] for i in range(0,nA): if (FALPHA[i]>=maxFALPHA): FALPHA2.append(FALPHA[i]) ALPHA2.append(ALPHA[i]) return ALPHA2,FALPHA2
@interact def f(kil=input_box(default="10000",label="Кількість значень"), windowWidthBegin=input_box(default="10",label="Початкова ширина сегмента"), windowWidthEnd=input_box(default="1000",label="Кінцева ширина сегмента"), POWERSedit=input_box(default="[-3,0.1,3]",label="Степені q для розрахунку DFA"), DFAORDER=input_box(default="2",label="Порядок DFA"), valueOfElevate=input_box(default="100",label="Кількість вікон при кроці"), koef=input_box(default="100",label="Коефіцієнт збільшення вікна"), percFunction=input_box(default="90",label="Відсоток збільшення вікна"), kindOfElevate=selector(["","nSTEP","nRATIO","STEP","RATIO"],label="Тип збільшення вікна",buttons=True), ): global gl; gl=0 kil=int(kil) windowWidthBegin=int(windowWidthBegin) windowWidthEnd=int(windowWidthEnd) POWERSedit=[-3,0.1,3] DFAORDER=int(DFAORDER) valueOfElevate=int(valueOfElevate) koef=int(koef) percFunction=int(percFunction) if (kil=='' or windowWidthBegin=='' or windowWidthEnd=='' or POWERSedit=='' \ or len(POWERSedit)<3 or DFAORDER=='' or valueOfElevate=='' or koef==""\ or kindOfElevate=="" or percFunction==''): print "Введіть всі поля даних" return 0 X=stock_load(kil) X=finance.TimeSeries(X) xx=vector(POWERSedit) index=xx[0] POWERS=[] while (index<=xx[2]+10^-13): if abs(index)>10^-13: POWERS.append(float(index)) index=index+xx[1] S,FqS,Q=MFDFA(X,windowWidthBegin,windowWidthEnd,POWERS,\ DFAORDER,kindOfElevate,valueOfElevate,koef) FqS2=FqS.transpose() nq=FqS.nrows() ns=FqS.ncols() html("Розподілення Fq(s)") r1=[] for i in range (0,ns): for j in range (0,nq): r1.append([log(S[i],10).n(digits=10),log(FqS2[i][j],10).n(digits=10)]) point(r1).show() Hq,TAUq,Q2=MFDFAHTau(S,FqS,Q) #розподілення Hq html("Розподілення H(q)") r1=[] for i in range (0,len(Hq)): r1.append([Q2[i][0],Hq[i]]) point(r1).show() #розподілення TAUq html("Розподілення Tau(q)") r1=[] for i in range (0,len(TAUq)): r1.append([Q2[i][0],TAUq[i]]) #print Q2[i][0],TAUq[i] point(r1).show() ALPHA, FALPHA=MFDFAAlphaFTAUSpline(Q,TAUq,percFunction) html("Розподілення F(alpha), alpha розрахована через tau") r1=[] for i in range (0,len(ALPHA)): r1.append([ALPHA[i],FALPHA[i]]) point(r1).show() ALPHA, FALPHA=MFDFAAlphaFHSpline(Q,Hq,percFunction) html("Розподілення F(alpha), alpha розрахована через tau") r1=[] for i in range (0,len(ALPHA)): r1.append([ALPHA[i],FALPHA[i]]) point(r1).show()
res=[] res.append(23) print res[0]
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "_sage_input_27.py", line 9, in <module> exec compile(ur'open("___code___.py","w").write("# -*- coding: utf-8 -*-\n" + _support_.preparse_worksheet_cell(base64.b64decode("cmVzPVtdCnJlcy5hcHBlbmQoMjMpCnByaW50IHJlc1sxXQ=="),globals())+"\n"); execfile(os.path.abspath("___code___.py"))' + '\n', '', 'single') File "", line 1, in <module> File "/tmp/tmpp1nsbF/___code___.py", line 5, in <module> exec compile(ur'print res[_sage_const_1 ]' + '\n', '', 'single') File "", line 1, in <module> IndexError: list index out of range
st.plot()
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "_sage_input_23.py", line 9, in <module> exec compile(ur'open("___code___.py","w").write("# -*- coding: utf-8 -*-\n" + _support_.preparse_worksheet_cell(base64.b64decode("c3QucGxvdCgp"),globals())+"\n"); execfile(os.path.abspath("___code___.py"))' + '\n', '', 'single') File "", line 1, in <module> File "/tmp/tmpxdsPCz/___code___.py", line 2, in <module> exec compile(ur'st.plot()' + '\n', '', 'single') File "", line 1, in <module> NameError: name 'st' is not defined