Разложение функции в ряд Тейлора



Скачать 69.02 Kb.
Дата07.11.2016
Размер69.02 Kb.

(...В представленной на сайте версии работы изменены числовые данные. Для получения работы с корректными величинами, обратитесь на www.diplomant-spb.ru ...)

Разложение функции в ряд Тейлора.
Содержание



?. Задание на проект. 3

?. Разложение в ряд Тейлора. 4

?. Создание программного обеспечения 8

?.?. Блок схема программы. 8

?.?. Общие сведения о программе 9

?.?. Листинг программы 11

?.?. Результаты работы 13

Список использованной литературы. 15




?. Задание на проект.


Вычислить интеграл в пределах от ?.? до ?.?, выбрав в качестве подинтегральной функции ch(x).


Ограничения:

  1. Число дискретов для табулирования функции при вычислении интеграла не должно быть меньше ??.

  2. Значения подинтегральной функции в каждой дискретной точке вычислять по методике, изложенной в указаниях по выполнению шестой лабораторной работы.

  3. Для вычисления интеграла можно использовать любую циклическую структуру.

  4. Доступ к значениям табулированной функции выполнять через указатели.

  5. Табулированные значения сохранять в файл, а вычисление интегралов осуществлять в подроограммах.

?. Разложение в ряд Тейлора.


При решении многих задач возникает необходимость вычисления значений некоторых функций. При ручных вычислениях не всегда под рукой таблицы; при компьютерной реализации в конкретной среде программирования иногда обнаруживается отсутствие готового программного средства в библиотеке.

Если не удастся найти готовую аппроксимацию для искомой функции, на помощь может прийти факт, что аналитическая функция может быть представлена степенным рядом: всякая аналитическая при x=x* функция F(x) разлагается в окрестности точки x* в ряд Тейлора:

(при x*=? этот ряд называется рядом Маклорена).

Сходящиеся ряды Тейлора являются основой для вычисления значений функций в некотором диапазоне значений аргумента.

Перепишем ряд Тейлора в виде:



,

где остаточный член ряда



Необходимым условием сходимости ряда является стремление N-го члена к нулю при N®¥ .Увы, это условие не является достаточным: например, гармонический ряд



расходится.

Для знакочередующегося ряда накопление суммы можно вести до такого N, при котором абсолютная величина члена ряда меньше заданной величины точности (абсолютной погрешности) или ее отношение к модулю накопленной суммы меньше заданной относительной погрешности. Для других рядов можно лишь рекомендовать накопление суммы до тех пор, пока добавление очередных членов не перестанет сказываться на заданном числе значащих цифр итога – гарантий истинности результата нет.

Использование рядов эффективно при наличии быстрой сходимости. Так для вычисления значений функции J?(x), являющейся решением дифференциального уравнения Бесселя при n=? (возникает в задачах теплопроводности и диффузии)



,

может быть использовано разложение в ряд



,

с весьма быстрым убыванием слагаемых (по модулю ) для x.

При вычислении значений показательной функции

остаточный член которой равен



,

для ускорения сходимости берем x={x}+q , где {x} - ближайшее целое, и используем разложение



,

где первый сомножитель легко получить возведением числа в целую степень (например, последовательным умножением) и второй - вычислением суммы отрезка ряда с заданной точностью (здесь сходимость достаточно велика; значение ?/n! при n~? равно ?.?????? и сумма ? членов ряда гарантирует не менее ? верных знаков).

Иногда приходится проводить и более существенные преобразования. Так для вычисления значений логарифмической функции ряд

мало пригоден, так как он сходится лишь при -? < x £? и к тому сходится очень медленно (при точности в ?% потребуется искать не менее ??? членов ряда). Поэтому берут x = z ×?m , где ?.? £z z = (?-t) / (?+t) и получают



При вычислении тригонометрических функций аргумент с помощью известных формул приведения сводят к интервалу [?, /p?] , где ряды Тейлора сходятся достаточно быстро:





Степенные ряды могут оказаться полезными и при решении дифференциальных и интегральных уравнений или вычислении некоторых “неберущихся” интегралов типа





?. Создание программного обеспечения




?.?. Блок схема программы.





Подключение стандартных библиотек С++




Определение переменных программы













Определить пределы интегрирования (а и b)



Вычислить шаг

h=(b-a)/n

Открыть файл для записи

date.dat


a=xx?

I = ?



X = *buff


X = -?*(*buff)


Result=result+(k?+k?)/?


Buff = buff + ?


I = i+?

?.?. Общие сведения о программе

Функция ch(x) вычисляется по формуле:



В реализованном программном обеспечении функция EXP_P() реализует нахождение ех путем разложения в ряд Тейлора.

Входными данными являются вещественные (целые числа) числа.

Выходными – расчетными данными являются вещественные числа, записанные в файл DATE.DAT. Выходной файл создается в каталоге, откуда был произведен запуск программы.

Запуск программы осуществляется с помощью файла СН_Х.ЕХЕ. Запускающий файл можно запустить в режиме MS-DOC (Пуск – Выполнить - в строке набрать CMD {Enter}). В окне эмуляции MS-DOC с помощью команды CD (смена каталога) выбрать папку с программой и запустить ее, пример на рисунке ниже:

Программное обеспечение разработано в среде Borland Turbo C++ версии ?.?.

Разработанная программа может запускаться на любых IBM-совместимых персональных компьютерах, с процессором не ниже ?????. Объем ОЗУ не менее ? Мб. Видеоадаптер – любой. Ввиду малого объема исполняемого файла – ????? байт, программа может быть размещена на любом носителе информации.

?.?. Листинг программы


# include

# include

# include

# include

# include

# include


#define arraymax ???
float x,a,b,h;

//---------Funstions----------

float exp_p()

{

float expx,eps,tek,xx;



int j;
expx = ?;

xx=x;


eps = ?.???;

tek=?;


j = ?;

do

{



tek=tek * xx / j;

expx=expx+tek;

j++;

}while (fabs(tek)>eps);



return(expx);

}

//---------------------------------



//-------Base program---------

int main(void)

{

double expp,result;



float xx?,k?,k?;

float tyl[arraymax], *buff;

int i,j,n;
clrscr();

buff=tyl;

printf("Input a = ");

scanf("%f",&a);

printf("Input b = ");

scanf("%f",&b);

do

{

printf("Input kol-vo otrezkov (n>=??) = ");



scanf("%d",&n);

}

while (n

h=(b-a)/n;

printf("h = %f",h);

printf("\n");

xx?=a;


*buff = a;

ofstream outDateFile("date.dat");

if (! outDateFile)

{

cerr << "File not open!" << endl;



exit (?);

}

//Output data to file



outDateFile << "Ishodnye dannye" << endl;

outDateFile << " " << endl;

for (i = ?; i < n+?; i++, *buff++)

{

*buff = a;



outDateFile << *buff << endl;

a = a+h;


}

// Rjad Teylora i integral

a = xx?;

outDateFile << " " << endl;

outDateFile << " " << endl;

outDateFile << "Results" << endl;

outDateFile << " " << endl;

for (i=?; i < n+?; i++)

{

x=*buff;


k?=exp_p();

x=-?*(*buff);

k?=exp_p();

result=result+(k?+k?)/?;

outDateFile << (k?+k?)/? << endl;

buff=buff+?;


}

outDateFile << "Integral" << endl;

outDateFile << result << endl;

printf("FINISH ! Result in file DATE.DAT");

printf("\n");

printf("integral = %f", result);

printf("\n");

getch();


}

//-------end of program------------



?.?. Результаты работы




Файл DATE.DAT, содержащий рассчитанные значения выглядит следующим образом:


Список использованной литературы.





  1. Уинер Р. Язык Turbo Си: Пер. с англ. — М.: Мир, ????. — ??? с: йл.

  2. Уэйт М., Прата С, Мартин Д. Язык Си. Руководство для начинающих: Пер. с англ. — М.: Мир, ????. — ??? с: ил.

  3. Вирт И. Алгоритмы и структуры данных: Пер. с англ. — М.: Мир, ????. — ??? с: ил.

  4. Зелковиц М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения: Пер. с англ. — М.: Мир, ????. — ??? с: ил.

  5. Мик Б. и др. Практическое руководство по программированию: Пер. с англ. — М.: Радио и связь, ????. — ??? с: ил






База данных защищена авторским правом ©bezogr.ru 2016
обратиться к администрации

    Главная страница