Finding a Velocity Node for Long Range Shooting, Mathematical Methods

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Finding a Velocity Node for Long Range Shooting, Mathematical Methods

    First Off, Go read Tips on Finding a Node First http://austargets.com/forum/index.php?topic=646.0, It is in Plain English and Norm has clearly explained the terms and what is exactly being sought. Basically, Perform a ladder test using a chronograph and log the data.

    In summary, what we are after is load stability, In long range shooting super tight groups at 100m are not as useful as stable groups at 100m, It is a fact some people need to get over when it comes to load development for Long Range (LR). It is up to you the Reloader, to take responsibility for your actions and heed all necessary warnings associated with reloading, I will in no way accept any responsibility for your specific results, this is a guide on utilising Maths to find a node, not a how to reload for LR.

    Data

    With all Mathematical methods the greatest flaw in the process is the amount of data available to the model for the accurate prediction of results. The more data you use the more reliable your model will become. Use simple data storage methods, hand written notes in a notebook are reliable, invaluable and very good practice when it comes to LR shooting as everytime you shoot, conditions will be different, accumulate enougb data over enough condition sets then patterns will eventuate and you will be able to jog your memory of how shoots went and you will improve. In my limited experience in trying to teach people to shoot LR, people that don't write down how they shot in wind take much longer to learn to shoot well in wind.

    Data from a handwritten notebook can easily be saved as a 2 column 'notepad file' (.txt) separate the columns by pressing the 'Tab' Key. A notepad file written as such can be opened by all computer based maths programs, Excel, Matlab, Octave, even Modellers like Solid Works and the like. Notepad is the single most useful program for programming and operating within mathematical languages.

    The Big Scary World of Numerical Solvers

    Matlab is a well utilised example of numerical solvers and is very good for LR but it is expensive so unless it is a part of your 'other' job like me then chances are it is out of reach... Thankfully Octave Exists, (http://www.gnu.org/software/octave/) which is a free GNU software compatible with the commercial MatLab (everything written in Octave Will Run in Matlab but not necessarily the other way around as MatLab is more advanced)

    I will not go into detail on how to operate Octave or MatLab, There is a plethora of Wiki's and forums out there to help in this regard, I will simply provide some simple code later on so you understand how the mathematical process can be written in a program and then run relatively instantly for all future data sets, this code you are free to use and build upon, It would be great if you could post up some developed codes, Mine is very messy and is full of user required inputs so has become a buggy mess, but it works for me. I'd be willing to help/check/refine anyone's developed code and have a master available for people that wish to try it out but for now we will start small.

    An outline of the Maths / Basic Example

    So, You have a 2 variable data set, Velocity and Powder Charge and you want to know at which point along the data set the load will be the most stable so that your vertical shot spread at LR is minimised.

    One can take data collected from the tests as described by norm, then type them into notepad in columns as described earlier, for example:
    56 2500
    57 2525
    58 2560
    59 2580
    60 2610
    61 2640
    62 2650
    63 2655
    64 2665
    65 2685
    66 2740
    67 2785
    Save the above as velocity.txt if you wish to use the code below

    The process from here is actually simple Calculus, no really it is, what we are looking for is a description of the data in terms of critical points, inflections and minimum rates of change (i.e the First, Second and Third order derivatives critical points, F(x) = 0, F(x) = Min, F(x) = Max, F(x)ba = (+/-) e.t.c.

    F(x) is any derivative of f(x), which is our nth order polynomial, see below
    The trick is to take the data and fit a suitable order polynomial approximation to the data, Excel will readily fit 4th order I believe and Programs like Matlab will go to the nth order but the key here is we need it to be suitable.
    My argument/opinion: If we simplify the process of launching a projectile; we have a pressure curve that develops over time, over a variable volume that expands at an accelerating rate. We can ignore most other factors at this point as it is clear a simple model that takes into these factors would be a fourth order polynomial, Volume, time, acceleration, pressure being the simplest variables and looking at their relations from ideal gas laws and newtonian mechanics (feel free to google/wikipedia e.tc.) and a little bit of experience thrown in for good measure I'll assert fourth order is sufficient. Sure equations may possibly be developed for higher order polynomials or crude assumptions could be made to reduce the order but in reality a fourth order is a comfortable number that most solvers can handle with a minimum of fuss, even doing the derivatives by hand will not take long at all.

    Fitting the polynomial can be achieved by a number of methods and I encourage you to use available resources to source a number of different methods however I will switch to a basic code at this point so you can see a simple method that works in Octave or MatLab. In this example I have used the existence of inflection points to isolate where the minimum rates of change are. Developing the code further to plot the derivative or isolate all the critical points can be easily achieved for solving F(x) for the criteria above. For the main there will be an inflection point and this code should get people at least at a stage that their toes are wet.

    Copy the code below into Notepad and Save it as a ####.m file, call it whatver you like but you need to make it easy so when you call it up from Matlab or Octave it is easy to find.

    %% Finding a Velocity Node
    % AndyBangFlop
    % % A simple hopefully friendly code that can be used to determine the position of a velocity
    % node from a text file without text, numbers only (banged this together quickly so
    % it is not very robust), grains in first column, velocities in second.
    % Units are irrelevant, what ever you put in, it will
    % spit out, but remember if you GIGO, the result is Garbage In Garbage Out.
    %%
    %This code relies on the existence of an inflection point (to make things
    %much simpler) If no such inflection point exists then determining the min
    % of fG = diff(G) should suffice. The code is very basic, easily
    % upgradeable, use '%%' to make it more modular and you will be good to go.
    clc %engage for debugging
    format shortG
    %% Load velocity.txt
    load velocity.txt
    g = velocity(:,1);
    v = velocity(:,2);
    %% Develop a 4th order polynomial
    disp ('Ignore the following Warning, It is because we are cheating a bit')
    p = polyfit(g,v,4);
    disp (' ')
    %% Convert it from an array to a more friendly function
    %Sort Co-efficients
    c4 = p(:,1);
    c3 = p(:,2);
    c2 = p(:,3);
    c1 = p(:,4);
    c0 = p(:,5);
    % Float V co-ordinates as Variables:
    syms V;
    G = c0 + c1*V^1 + c2*V^2 + c3*V^3 + c4*V^4;
    ffG = diff(diff(G));
    n = solve (ffG,0);
    disp (' ')
    disp ('Node is Found at Powder Weight (s) = ')
    disp ('(Units are input units)')
    Node = double(n)
    disp ('if multiple ouputs, check to see whether there has not been a hiccup in the code from multiple inflection points')
    disp ('should be identifiable as only one point will actually make sense')


    So put the above into Matlab/octave and run the code with the velocity.txt file in the same folder on your computer. The output should be as follows:

    Ignore the following Warning, It is because we are cheating a bit
    Warning: Polynomial is badly conditioned. Add points with distinct X
            values, reduce the degree of the polynomial, or try centering
            and scaling as described in HELP POLYFIT.
    > In polyfit at 80
     In NodeCalc at 22


    Node is Found at Powder Weight (s) =
    (Units are input units)
    Node =
          57.815
           62.78
    if multiple ouputs, check to see whether there has not been a hiccup in the code from multiple inflection points
    should be identifiable as only one point will actually make sense
    Clearly the Matlab standard polyfit is not robust enough to clearly resolve such a small amount of data... Tripling the amount of data in velocity.txt gets rid of this error for me when I tested it earlier today. The outputs also reduce to just one, 62.78 grains of powder. As I said it is just a basic code, I have tried to add as many explanations in %% marks so it is clear what I have done. It is designed to be basic, I encourage people to develop it further and post what they have done, it would be great to see some people give it a crack. As I have said I have a messy master of my own that I tweak from time to time, one day when I get a day off with miserable weather I might sit down and clean it all up but that is hours of work and is currently too low on the priority list... got better things to do like shooting!!! The first thing to do if you want to go this route is to rearrange the code so that it gives the local minima using the first derivative rather than the inflection points from the second derivative!

    I should finally add, why do all this? well once set up it is as quick as typing the velocities recorded into notepad, running the program and then writing down your node from that data set. Hence with powder variations, temp variations e.t.c. the process is faster and less frustrating than plots in excel and more precise.

    Cheers All,
    Andy.

  • #2
    Good luck . Over complicating the process rarely results in more precision . I thought super tight groups was stable grouping .
    I would rather have my gun grouping super tight at 100 and then move out further for further development then do it any other way .
    Trying to tune a load at long range when it's never even been proved at close range first seems the hard way to me.
    Wind at long range will make identifying the tight grouping load much harder as you will never know how much affect the wind may or may not of had on a particular group. Many shooters don't have access to more than 200 meters for testing anyway .
    Most full bore ranges that have access to longer ranges are not reloader friendly . I nearly got kicked off one for swapping a barrel in the parking lot and this older range official nearly had a heart attack because he thought it was a dangerous act. ??
    I would not like to be tuning loads from scratch at a full bore range none that I have seen are set up for it .
    In the USA it's much easier to find 1000 yards bench rest ranges where you can test at long range but not so easy here .
    I get my long range gun as tight as I can at a 100 and 200 BR range then I do some testing on private property out to 500 and that's about as far as I ever try to shoot at game . I miss too much if I go further and it's not safe on most properties I go to , to shoot at very extended ranges . The right property may be ok .

    Comment


    • Guest's Avatar
      Guest commented
      Editing a comment
      First off Lighten up people!

      Originally posted by Happy jack" post=20948
      Good luck . Over complicating the process rarely results in more precision . I thought super tight groups was stable grouping .

      Most full bore ranges that have access to longer ranges are not reloader friendly . I nearly got kicked off one for swapping a barrel in the parking lot and this older range official nearly had a heart attack because he thought it was a dangerous act. ??

      I would not like to be tuning loads from scratch at a full bore range none that I have seen are set up for it .
      In the USA it's much easier to find 1000 yards bench rest ranges where you can test at long range but not so easy here .
      I get my long range gun as tight as I can at a 100 and 200 BR range then I do some testing on private property out to 500 and that's about as far as I ever try to shoot at game . I miss too much if I go further and it's not safe on most properties I go to , to shoot at very extended ranges . The right property may be ok .
      Ok, I think you missed the point, It was just information, reproduced here from another forum I am a member of for those that are interested in saving time in developing a long range load. All reloading for this process is generally done (by me) at the reloading bench at home, I don't reload at the range. This isn't tuning a load, it is the first step of trying to find velocity stability vs. powder charge, to minimise vertical dispersion. It's all about getting the information you need simply and quickly, using maths...not overcomplicating it at all, some people find maths a lot less complicated than people .

      Velocity nodes and accuracy nodes may not overlap, they generally do, but in some cases they do not, hence in such cases super tight groups at 100m from an accuracy node that isn't overlapping a velocity node is useless at 1000m. This post is specifically for ladder testing with intent to find a velocity node for long range shooting, it is a mathematical method, see the title? Also, this can be done at 15m if you want to... I never said anything about shooting at beyond 200m during the data collection, mostly people only have the chrony a few feet from the muzzle, after that, this method doesn't really care where the bullet ends up, but by shooting at a target at say 100m, or 200m at the same time will also help with checking if the vibrational nodes and pressure nodes overlap or atleast follow the superposition principle comfortably enough to further the development of the powder, case, primer, projectile combination you are trying to develop.

      SC, just you wait...you'll start stretching that .204 further and further, reloading some 50 grainers for longer range stuff and soon you will be tuning that beast for knocking over foxes at half a km....

      Cheers decoy, I'm not fussed it was expected, it is simply making a tool public for those that wish to use it, once set up it actually makes the process of finding a velocity node faster than any other method I know of, you simply click run it spits out an answer i.e. its basically instant, like all those wonderful shooting apps everyone seems to be using and accepting... :P

      Nuthead, basically yes, but excel is bad, also r^2 values should be over 0.9, but that requires sufficient data, my suggestion is, take the first derivative (ask Wolfram Alpha to do it for you) of the equation excel spits out for you after you fit a poly, then plot the derivative that Wolfram gives you, this is a plot of the rate of change of propellant vs velocity, where this is a minimum is the region of stability for velocity vs proppelant... or PM me your data.

      Also, I reposted this here because of your chrony ladder test thread, basically it is part of my argument that in the search for load stability the first step is to simply find a velocity node, accuracy can be tuned by other means, adjusting seating depth, neck tension e.t.c., but when it comes to vertical dispersion velocity is king, so find the stable pressure range (i.e. the stable velocity/powder range) first by doing a 0.5 grain (or less if you want) ladder test watching for pressure but measuring the velocity of each and finding the node as I've described, or if you want just PM me your data and i'll send back your velocity nodes for the given data set.

  • #3
    Interesting...think I'll just stick to using factory ammo at short ranges. Way more fun.
    I'm in love with Jennifer Hawkins and Alessandra Ambrosio

    Comment


    • Guest's Avatar
      Guest commented
      Editing a comment
      Nice post Andy,

      from what I can gather are you saying just plot the powder charge and mv data on the x and y and then run a polynomial line of best fit over the graph? What kind of r squared values do you come up with?

      then i assume you are looking for points on the predictive plot where mv is less sensitive to charge weight. and use these as a basis to begin testing loads.

      doesn't this mean the data generation/ collection partis able to be conducted at any distance?
Working...
X