Завдання № 50. Обчислити експоненту із заданою точністю » Pascal - основи програмування

Основи програмування на мові Pascal

 

Спонсори

Завдання № 50. Обчислити експоненту із заданою точністю

Завдання № 50. Обчислити експоненту із заданою точністю
Формулювання. Дано дійсне число x. Обчислити значення експоненційної функції (тобто, показовою функції ex, де e - математична константа,) в точці x із заданою точністю eps за допомогою ряду Тейлора:
Примітка 1: показовими називаються функції виду ax, де a - деякий дійсно-тельное число, x - незалежна змінна, яка є показником ступеня.
Примітка 2: ряд Тейлора - це подання функції у вигляді суми (можливо, беско-нечно) деяких інших функцій за особливими правилами (що вимагає детального математиче-ського обґрунтування, що в даному випадку нам не потрібно).
Рішення. Не вникаючи в теоретичну частину і вважаючи представлену формулу коректною, спробуємо розібратися в тому, що ж нам необхідно зробити для того, щоб вирішити цю задачу:
1) Нам дана деяка точка на осі Ox, і ми повинні обчислити значення функції ex в цій точці. Припустимо, якщо x = 4, то значення функції в цій точці буде дорівнювати;
2) При цьому обчислення необхідно реалізувати за допомогою заданої нескінченної форму-ли, в якій додаток кожного чергового доданка збільшує точність результата;
3) Точність повинна скласти дійсне число eps, менше 1 - це означає, що коли чергове прибавляемое до суми доданок буде менше eps, то необхідно завершити обчислення і видати результат на екран. Ця умова обов'язково виконається, так як математично доведено, що кожне наступне доданок у ряді Тейлора менше попе-дущего, отже, нескінченна послідовність доданків - це нескінченно спадна послідовність.
Тепер розберемося з обчисленням самого ряду. Очевидно, що будь-яке його доданок, починаючи з 2-го, можна отримати з попереднього, помноживши його на x і розділивши на натуральне число, яв-рами номером поточного кроку при послідовному обчисленні (візьмемо до уваги те, що тоді кроки потрібно нумерувати з нуля ). Значення x нам відомо на будь-якому кроці, а от номер поточного кроку (будемо зберігати його в змінній n) доведеться фіксувати.
Створимо речову змінну expf (від англ. Exponential function - Експоненціальна функція) для накопичення суми доданків. Будемо вважати нульовою крок вже виконаним, оскільки перший доданок в ряду - константа 1, і у зв'язку з цим expf можна заздалегідь проініціалізі-ровать числом 1:

expf: = 1;

Так як ми починаємо обчислення не з нульового, а з першого кроку, то також потрібно ініціати-лизировать значення n (числом 1, так як наступний крок буде першим) і p (у ній буде збе-ниться значення останнього обчисленого доданка):
n: = 1;
p: = 1;

Тепер можна приступити до розробки циклу. З урахуванням заданої точності eps умовою його продовження буде abs (p)> = eps, де abs (p) - модуль числа p (модуль потрібен для того, щоб не виникло помилки, якщо введено негативне x).
У циклі необхідно помножити p на x і доділити його на поточний номер кроку n, щоб забезпечити реалізацію факторіала в знаменнику, після чого додати нове доданок p до ре-док expf і збільшити n для наступного кроку:
while abs (p)> = eps do begin
  p: = p * x / n;
  expf: = expf + p;
  inc (n)
end;

Після виходу з циклу потрібно здійснити форматований вивід результату expf на екран з деякою кількістю цифр після крапки, наприклад, п'ятьма. Відзначимо, що якщо при цьому введене eps містило менше 5 цифр після крапки, то сформоване значення expf буде, відповідно, неточним.

Код:


  1. program ExpFunc;
  2. var
  3. x, eps, expf, p: real;
  4. n: word;
  5. begin
  6. readln(x, eps);
  7. expf := 1;
  8. n := 1;
  9. p := 1;
  10. while abs(p) >= eps do begin
  11. p := p * x / n;
  12. expf := expf + p;
  13. inc(n)
  14. end;
  15. writeln(expf:0:5)
  16. end.

0050.-ExpFunc.rar [619 b] (cкачувань: 4)

скачать dle 10.4фильмы бесплатно Попередня сторінка » Завдання № 49. Перевірити баланс кругл...