matlab - Solving a non-polynomial equation numerically -


i've got problem equation try solve numerically using both matlab , symbolic toolbox. i'm after several source pages of matlab help, picked few tricks , tried of them, still without satisfying result.

my goal solve set of 3 non-polynomial equations q1, q2 , q3 angles. variables represent joint angles in industrial manipulator , i'm trying achieve solve inverse kinematics of model. set of equations looks this: http://imgur.com/bu6xjnp

i'm solving with

numeric::solve([z1,z2,z3], [q1=x1..x2,q2=x3..x4,q3=x5..x6], multisolutions) 

changing xn constant according needs. yet still odd results, q1 var off approximately 0.1 rad, q2 , q3 being off ~0.01 rad. don't have experience numeric solve, need information, should supposed that?

and, if not, valid option suggest should take next? maybe transforming equation polynomial, maybe using different toolbox?

or, if trying in matlab, how can limit solutions when using solve()? i'm thinking of equivalent symbolic toolbox's assume() , assumealso.

i grateful help.

the numerical solution of system of nonlinear equations taken iterative minimization process involving minimization (i.e., finding global minimum) of norm of difference of left , right hand sides of equations. example fsolve uses newton iterations. methods perform "deterministic" optimization: start initial guess , move in unknowns space according opposite of gradient until solution not found.

you have 2 kinds of issues:

local minima: stopping rule of iteration related gradient of functional. when gradient becomes small, iterations stopped. gradient can become small in correspondence local minima, besides desired global one. when initial guess far actual solution, stucked in false solution.

ill-conditioning: large variations of unknowns can reflected large variations of data. so, small numerical errors on data (for example, machine rounding) can lead large variations of unknowns.

due above problems, solution found numerical algorithm differ (even relevantly) actual one.

i recommend make consistency test choosing starting guess, example when using fsolve, close actual solution , verify final result accurate. discover that, making initial guess more far away actual solution, result show (even large) errors. of course, entity of errors depend on nature of system of equations. in lucky cases, errors keep small.


Comments

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

android - send complex objects as post php java -

charts - What graph/dashboard product is facebook using in Dashboard: PUE & WUE -