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 个)

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.

请先登录,再进行评论。

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 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by