Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Помогите с задачей. Ряд Тейлора. (http://www.tehnari.ru/f41/t40333/)

Wardler 27.09.2010 17:41

Помогите с задачей. Ряд Тейлора.
 
Вложений: 1
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от значения х_нач до х_кон с шагом dx с точностью Эбсилан. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.

Помогите решить.. Пожалуйста

Wardler 27.09.2010 18:02

с точностью Экспоненты*

KiD2 27.09.2010 19:03

Язык программирования какой?

Vladimir_S 27.09.2010 22:44

Цитата:

Сообщение от Wardler (Сообщение 397255)
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от значения х_нач до х_кон с шагом dx с точностью Эбсилан. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.

Помогите решить.. Пожалуйста

Будем считать, что утаённый от нас язык программирования - Паскаль. Но прежде всего - одна ремарка. В бытность мою студентом, наш преподаватель математики предупредил сразу, что за незнание латинского и греческого алфавитов будет гнать с экзамена без пощады и жалости. И был, с моей точки зрения, абсолютно прав. Это я к тому, что греческая буква называется "эпсилон", а вовсе никакой не "Эбсилан". А теперь - программа:
Код:

CONST
 Eps=0.0001;
VAR
 Xbeg,Xfin,DX,SUM,X:REAL;
 N:WORD;
 Nx,i:INTEGER;

PROCEDURE SUMS(Xs:REAL; Var S:REAL; Var Ns:WORD);
 VAR
  a:REAL;
 Begin
  a:=1;
  S:=1;
  Ns:=0;
  Repeat
    Inc(Ns);
    a:=-a*SQR(Xs)/Ns;
    S:=S+a;
  Until Abs(a)<Eps;
 End;

BEGIN
 Write('Xbeg= ');
 ReadLn(Xbeg);
 Write('Xfin= ');
 ReadLn(Xfin);
 Write('DX= ');
 ReadLn(DX);
 WriteLn;
 WriteLn('        Results of calculation:');
 WriteLn('    X          SUM        N  Exp(-Sqr(X))');
 WriteLn;
 Nx:=ROUND((Xfin-Xbeg)/DX);
 X:=Xbeg;
 For i:=0 to Nx do
  begin
  X:=DX*i;
  SUMS(X,SUM,N);
  WriteLn(X:8:5,'    ',SUM:7:5,'    ',N:3,'    ',Exp(-SQR(X)):7:5);
  end;
 ReadLn;
END.

Несколько пояснений:
1. Точность, она же пресловутый эпсилон, она же (в программе) Eps задана в виде константы.
2. Вводится сначала МЕНЬШАЯ граница диапазона Х, затем - бОльшая.
3. Последняя колонка дана для сравнения: в ней вычислено точное значение разлагаемой в ряд функции.

Wardler 28.09.2010 00:31

Владимир, большое вам спасибо.. с языком программирования не ошиблись.. насчет "эпсилон" учту, буду учиться и вникать:tehnari_ru_657:.. надеюсь больше вас не потревожу :tehnari_ru_674:

Vladimir_S 28.09.2010 09:54

А, черт - сейчас посмотрел и заметил ошибку. Вместо 6-й снизу строки
X:=DX*i;
надо
X:=Xbeg+DX*i;
Виноват!

Wardler 28.09.2010 17:15

не пойму..( почему не получается к примеру задать xbeg=50 ; xfin=70 ; xd(шаг)=0.5 - выдает ошибку

Vladimir_S 28.09.2010 17:33

Цитата:

Сообщение от Wardler (Сообщение 397654)
не пойму..( почему не получается к примеру задать xbeg=50 ; xfin=70 ; xd(шаг)=0.5 - выдает ошибку

Ну Вы размахнули! Это же Exp(-2500)! С такими аргументами, боюсь, компьютеру не справиться. Вы уж поскромнее что-нибудь - типа Xbeg=0, Xfin=1, DX=0.1 ну и т.п. попробуйте.
P.S. И обязательно исправьте, как сказано выше.

johnny_05 27.05.2011 02:19

Как я понял эта формула a:=-a*SQR(Xs)/Ns взята из условия? Т.е. exp(-sqr(x))= (((-1)^n)*(x^2*n))/n!

Vladimir_S 27.05.2011 10:13

Цитата:

Сообщение от johnny_05 (Сообщение 527608)
Как я понял эта формула a:=-a*SQR(Xs)/Ns взята из условия? Т.е. exp(-sqr(x))= (((-1)^n)*(x^2*n))/n!

Не понял - в чем вопрос? Ну да, это разложение функции exp(-sqr(x)) в ряд Тейлора в окрестности х=0.


Часовой пояс GMT +4, время: 03:00.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.