try jsfiddle
function ln(val){
return Math.log(val) / Math.log(Math.E);
}
function pollarMethod()
{
do{
U1=Math.random();
U2=Math.random();
V1=2*U1-1.0;
V2=2*U2-1.0;
S=V1*V1+V2*V2;
}
while(S>=1);
X=V1*Math.sqrt((-2*ln(S))/S);
return X;
}
function poissonProcess(lambda,T)
{
var t=0;
var k=0;
var S=new Array();
while(t<=T)
{
var r=Math.random();
t=t-ln(r)/lambda
if (t>T) return S;
S[k]=t;
k=k+1;
}
return S;
}
function levyJump(t,b,c,lambda)
{
var L=b*t;
L=L+Math.sqrt(c)*pollarMethod();
var nbLoop=poissonProcess(lambda,t);
for (var i=0;i<nbLoop;i++)
{
L+=Math.random();
}
return L;
}
var str='<svg xmlns="http://www.w3.org/2000/svg" version="1.1">';
var previousvalue=0;
for (var i = 0; i < 50; i++) {
val=levyJump(i,0.9,20.0,1.0);
str+='<line x1="'+i*10+'" y1="'+previousvalue+'" x2="'+(i+1)*10+'" y2="'+val*10+'" style="stroke:rgb(255,0,0);stroke-width:2" />';
previousvalue=val*10;
}
$("#graph").append(str+'</svg>' );
function ln(val){
return Math.log(val) / Math.log(Math.E);
}
function pollarMethod()
{
do{
U1=Math.random();
U2=Math.random();
V1=2*U1-1.0;
V2=2*U2-1.0;
S=V1*V1+V2*V2;
}
while(S>=1);
X=V1*Math.sqrt((-2*ln(S))/S);
return X;
}
function poissonProcess(lambda,T)
{
var t=0;
var k=0;
var S=new Array();
while(t<=T)
{
var r=Math.random();
t=t-ln(r)/lambda
if (t>T) return S;
S[k]=t;
k=k+1;
}
return S;
}
function levyJump(t,b,c,lambda)
{
var L=b*t;
L=L+Math.sqrt(c)*pollarMethod();
var nbLoop=poissonProcess(lambda,t);
for (var i=0;i<nbLoop;i++)
{
L+=Math.random();
}
return L;
}
var str='<svg xmlns="http://www.w3.org/2000/svg" version="1.1">';
var previousvalue=0;
for (var i = 0; i < 50; i++) {
val=levyJump(i,0.9,20.0,1.0);
str+='<line x1="'+i*10+'" y1="'+previousvalue+'" x2="'+(i+1)*10+'" y2="'+val*10+'" style="stroke:rgb(255,0,0);stroke-width:2" />';
previousvalue=val*10;
}
$("#graph").append(str+'</svg>' );
No comments:
Post a Comment