1. Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

Equation solving in c++

Discussion in 'Programming & Webmastering' started by caleb, Mar 16, 2011.

  1. caleb

    Joined:
    Sep 15, 2004
    Messages:
    1,551 (0.42/day)
    Thanks Received:
    206
    Location:
    Poland,Slask
    Hello!

    The business problem is calculating certain Task time's of workers. I have only their total time per day and the amount task's they did in that time those task are split into types (Its that 18 variable's I already mentioned). An example:
    8x+4y+0z+...+5n=4300[seconds]
    8x+0y+0z+....+0n=1000[seconds]

    Yes some workers have only 1 task done and other don't but that's not a problem as I can zero-fill those spot's or easily ignore unsolvable equations.

    I'm trying to solve 2000 equations (2000workers/day) with 15 variables (15 diffrent tasks) . I found an algorithm that solves an equation (Gauss elimination) so that part I have behind now I'm puzzled how to calculate all combination's of those equations. I need to match each equation with all solvable combination's of others. I want have a all the possible variable values as output then I can run some statistical program to find my sweet spot for the task time but that's another story.
    Any nice c++ trick you could suggest ?
     
  2. Fourstaff

    Fourstaff Moderator Staff Member

    Joined:
    Nov 29, 2009
    Messages:
    9,202 (5.06/day)
    Thanks Received:
    1,985
    Location:
    Home
    If you have 15 unknowns, you will need at most 15 equations to solve the "system".

    With that in mind, it means that you will have to readjust the order of your 2000 equations so that you run your Gaussian elimination for every combination of 15 equations, and its 2000C15 so you will need to test for 23773578694372656339690207516593086800 number of different combinations, but that will get all of your answers, with plenty of repeats.

    You might possibly eliminate the 2000 equations by repeats (ie 1 of them is x times another), leaving you with a much more manageable number of equations to solve. Out of ideas for now, will come back if I have any more.

    Edit:
    If you have learned "basis" sets in linear algebra, then you might be able to use the concept, find all the basis sets in the 2000 equations, and then run the Gaussian elimination on each of the basis set to get your answers. Problem is that there are just about as many iterations you will need to do :eek:
     
  3. Drone

    Drone

    Joined:
    Sep 1, 2010
    Messages:
    2,828 (1.83/day)
    Thanks Received:
    1,583
    To solve that you'd need 2d array. There are several methods. The best is Gauss–Seidel method
    http://en.wikipedia.org/wiki/Gauss–Seidel_method
    It uses iterations. That process is time consuming tho. You won't need to know any "nice c++ trick" it's pure maths. if you got the maths part the realization this method on pc won't be hard.
     

Currently Active Users Viewing This Thread: 1 (0 members and 1 guest)

Share This Page