restart: with(stats): with(statplots): with(plots): with(plottools): with(Maplets): with(Maplets[Elements]): DisplayOptions:= proc() local r1,r2: if Maplets:-Tools:-Get(Roz1_1) = 'true' then r1:=normald[Maplets:-Tools:-Get(m::realcons),Maplets:-Tools:-Get(s::positive)]; elif Maplets:-Tools:-Get(Roz1_2) = 'true' then r1:=exponential[Maplets:-Tools:-Get(l::positive)]; elif Maplets:-Tools:-Get(Roz1_3) = 'true' then r1:=uniform[Maplets:-Tools:-Get(a::realcons),Maplets:-Tools:-Get(b::realcons)]; elif Maplets:-Tools:-Get(Roz1_4) = 'true' then r1:=cauchy[Maplets:-Tools:-Get(c::realcons),Maplets:-Tools:-Get(d::positive)]; elif Maplets:-Tools:-Get(Roz1_5) = 'true' then r1:=chisquare[Maplets:-Tools:-Get(n1::posint)]; elif Maplets:-Tools:-Get(Roz1_6) = 'true' then r1:=weibull[Maplets:-Tools:-Get(t1::realcons),Maplets:-Tools:-Get(t2::realcons)]; end if; if Maplets:-Tools:-Get(Roz2_1) = 'true' then r2:=normald[Maplets:-Tools:-Get(m2::realcons),Maplets:-Tools:-Get(s2::positive)]; elif Maplets:-Tools:-Get(Roz2_2) = 'true' then r2:=exponential[Maplets:-Tools:-Get(l2::positive)]; elif Maplets:-Tools:-Get(Roz2_3) = 'true' then r2:=uniform[Maplets:-Tools:-Get(a2::realcons),Maplets:-Tools:-Get(b2::realcons)]; elif Maplets:-Tools:-Get(Roz2_4) = 'true' then r2:=cauchy[Maplets:-Tools:-Get(c2::realcons),Maplets:-Tools:-Get(d2::positive)]; elif Maplets:-Tools:-Get(Roz2_5) = 'true' then r2:=chisquare[Maplets:-Tools:-Get(n12::posint)]; elif Maplets:-Tools:-Get(Roz2_6) = 'true' then r2:=weibull[Maplets:-Tools:-Get(t12::realcons),Maplets:-Tools:-Get(t22::realcons)]; end if; p_value(r1,r2,Maplets:-Tools:-Get(N1::integer),Maplets:-Tools:-Get(N2::integer)); end proc: Kolmogorow_Smirnow := Maplet( Window[W1](title="Test Kolmogorowa-Smirnowa", height=450, width=710, menubar=MB1, 'layout' = BL1), MenuBar[MB1](Menu("Zamknij", MenuItem("Zamknij", Shutdown() ) )), BoxLayout[BL1]( BoxColumn(inset=0, spacing=0, background=COLOR(RGB,1,1,4/5), BoxRow(Label("Licznosc probki pierwszego rozkladu N1=", 'font' = Font("default", bold, 12)), TextField[N1]("100",7),Label("Licznosc probki drugiego rozkladu N2=", 'font' = Font("default", bold, 12)), TextField[N2]("150",7)), BoxRow( BoxColumn("Rozklad z ktorego losujemy probke", background=COLOR(RGB,1,1,4/5), BoxRow(RadioButton['Roz1_1']("Normalny N(m,s)", 'value'='true','group'='BG1'), Label(" m=", 'font' =Font("default", bold, 12)),TextField[m]("0",4), Label(" s=", 'font' = Font("default", bold, 12)), TextField[s]("1",4)), BoxRow(RadioButton['Roz1_2']("Wykladniczy o parametrze l", 'group'='BG1'), Label(" l=", 'font' =Font("default", bold, 12)),TextField[l]("2",4)), BoxRow( RadioButton['Roz1_3']("Jednastajny na odcinku [a,b]", 'group'='BG1'), Label(" a=", 'font' =Font("default", bold, 12)),TextField[a]("0",4),Label(" b=", 'font' = Font("default", bold, 12)),TextField[b]("1",4)), BoxRow(RadioButton['Roz1_4']("Cauchy'ego o par.c,d", 'group'='BG1'), Label(" c=", 'font' =Font("default", bold, 12)),TextField[c]("0",4), Label(" d=", 'font' = Font("default", bold, 12)), TextField[d]("1",4)), BoxRow(RadioButton['Roz1_5']("Chi-kwadrat[n1]",'group'='BG1'), Label(" n1=", 'font' =Font("default", bold, 12)),TextField[n1]("3",4)), BoxRow(RadioButton['Roz1_6']("Weibulla[t1,t2]",'group'='BG1'), Label(" t1=", 'font' =Font("default", bold, 12)),TextField[t1]("1",4), Label(" t2=", 'font' = Font("default", bold, 12)), TextField[t2]("2",4)) ), BoxColumn("Rozklad do ktorego porownujemy", background=COLOR(RGB,1,1,2/5), BoxRow(RadioButton['Roz2_1']("Normalny N(m,s)", 'value'='true','group'='BG2'), Label(" m=", 'font' =Font("default", bold, 12)),TextField[m2]("0",4), Label(" s=", 'font' = Font("default", bold, 12)), TextField[s2]("1",4)), BoxRow(RadioButton['Roz2_2']("Wykladniczy o parametrze l", 'group'='BG2'), Label(" l=", 'font' =Font("default", bold, 12)),TextField[l2]("2",4)), BoxRow( RadioButton['Roz2_3']("Jednastajny na odcinku [a,b]", 'group'='BG2'), Label(" a=", 'font' =Font("default", bold, 12)),TextField[a2]("0",4),Label(" b=", 'font' = Font("default", bold, 12)),TextField[b2]("1",4) ), BoxRow(RadioButton['Roz2_4']("Cauchy'ego o par.c,d", 'group'='BG2'), Label(" c=", 'font' =Font("default", bold, 12)),TextField[c2]("0",4), Label(" d=", 'font' = Font("default", bold, 12)), TextField[d2]("1",4)), BoxRow(RadioButton['Roz2_5']("Chi-kwadrat[n1]",'group'='BG2'), Label(" n1=", 'font' =Font("default", bold, 12)),TextField[n12]("1",4)), BoxRow(RadioButton['Roz2_6']("Weibulla[t1,t2]",'group'='BG2'), Label(" t1=", 'font' =Font("default", bold, 12)),TextField[t12]("1",4), Label(" t2=", 'font' = Font("default", bold, 12)), TextField[t22]("2",4)) )), BoxRow(Label("p-value wynosi"), MathMLViewer['T1'](height=40), border=true,inset=0,spacing=0), BoxRow( Button("Wykonaj", 'onclick'='A1', background=COLOR(RGB,209/255,209/255,83/85), 'font' = Font("default", bold, 12)), Button[close]("Zamknij", Shutdown(), 'font' = Font("default", bold, 12), background=COLOR(RGB,209/255,209/255,83/85)), background=COLOR(RGB,1,1,4/5)))), ButtonGroup['BG1'](), ButtonGroup['BG2'](), Action['A1'](Evaluate('T1'='DisplayOptions')) ): ########################### END OF MAPLET DEFINITION ############################## najblizszy:=proc(x,lista::list) local m,i: m:=0; for i from 1 to nops(lista)-1 do if (lista[i]=x) then m:=i+1 end if; end do; if x 1+2*evalf(sum((-1)^k*exp(-2*k^2*x^2),k=1..infinity)); n:= n1*n2/(n1+n2): return (evalf( 1-Q(x*sqrt(n)) )); end proc: roznica:=proc(lista1,lista2,n1,n2) local r,i: r:=0; for i from 1 to n1 do if lista1[i]lista2[n2] then r:=max(r,abs(1-(i-1)/n1)); else r:=max(r,abs((i-1)/n1 - (najblizszy(lista1[i],lista2)-1)/n2),abs(i/n1 - (najblizszy(lista1[i],lista2)-1)/n2)); end if; end do; return(evalf(r)); end proc: p_value := proc(rozklad1,rozklad2,N1,N2) local dane1,dane2,i,roz: dane1:=sort([stats[random, rozklad1]](N1)): dane2:=sort([stats[random, rozklad2]](N2)): roz:=max(roznica(dane1,dane2,N1,N2),roznica(dane2,dane1,N2,N1)); evalf(pivalju(roz,N1,N2)); end proc: Display(Kolmogorow_Smirnow);