How to code Taylor's series approximation of Error function? Is following code right? Please help

z=0:4; ert=zeros(1,length(z)); sm=zeros(1,length(z)); sm=0; for k=1:length(z) for n=0:500 sm=sm+((-1)^n*z(k)^(2*n+1))/(gamma(n-1)*(2*n+1)); end ert(k)=(2/sqrt(pi))*sm; end

답변 (2개)

Torsten
Torsten 2017년 3월 8일
편집: Torsten 2017년 3월 8일
Although the coding is not optimal, it looks ok.
Why don't you just compare "ert(k)" and erf(z(k)) to get an answer to your question ?
Best wishes
Torsten.

댓글 수: 1

if true
% code
end
In the above code, I've compared answers with inbuilt 'erf' MATLAB command answers. I'm getting correct answers only for 0 to 3 after that m getting NaN.

댓글을 달려면 로그인하십시오.

Torsten
Torsten 2017년 3월 8일
편집: Torsten 2017년 3월 9일
You must avoid to explictly calculate z^(2*n+1)/n!.
For large n and |z|>1, you'll get an infinity/infinity problem.
Use that
[(z^2)^n/n!] = [(z^2)^(n-1)/(n-1)!] * (z^2/n).
Thus, you can calculate summand (n) of the series from summand (n-1) instead of recalculating every summand anew.
Best wishes
Torsten.

카테고리

도움말 센터File Exchange에서 Mathematics에 대해 자세히 알아보기

질문:

2017년 3월 8일

편집:

2017년 3월 9일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by