array problem

7 views
Skip to first unread message

Flex_dev

unread,
Dec 21, 2012, 4:49:36 AM12/21/12
to flex_...@googlegroups.com

private function FindSpline ():void

            {

                var n:int;

                var i:int;

                var j:int;

                var k:int;

                var iIndex:int;

               

               

                var h:Array = new Array ();

                var a:Number;

                var b:Number;

                var c:Number;

                var d:Number;

                var sum:Number;

                var s:Array = new Array ();

                var x:Array = new Array ();

                var F:Array = new Array ();

                var f:Array = new Array ();

                var p:Number;

                var m:Array = [];

                var temp:Number;

               

                for (iIndex = 0; iIndex < 10; iIndex++)

                {

                    s.push(0);

                }

                for (iIndex = 0; iIndex < arrGraphPoints.length; iIndex++)

                {

                    x.push(arrGraphPoints.getItemAt(iIndex).Flow);

                    f.push(arrGraphPoints.getItemAt(iIndex).Height);

                }       

                n = x.length;         

                for(i=n-1;i>0;i--)

            {

                F[i]=(f[i]-f[i-1])/(x[i]-x[i-1]);

                h[i-1]=x[i]-x[i-1];

            } 

            //*********** formation of h, s , f matrix **************//

               for(i=1;i<n-1;i++)

            {

                m [i] = [];

                m[i][i]=2*(h[i-1]+h[i]);

                if(i!=1)

                {

                m[i][i-1]=h[i-1];

                m[i-1][i]=h[i-1];

                }

                m[i][n-1]=6*(F[i+1]-F[i]);

            }

            //***********  forward elimination **************//

               for(i=1;i<n-2;i++)

            {

               temp=(m[i+1][i]/m[i][i]);

               for(j=1;j<=n-1;j++)

                m[i+1][j]-=temp*m[i][j];

            }

            //*********** back ward substitution *********//

            for(i=n-2;i>0;i--)

            {

                sum=0;

            for(j=i;j<=n-2;j++)

                sum+=m[i][j]*s[j];

             s[i]=(m[i][n-1]-sum)/m[i][i];

            }

            p = Number (tiInput.text);

            for(i=0;i<n-1;i++)

                if(x[i]<=p&&p<=x[i+1])

          {

            a=(s[i+1]-s[i])/(6*h[i]);

            b=s[i]/2;

            c=(f[i+1]-f[i])/h[i]-(2*h[i]*s[i]+s[i+1]*h[i])/6;

            d=f[i];

            sum=a*Math.pow((p-x[i]),3)+b*Math.pow((p-x[i]),2)+c*(p-x[i])+d;

          }

           

            }

 

The above program runs fine when the arrGraphPoints.length is equal to 4 , when the length exceeds four , the program is not working properly .. Is the 2 dimensonal array used is perfect ? let me know what is wrong in this code.

Reply all
Reply to author
Forward
0 new messages