Try jsfiddle
function ln(val){
return Math.log(val) / Math.log(Math.E);
}
function nonHomogeneousPoissonProcess(lambdaTArray,T)
{
var lambda=0.0;
for (var i = 0; i < lambdaTArray.length; i++) {
if (lambdaTArray[i]>lambda)
lambda=lambdaTArray[i]+1;
}
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;
var s=Math.random();
if (s<=lambdaTArray[parseInt(t, 10)]/lambda)
{
S[k]=t;
k=k+1;
}
}
return S;
}
var str='<svg xmlns="http://www.w3.org/2000/svg" version="1.1">';
var lambdaTArray=new Array();
var T=50
for (var i = 0; i < T; i++)
lambdaTArray[i]=Math.random();
var Liste=nonHomogeneousPoissonProcess(lambdaTArray,T);
var previousvalue=0.0;
for (var i = 0; i < Liste.length; i++) {
str+='<line x1="'+i*10+'" y1="'+previousvalue+'" x2="'+(i+1)*10+'" y2="'+Liste[i]*10+'" style="stroke:rgb(255,0,0);stroke-width:2" />';
previousvalue=Liste[i]*10;
}
$("#graph").append(str+'</svg>' );
function ln(val){
return Math.log(val) / Math.log(Math.E);
}
function nonHomogeneousPoissonProcess(lambdaTArray,T)
{
var lambda=0.0;
for (var i = 0; i < lambdaTArray.length; i++) {
if (lambdaTArray[i]>lambda)
lambda=lambdaTArray[i]+1;
}
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;
var s=Math.random();
if (s<=lambdaTArray[parseInt(t, 10)]/lambda)
{
S[k]=t;
k=k+1;
}
}
return S;
}
var str='<svg xmlns="http://www.w3.org/2000/svg" version="1.1">';
var lambdaTArray=new Array();
var T=50
for (var i = 0; i < T; i++)
lambdaTArray[i]=Math.random();
var Liste=nonHomogeneousPoissonProcess(lambdaTArray,T);
var previousvalue=0.0;
for (var i = 0; i < Liste.length; i++) {
str+='<line x1="'+i*10+'" y1="'+previousvalue+'" x2="'+(i+1)*10+'" y2="'+Liste[i]*10+'" style="stroke:rgb(255,0,0);stroke-width:2" />';
previousvalue=Liste[i]*10;
}
$("#graph").append(str+'</svg>' );
No comments:
Post a Comment