[Date Index] [Thread Index] [Author Index]
Non linear system solving
Dear Group, I'm a french student working on gears, particulary on gear engagement. To summerize quickly: The active surfaces of a gear teeth are made to ensure an homokynetic (homokinetic) transmission. We have, in theory, a1/a2=constant, with ai, the rotation angle of the part i. My work is to find this relation: First the surfaces are represented by equations ( a 3D Vector, with two parameters) in a local coordinate system. These parameters are u1 and v1 for the gear 1, u2 and v2 for the gear 2. To simulate the transmission between these gears, we write these equations in a common coordinate system, giving them another parameter, for the position , the angle of rotation, a1 and a2. So for the gear 1, we have: s1(u1,v1,a1) Active surface for the gear 2 is given by: s2(u2,v2,a2) To simulate the engaging, we have to translate mathematically the contact between the two surfaces: First condition: Surfaces are in contact, that leads to: s1(u1,v1,a1)=s1(u2,v2,a2) -> 3 equations. Second condition: The normals at the contact point are parallel. n1(u1,v1,a1)=k.n2(u2,v2,a2) ->3 equations, one more unkown introduced: k Finaly: we have 6 Equations, and 6 unknowns (u1,v1, u2, v2, a2, k) Theses equations are too complicated, to obtain an explicit solution. We have to divide the problem: Solve the non linear system, for each value of a1. Then we have several couple of (a1,a2). This is the context of my work. I tried to write in Mathematica, using the famous function "Findroot". My question begin here: Findroot works well, but when the relative curvatures of the surfaces near the contact point are close, the fonction shows its limit. I began to write a program, calculating the Jacobian Matrix of the system and by iteration i found a solution vector. The solutions found are not in the interval. Indeed parameter of the surface v1 varies between 50 and 100. The solution given by Mathematica is 0. The FindRoot function allows us to give interval for all unknowns (and gives 83.3 for v1 (example) if we give the interval, 0 if not). Can someone, help me to make a program witch take into account intervals for each unknown? I am asking for a program, just the mathematical part. Thank You very much. Best Regards PS: Please excuse my bad English.