Script to solve second order (polynomial) interpolation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script to solve second order (polynomial) interpolation
# 8  
Old 01-22-2013
OK now I see how is should work, try this:

Code:
awk '
{ P[$1]=$2 ; m=m?m:$1; n=$1>n?$1:n; x[NR]=$1 ; y[NR]=$2 }
END {
    x[0]=y[0]=0
    p=-2
    for(i=m;i<=n;i++) {
       if (i in P) { p++; printf "%0.4f %0.4f\n", i, P[i]; }
       else {
           printf "%0.4f %0.4f\n", i, \
             (((i-x[p+2]) * (i-x[p+3])) / ((x[p+1]-x[p+2]) * (x[p+1]-x[p+3]))) * y[p+1] + \
             (((i-x[p+1]) * (i-x[p+3])) / ((x[p+2]-x[p+1]) * (x[p+2]-x[p+3]))) * y[p+2] + \
             (((i-x[p+1]) * (i-x[p+2])) / ((x[p+3]-x[p+1]) * (x[p+3]-x[p+2]))) * y[p+3] ;
           printf "   (((%f-%f) * (%f-%f)) / ((%f-%f) * (%f-%f))) * %f +\n",
             i,x[p+2],i,x[p+3],x[p+1],x[p+2],x[p+1],x[p+3],y[p+1];
           printf "   (((%f-%f) * (%f-%f)) / ((%f-%f) * (%f-%f))) * %f +\n",
             i,x[p+1],i,x[p+3],x[p+2],x[p+1],x[p+2],x[p+3],y[p+2];
           printf "   (((%f-%f) * (%f-%f)) / ((%f-%f) * (%f-%f))) * %f\n",
             i,x[p+1],i,x[p+2],x[p+3],x[p+1],x[p+3],x[p+2],y[p+3];
           printf "  = %f + %f + %f\n",
             (((i-x[p+2]) * (i-x[p+3])) / ((x[p+1]-x[p+2]) * (x[p+1]-x[p+3]))) * y[p+1],
             (((i-x[p+1]) * (i-x[p+3])) / ((x[p+2]-x[p+1]) * (x[p+2]-x[p+3]))) * y[p+2],
             (((i-x[p+1]) * (i-x[p+2])) / ((x[p+3]-x[p+1]) * (x[p+3]-x[p+2]))) * y[p+3] ;
        }
    }
}' infile


Last edited by Chubler_XL; 01-22-2013 at 11:02 AM..
This User Gave Thanks to Chubler_XL For This Post:
# 9  
Old 01-22-2013
Quote:
Originally Posted by Chubler_XL
OK now I see how is should work, try this:

Code:
awk '
{ P[$1]=$2 ; m=m?m:$1; n=$1>n?$1:n; x[NR]=$1 ; y[NR]=$2 }
END {
    x[0]=y[0]=0
    p=-2
    for(i=m;i<=n;i++) {
       if (i in P) { p++; printf "%0.4f %0.4f\n", i, P[i]; }
       else {
           printf "%0.4f %0.4f\n", i, \
             (((i-x[p+2]) * (i-x[p+3])) / ((x[p+1]-x[p+2]) * (x[p+1]-x[p+3]))) * y[p+1] + \
             (((i-x[p+1]) * (i-x[p+3])) / ((x[p+2]-x[p+1]) * (x[p+2]-x[p+3]))) * y[p+2] + \
             (((i-x[p+1]) * (i-x[p+2])) / ((x[p+3]-x[p+1]) * (x[p+3]-x[p+2]))) * y[p+3] ;
           printf "   (((%f-%f) * (%f-%f)) / ((%f-%f) * (%f-%f))) * %f +\n",
             i,x[p+2],i,x[p+3],x[p+1],x[p+2],x[p+1],x[p+3],y[p+1];
           printf "   (((%f-%f) * (%f-%f)) / ((%f-%f) * (%f-%f))) * %f +\n",
             i,x[p+1],i,x[p+3],x[p+2],x[p+1],x[p+2],x[p+3],y[p+2];
           printf "   (((%f-%f) * (%f-%f)) / ((%f-%f) * (%f-%f))) * %f\n",
             i,x[p+1],i,x[p+2],x[p+3],x[p+1],x[p+3],x[p+2],y[p+3];
           printf "  = %f + %f + %f\n",
             (((i-x[p+2]) * (i-x[p+3])) / ((x[p+1]-x[p+2]) * (x[p+1]-x[p+3]))) * y[p+1],
             (((i-x[p+1]) * (i-x[p+3])) / ((x[p+2]-x[p+1]) * (x[p+2]-x[p+3]))) * y[p+2],
             (((i-x[p+1]) * (i-x[p+2])) / ((x[p+3]-x[p+1]) * (x[p+3]-x[p+2]))) * y[p+3] ;
        }
    }
}' infile


Thank you, man. You are GENIUS...
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script to solve query

Hi I have data in the below format in two columns in excel which i will copy to notepad. test as rec1, string test as rec2, byteint test as rec3, string update date as test, datetime name as tes2 string I need to add trim function on all the string columns and keep the remaining... (10 Replies)
Discussion started by: pisikar
10 Replies

2. Shell Programming and Scripting

How to solve hang issue in script?

i have one function block in the beginning of my script and there are some commands inside that function which will perform some operations. And i am invoking that function from my main script by passing some values. Sometimes it is hanging in the middle for some value. For example: For 1st... (3 Replies)
Discussion started by: thomasraj87
3 Replies

3. Shell Programming and Scripting

Hi ! whether it is possible to do interpolation in scripting...

Hi ! Experts... I just wanted to know whether it is possible in scripting...to do interpolation.... if so....have a look on my data file I need temperature and salinity value with a bin size of 0.5 m output looks somewhat like this dep temp sal 0.5 25 0.077 1 25 ... (12 Replies)
Discussion started by: nex_asp
12 Replies

4. Shell Programming and Scripting

I have a bash script and tried very hard but i couldn't solve it please help

please can you help me with this script ( very very important ) what I'm trying is to write program that accepts list of user as its argument 1- If a user or more are given as arguments, the script should reset files permissions as follows: a. Directory ~/share to 750 (if it exists). b. All... (10 Replies)
Discussion started by: testman84
10 Replies

5. Shell Programming and Scripting

Bash or awk script to solve this problem

Hi everybody! I have written some awk scripts that return me some results I need to process. At the moment I use openOffice to process them, but I am trying to find a more efficient solution using possibly a bash or awk script. I have two files, file1 is in the format: time position ... (3 Replies)
Discussion started by: Alice236
3 Replies

6. UNIX for Advanced & Expert Users

Help! SHELL or AWK script - only the masters of the forum will solve

Hello everybody! I have no experience with shell Programmer, but I need to compare 02 files. Txt and generate an output or a new file, after the comparisons. see: If the column 1 of file1 is equal to column 1 of file2, and column 3 of file2 contains the column 4 of file1, output: column1... (4 Replies)
Discussion started by: He2
4 Replies

7. Shell Programming and Scripting

Help me to solve some question about shell Script

Factorial calculation Example output: Please enter a non-negative number: 3 3! = 3 X 2 X 1 = 6 Please enter a non-negative number: 10 10! = 10 X 9 X 8 X 7 X 6 X 5 X 4 X 3 X 2 X 1 = 3628800 Please enter a non-negative number: -1 ... (1 Reply)
Discussion started by: cenco
1 Replies

8. Shell Programming and Scripting

Help me to solve some question about shell Script

Factorial calculation Example output: Please enter a non-negative number: 3 3! = 3 X 2 X 1 = 6 Please enter a non-negative number: 10 10! = 10 X 9 X 8 X 7 X 6 X 5 X 4 X 3 X 2 X 1 = 3628800 Please enter a non-negative number:... (1 Reply)
Discussion started by: cenco
1 Replies

9. UNIX for Dummies Questions & Answers

variable interpolation

I've become obsessed with trying to get this to work. As of yet, I am unable to figure it out. Unfortunately, I don't have Linux or UNIX available when I get home. Anyone have tips for me on how I can pass param1 to ID via use of COUNTER and loop? thx. LIMIT=6 param1="999999999" export... (0 Replies)
Discussion started by: egkumpe
0 Replies
Login or Register to Ask a Question