Eduardo Morras on Sun, 14 Apr 2019 09:57:00 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Muller implementation don't know where is the problem


Hello, I'm trying to implement muller root finding algorithm but I get this error

? \r muller.gp 
  ***   syntax error, unexpected $end: ...eak());a=b;b=c;c=res;);res
  *** 

I've checked the '(' and '{' pairs and I'm disoriented on why does it have a syntax error.

Anyone can help?

Thanks

**** MULLER ROOT FINDING ****
f(x,N)=
{
  y = 1+sen(x);
}



muller(a,b,c,N)=
{
  my(f1,f2,f3,d1,d2,g1,g2,a1,a2,a0,res,x,y,z,i,j,k,l,m);
  
  res = 0;
  i = 0;
  
  for(i=1,10000000 
    f1 = f(a,N);
    f2 = f(b,N);
    f3 = f(c,N);
    d1 = f1 - f3;
    d2 = f2 - f3;
    h1 = a - c;
    h2 = b - c;
    a0 = f3;
    a1 = ( ( (d2 * h1 *h1) - (d1 * h2 * h2) ) / ( (h1 * h2) * (h1 - h2) ) );
    a2 = ( ( (d1 * h2) - (d2 * h1) ) / ( (h1 * h2) * (h1 - h2) ) );
    x = ( (-2 * a0) / (a1 + abs(sqrt(a1 * a1 - 4 * a0 * a2))) );
    y = ( (-2 * a0) / (a1 - abs(sqrt(a1 * a1 - 4 * a0 * a2))) );
  
    if(x >= y,
      res = x + c,
      res = y + c
    )
  
    l = floor(res * 1000);
    m = floor(c * 1000);
    if(l==m, break()); 
    a = b;
    b = c;
    c = res;
  );
  
  res    //==== Here is the error
  
}

 





---   ---
Eduardo Morras <emorrasg@yahoo.es>