Items tagged with interpolation interpolation Tagged Items Feed

Function help me

February 09 2012 by yangtheary 10 Maple

Find the polynomial y=f(x) such that f(-6)=2400,f(-4)=432,f(-3)=120,f(-2)=16,f(-1)=0,f(0)=0,f(1)=-8,f(2)=0

Hi everyone,

I am trying to build a function of dsolve/numeric solution which would not include procedures for defining the value of it.

First, I need to extract solution as a 2-d array, which will contain all evaluated points of solution.

Next, I want to define a function from this set of points (like interpolation).

Say, I have an array or list of numbers (2-d points).

Now comes the main question: is there a way to interpolate some...

Hi all,

I have data which I want to give a simpler and a smaller interpolation function. Not necessary with Cubicspline as in the code attached (polynomial, exponential, etc..).

Thanks in advance

interpolation.mw

Hi everyone.

I have calculated three functions which led to three curves in a plot. Since I need to join them so as to create just one curve, I ask you if there's a method, even if approximated. I've thought about an interpolation but I don't know if it's feasible.

 

Thank you very much.

Hi all,

 I am having a very hard time with numerical stability. I am solving system of ode's (7-coupled ode's) using dsolve(stiff) and then using spline function for interpolation and finally solving system of pde's (2-coupled pde's) using pdsolve for one time step and solving all again for the next step. the solution is not stable and it requires very fine/small time step. Is there any procedure/method to improve the stability? 

 What is the stability criteria of dsolve...

Following Christopher2222 request, I wrote the following procedures for "exact" cubic Hermite spline interpolation,

p:=proc(x0,p0,m0,x1,p1,m1,x)
local t,d;
d:=x1-x0;
t:=(x-x0)/d;
p0+(d*m0+(3*(p1-p0)-d*(2*m0+m1)+(2*(p0-p1)+d*(m0+m1))*t)*t)*t
end:

pb:=proc(x0,p0,x1,p1,m1,x)
local t,d;
d:=x1-x0;
t:=(x-x0)/d;
p0+(2*(p1-p0)-d*m1+(p0-p1+d*m1)*t)*t
end:

pe:=proc(x0,p0,m0,x1,p1,x...

There have been some recent posts about interpolating data.

Attached below is a worksheet that shows some possibilities, with the functionality centering on the CurveFitting:-ArrayInterpolation command.

This is quick summary of parts of a broader document which covers both 2-d and 3-d methods (for regular grids), where I've left out the higher-efficiency methods and instead roughed in some examples involving integration and differentiation.

I've elected not to follow the 3-d Example from the ArrayInterpolation command's help-page, although using a pre-formed grid is a very fast approach to obtain just an interpolated 3-d plot. I also prefer to use the plots:-surfdata command rather than the plots:-matrixplot command, since the former let's one get the axes' tickmarks correct for the x- and y-data ranges.

The scenario is that you have a grid of data points in two dimensions (x- and y, or P- and T-, or what have you).

For each point (ie, for each 2-d pair of values) you have an associated value (or height in z, say). Hence you actually have data points in 3-d space.

How you obtained the associated (z) values depends on your own particular data collection method, or your own program. How you got the data is irrelevant here. What matters is that you have the finite number of data values, and no other easy way to generate data values at more points (let alone data for arbitrary new points). Below, we'll just create the data (once, at the start) for this example using an entirely made-up formula.

The presumption is that you might wish to plot a smooth surface that connects the 3-d data.

But you might also wish to write some program which requires interpolated (z) values at some new (x,y) 2-d points.  And you do not yet know what these 2-d point pairs are. So a pre-formed Array of points  at which to interpolate may not suffice.

Instead of using a pre-formed Array of output points, we'll contruct a procedure named `B` which can be supplied with a new (x,y) 2-d output point and (if that point lies within the original range) return an interpolated (z) value.

This procedure `B` can also be plotted, using the usual `plot3d` comamnd. It won't plot quite as fast as would a pre-computed and pre-interpolated finer grid of (x,y) values, but it should plot nicely. And the surface can be made quite smooth, by merely increasing the number of plotted points using plot3d's usual numpoints option. (Maple does not currently do "adaptive" 3-d plotting, so there's also no advantage in that respect.) But `B` does solve the secondary task, of being able to compute for any subsequent (x,y) point.

We can even integrate and differentiate `B` numerically. Of course we should keep in mind that this is somewhat error prone, since on top of usual issues with numerical differentiation there is also fact that we make the choice of interpolation method! The entire interpolated surface will differ considerably according to whether a spline, cubic (or other) interpolating scheme is chosen!

We'll use P and T as the x- and y- grid points, below, since "a name is just a name" and our choice of variables is arbitarary.

plot_interp.mw

I was wondering if there's a simple way to add something like an interpolation loop to a procedure. For example, say I have a function of 2 vars which is expensive to compute, f(x,y). I can use option cache to speed up points which are already computed, but is there an easy way to interpolate between them using ArrayInterpolation? That is, if f varies on scales of order 1, if I have calculated it at 0.1, 0.2, then It can be guessed with a spline at 0.15 accurately enough. What...

Page 1 of 1