Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Построение обратной функции

.docx
Скачиваний:
54
Добавлен:
06.01.2017
Размер:
42.57 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО

ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

ИВМиИТ (ВМК)

КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ

СЕМЕСТРОВАЯ РАБОТА НА ТЕМУ:

«Построение обратной функции»

Работу выполнил:

студент 3 курса 09-315 группы

Халиков Роман Радиевич.

Работу проверил:

Глазырина Людмила Леонидовна.

“___”_______________ 2015 г.

______________

(подпись)

Казань 2015

Оглавление

Постановка задачи. 3

Решение задачи. 4

Вывод. 9

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

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

Постановка задачи.

Цель задания – построить обратную функцию для Si(x) методом Ньютона (метод касательных) и методом хорд.

Построить таблицу обратной Si(x) функции F=Si-1(x):

, , .

Для этого решить уравнение:

, где

.

Найти такие, что для при n=10.

Решение задачи.

Метод Ньютона (метод касательных).

Задается начальное приближение . Следующие приближения находятся по формуле:

где =, а равна заданной функции.

Итерационный процесс выполняем до тех пор, пока выполняется условие

r(xi)=|Si(xik) – Fi|>10-6.

Функция r(xi) называется невязкой.

Так как исходная функция не является монотонной, то решаем задачу, разбив ее на две части: 1) при =0...3, 2) при =3...4.

В итоге получаем таблицу:

Кол-во итераций

0

0

0

1

0,3

0,298504

0,168324

3

0,6

0,58813

0,338262

4

0,9

0,860471

0,511557

4

1,2

1,108047

0,690249

4

1,5

1,324684

0,876905

4

1,8

1,505817

1,075033

5

2,1

1,648698

1,289849

5

2,4

1,752486

1,530031

5

2,7

1,818212

1,812478

6

3

1,848653

2,181079

6

3,1

1,851659

2,879586

7

3,2

1,851401

3,509055

6

3,3

1,848081

3,583177

5

3,4

1,841914

3,648314

5

3,5

1,833125

3,707515

4

3,6

1,821948

3,762454

4

3,7

1,808621

3,814159

4

3,8

1,79339

3,863332

3

3,9

1,776501

3,910462

3

4

1,758203

3,955925

3

График функций:

Метод хорд для построения обратной функции.

Задается начальное приближение, которое находится по методу Ньютона.

Следующие приближения находятся по формуле:

где =.

Получаем таблицу значений функции и график:

Кол-во итераций

0

0

0

1

0,3

0,298504

0,168324

4

0,6

0,58813

0,338262

4

0,9

0,860471

0,511557

5

1,2

1,108047

0,690249

5

1,5

1,324684

0,876906

5

1,8

1,505817

1,075033

6

2,1

1,648698

1,289849

6

2,4

1,752486

1,530031

7

2,7

1,818212

1,812478

8

3

1,848653

2,181081

9

3,1

1,851659

2,879586

9

3,2

1,851401

3,509055

8

3,3

1,848081

3,583177

6

3,4

1,841914

3,648314

6

3,5

1,833125

3,707514

5

3,6

1,821948

3,762454

5

3,7

1,808621

3,814159

4

3,8

1,79339

3,86333

4

3,9

1,776501

3,910462

3

4

1,758203

3,955925

4

Вывод.

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

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.IO;

namespace CHM_3

{

class Program

{

static int n = 11;

static double eps = 0.000001;

static int[] k_it_new = new int[n];

static int[] k_it_hordy = new int[n];

static void Main(string[] args)

{

double a = 3;

double b = 4;

double h1 = (b - a) / (n - 1);

double h2 = 1.0 * (4 - b) / (n - 1);

double[] x = new double[n];

for (int i = 0; i < n; i++)

{

x[i] = a + i * h1;

}

double[] f = new double[n];

for (int i = 0; i < n; i++)

{

f[i] = Sum(x[i]);

}

double[] F = FunctionF(x[0], x[n - 1], n);

using (StreamWriter sw = new StreamWriter("C:/Users/Роман/Desktop/3.txt"))

{

sw.WriteLine("Метод касательных Ньютона: x[i] \t f(x[i]) \t z[i] \t F(x[i]) \t i");

for (int i = 0; i < n; i++)

{

sw.WriteLine("{0:0.######} \t {1:0.######} \t {2:0.######} \t {3:0.######} \t {4:0.######}",

x[i], f[i], Newton(x[i], F[i], i), F[i], k_it_new[i]);

}

sw.WriteLine("Метод хорд: x[i] \t f(x[i]) \t z[i] \t F(x[i]) \t i");

for (int i = 0; i < n; i++)

{

sw.WriteLine("{0:0.######} \t {1:0.######} \t {2:0.######} \t {3:0.######} \t {4:0.######}",

x[i], f[i], Hordy(x[i], F[i], i), F[i], k_it_hordy[i]);

}

}

}

public static double Sum(double x)

{

double eps = 0.000001;

int i = 0;

double s = 0;

double ai = x;

double qn = 0;

while (Math.Abs(ai) >= eps)

{

s = s + ai;

qn = (-x * x * (2 * i + 1)) / ((2 * i + 3) * (2 * i + 3) * (2 * i + 2));

ai = ai * qn;

i++;

}

return s;

}

public static double Df(double x)

{

if (x == 0) return 1;

return Math.Sin(x) / x;

}

//Фyнкция Fi

public static double[] FunctionF(double x0, double xn, int n)

{

double[] F = new double[n];

for (int i = 0; i < n; i++)

{

F[i] = Sum(x0) + i * (Sum(xn) - Sum(x0)) / n;

}

return F;

}

//Метод Ньютона

public static double Newton(double x, double F, int i)

{

double z0 = x;

k_it_new[i] = 1;

double r = Sum(z0) - F;

double zk = z0 - r / Df(z0);

while (Math.Abs(r) > eps)

{

r = Sum(z0) - F;

zk = z0 - r / Df(z0);

z0 = zk;

k_it_new[i]++;

}

return zk;

}

//Метод хорд

public static double Hordy(double x, double F, int i)

{

double z0 = x;

double zk2 = 0;

k_it_hordy[i] = 1;

double r = Sum(z0) - F;

double zk = z0 - r/Df(z0);

while (Math.Abs(r) > eps)

{

r = Sum(zk) - F;

zk2=(z0*(Sum(zk)-F)-zk*(Sum(z0)-F))/(Sum(zk)-Sum(z0));

z0 = zk;

zk = zk2;

k_it_hordy[i]++;

}

return zk2;

}

}

}

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

1. Мацокин А. М., Сорокин С. Б. Численные методы: Курс лекций / Новосиб. гос. ун-т. Новосибирск, 2006: Численный анализ. 132 с.

2. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы / Издательство «Лаборатория знаний», 7 издание, 2012, 636 с.

Страница 11