Welcome to Fractal Forums

Fractal Math, Chaos Theory & Research => (new) Theories & Research => Topic started by: Schlega on August 28, 2010, 11:52:06 PM




Title: Triplex Newton's Method
Post by: Schlega on August 28, 2010, 11:52:06 PM
I decided to try looking at the triplex version of this. (http://classes.yale.edu/fractals/MandelSet/MandelUniversality/CGSExp.html)

I used:
 f_c(z)=z^3+cz-z-c (I don't think triplex multiplication is distributive)
 f'_c(z)=3*z^2 + c - (1,0,0) (If it's possible to define a triplex derivative, this is what the result should be)
 \frac{f_c}{f'_c}=\exp(\ln(f_c)-\ln(f'_c)).

It seemed to be getting some interesting results, but unfortunately ChaosPro crashed and lost my formula file. I'll add pictures after I have a chance to rewrite it.


Title: Re: Triplex Newton's Method
Post by: kram1032 on August 29, 2010, 03:02:04 PM
What did you want to try to do from that website?
That first image? Because that doesn't look like most Newtons I've seen.... rather like one of the hyperbolic reflection ones. It looks like the directness of the link is lost and you actually wanted to link to a specific part of that page, right?

Either way, I'm already curious to see results :)

I guess, if you do exp(ln()-ln()), that's not the same as a*(b^-1) which would probably be closer to division...


Title: Re: Triplex Newton's Method
Post by: Schlega on August 30, 2010, 09:03:37 AM
Thanks kram. The link should be fixed. I'm working on rewriting the code now, so the results should be up in an hour or two.

Edit: I can't seem to get the results I had the first time I tried it. I have no idea if I had a mistake last time or if I just happened to stumble into an interesting camera position. I'll post my formula file here in case someone else wants to try it, but I can't find any pictures that are worth posting at the moment.

Code:
TriplexNewton(QUATERNION){
parameter real Error;

quaternion z0,C,z3,cz,logc,logc1,glub,bluh,f,df;
real x1,y1,z1,r,cosz,a,b,c;

quaternion expt(quaternion q)
{
x1 = part_r(q);
y1 = part_i(q);
z1 = part_j(q);

r = exp(x1);
cosz = cos(z1);
a = cos(y1)*cosz;
b = sin(y1)*cosz;
c = sin(z1);

q = quaternion(a,b,c,0)*r;
return q;
}

quaternion lnt(quaternion q)
{
x1 = part_r(q);
y1 = part_i(q);
z1 = part_j(q);

r = (x1*x1 + y1*y1 + z1*z1);
a = ln(r)/2;
b = atan2(x1+flip(y1));
c = asin(z1/r);
q = quaternion(a,b,c,0);
return(q);
}

void init(void)
{
C = pixel;
/*
The usual algorithm starts with z=0.
To avoid ln(0), I start with z = c/(c-1)
*/
logc = lnt(pixel);
logc1 = lnt(pixel-(1,0,0,0));

z = expt(logc-logc1);
}
void loop(void)
{
z0=z;
bluh = lnt(z);

z3 = expt(3*bluh);
cz = expt(bluh+logc);
f = z3 +cz - z - C;

df = expt(bluh*2)*3 + C -1;
bluh = lnt(f);
glub = lnt(df);
z = z0 - expt(bluh-glub);
}
bool bailout(void)
{
return(|z-z0|>Error);
}
void description(void)
{
this.title="TriplexNewton";

Error.default=0.001;
}
}


Title: Re: Triplex Newton's Method
Post by: kram1032 on August 30, 2010, 01:23:19 PM
yup, the link works fine now :)