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 and we are solving Exercise 2 of the pdf file.
Contents
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(' ')
ABSTRACT This program shows you how to find the inverse error function AUTHOR Autar K Kaw of http://autarkaw.wordpress.com MFILE SOURCE http://numericalmethods.eng.usf.edu/blog/inverse_erf_interp_matlab.m PROBLEM STATEMENT http://numericalmethods.eng.usf.edu/blog/inverseerror.pdf Exercise 2 LAST REVISED October 4, 2010
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)
INPUTS Inverse error function is to be found for= 0.1125 Given erf(x) vs x values _______________________ x erfx ________________________ 0 0 0.1000 0.1125 0.2500 0.2763 0.7500 0.7112 1.0000 0.8427 1.5000 0.9661 2.0000 0.9953 5.0000 1.0000
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(' ')
OUTPUTS Value of inverse error func from this mfile is= 0.1 Value of inverse error func from MATLAB is = 0.100033
end