How to calculate the Taylor series expansion of e^x

3 ビュー (過去 30 日間)
Scott
Scott 2016 年 11 月 11 日
編集済み: John D'Errico 2016 年 11 月 11 日
I need to implement a script that calculate the Taylor series expansion of e^x. There are two inputs: n = the number of terms in the expansions, and tolerance = basically the percent change in adding one more term.
In other words, the tolerance = | (sum_previous – sum_new) / sum_previous | < 0.000001
So the user inputs the number of terms to be added, and they specify a tolerance. I am not sure how to get the while loops to work correctly. Here's what I have so far:
old_sum = 1;
new_sum = 0;
steps = 0;
approx = 0;
i = 0;
while (abs((old_sum-new_sum)/(old_sum)))>= tolerance
old_sum = (x^i)/myFactorial(i);
new_sum = new_sum + old_sum;
i = i + 1;
steps = steps + 1;
end

採用された回答

John D'Errico
John D'Errico 2016 年 11 月 11 日
編集済み: John D'Errico 2016 年 11 月 11 日
I changed things slightly. Look carefully at the changes I made.
tolerance = 0.000001;
old_sum = 1;
new_sum = 0;
current_term = inf;
iter = 0;
while abs(current_term/old_sum) >= tolerance
old_sum = new_sum;
current_term = (x^iter)/myFactorial(iter);
new_sum = new_sum + current_term;
iter = iter + 1;
end
steps = iter;
Note that the difference between the two approximations is the variable now named current_term. So I could have written the test to work on this:
abs((new_sum - old_sum)/old_sum)
but we know what the difference in the numerator is already.
As far as incrementing both i AND the variable steps, WHY? As well, it is a bad idea to use the variable i, since i already exists in MATLAB as sqrt(-1). Better to form good habits early in your career. So I changed i to iter.
I tested the code above. It works. But be careful, for large x, it will be a problem. You should know that already, if you have discussed convergence of series in class.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLinear Algebra についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by