In the previous post, http://autarkaw.wordpress.com/2010/09/01/using-int-and-solve-to-find-inverse-error-function-in-matlab/, we found the inverse error function by using the integral and solve MATLAB functions. In this blog, we find the inverse error function by using interpolation.

The value of erf(x) is given at discrete data points of x, and we use spline interpolation to find the value of x at a given value of erf(x). The given data points of (x,erf(x)) are (0,0), (0.1,0.1125), (0.25,0.2763), (0.75,0.7112), (1.0,0.8427), (1.5,0.9661), (2.0,0.9953), (5.0,1.000).

It is better to **download** (right click and save target) the program as single quotes in the pasted version do not translate properly when pasted into a mfile editor of MATLAB or you can read the **html version **for clarity and sample output.

%% FINDING INVERSE ERROR FUNCTION

% In a previous blog at autarkaw.wordpress.com (Sep 1, 2010), we set up a

% nonlinear equation to find the inverse error function.

% In this blog, we will solve this equation

% by using interpolation.

% The problem is given at

% http://numericalmethods.eng.usf.edu/blog/inverseerror.pdf

% and we are solving Exercise 2 of the pdf file.

%% TOPIC

% Finding inverse error function

%% SUMMARY

% Language : Matlab 2008a;

% Authors : Autar Kaw;

% Mfile available at

% http://numericalmethods.eng.usf.edu/blog/inverse_erf_interp_matlab.m;

% Last Revised : October 4 2010

% Abstract: This program shows you how to find the inverse error function

% using interpolation

clc

clear all

%% INTRODUCTION

disp(‘ABSTRACT’)

disp(‘ This program shows you how to’)

disp(‘ find the inverse error function’)

disp(‘ ‘)

disp(‘AUTHOR’)

disp(‘ Autar K Kaw of http://autarkaw.wordpress.com’)

disp(‘ ‘)

disp(‘MFILE SOURCE’)

disp(‘ http://numericalmethods.eng.usf.edu/blog/inverse_erf_interp_matlab.m’)

disp(‘ ‘)

disp(‘PROBLEM STATEMENT’)

disp(‘ http://numericalmethods.eng.usf.edu/blog/inverseerror.pdf Exercise 2′)

disp(‘ ‘)

disp(‘LAST REVISED’)

disp(‘ October 4, 2010′)

disp(‘ ‘)

%% INPUTS

% Value of error function

erfx=0.1125;

% Table of erf(x) vs x

xx=[0 0.1 0.25 0.75 1.0 1.5 2.0 5.0];

erfxx=[0 0.1125 0.2763 0.7112 0.8427 0.9661 0.9953 1.0000];

%% DISPLAYING INPUTS

disp(‘INPUTS’)

fprintf(‘ Inverse error function is to be found for= %g’,erfx)

disp(‘ ‘)

disp(‘ Given erf(x) vs x values’)

disp(‘_______________________’)

disp(‘ x erfx ‘)

disp(‘________________________’)

dataval=[xx;erfxx]‘;

disp(dataval)

%% CODE

if erfx>1.0 | erfx<0

disp(‘Invalid value. erf(x) only takes values in [0,1] range’)

else

inverse_erf=interp1(erfxx,xx,erfx,’cubic’);

%% DISPLAYING OUTPUTS

disp(‘OUTPUTS’)

fprintf(‘ Value of inverse error func from this mfile is= %g’,inverse_erf)

fprintf(‘ \n Value of inverse error func from MATLAB is = %g’,erfinv(erfx))

disp(‘ ‘)

end

__________________________________________________