Файл: Численные методы.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.03.2024

Просмотров: 6

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ

КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное

бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»



Кафедра «Информатика»

Лабораторная работа № 1

по теме

«Методы решения нелинейных уравнений»

по дисциплине «Численные методы»

Выполнил:

Проверил:

Москва

1. Задание


  1. Выбрать индивидуальное задание из табл. 1-1:

  • нелинейное уравнение;

  • методы решения нелинейного уравнения для выполнения 3-х итераций;

  1. Отделить корни заданного уравнения графическим и аналитическим методом с использованием средств пакета Scilab.

  2. Для каждого из заданных методов провести исследование функции нелинейного уравнения:

  • проверить выполнение условий сходимости вычислительного процесса, в случае расходящегося процесса – сделать необходимые преобразования для обеспечения сходимости;

  • выбрать начальное приближение к корню;

  • сформулировать условие окончания этапа уточнения корня.

  1. С использованием итерационной формуле 1-го заданного методу провести расчет трех итераций с использованием средств мат. пакета. Результаты расчета свести в табл. 1-2.

  2. Оценить погрешность результата после 3-х итераций.

  3. Для 2-го заданного метода выполнить решение уравнения с точностью

10-4, создав программу, реализующую заданный метод. Произвести расчет, а результаты решений свести в табл. 1-2.

  1. Найти решение нелинейного уравнения на отдел

2. Вариант задания







4 – метод хорд, а 1 – метод половинного деления.

3. Выполнение

3.1 Этап отделения корня



Из построенного графика функции f(x) видно, что на отрезке [-0.4;-0.3] есть один корень. На этом графический способ отделения корней заканчивается.

Другой вариант отделения корня – решить задачу аналитически.

Для аналитического отделения корня построена таблица. Она требует пояснений. В столбцах таблицы выведены некоторые значения аргумента x на заданном отрезке, а также значения функций f(x), при этих значениях x.

Видно, что на отрезке [-0.4;-0.3] функция f(x) меняет знак, значит существует, по крайней мере, один корень.

Значения первой производной в заданных точках отрезка [-0.4;-0.3] не меняет знак, что вызывает некоторую надежду о том, что не меняет знак на всем отрезке [-0.4;-0.3], но делать вывод об этом не совсем корректно с точки зрения математики. Однако анализ аналитического выражения = (cos(1/x)/x2 ) + 1 приводит к выводу, что < -4 при любых значениях x. А это значит, что отрицательно на всем отрезке [-0.4;-0.3], и уже из этого следует, что на отрезке [-0.4;-0.3] функция f(x) монотонна и имеет один корень.

3.2 Этап уточнения корня

Необходимые и достаточные условия для метода хорд:

непрерывна на [a;b] и , это выполняется

и отличны от нуля и сохраняют знаки для

, это выполняется

В нашем случае на отрезке [-0.4;-0.3] требования сходимости выполняются.

На этапе отделения корня было показано, что для функции f(x)=x-sin(1/x) вторая производная <0 на отрезке [-0.4;-0.3] и, следовательно, неподвижной точкой является точка = b = -0.3, так как f”(-0.3)*f(-0.3) > 0

Таким образом, полагая = a= -0.4, получим сходящуюся последовательность приближений к корню.

В рассматриваемой задаче рекуррентная формула принимает следующий вид

= +

Оценку погрешности можно проводить по любой из формул или , где m1 и M1 – наименьшее и наибольшее значения на отрезке. В случае, если M1
Для получения решения уравнения методом хорд воспользуемся следующей рекуррентной формулой:



Результаты вычислений представлены в виде следующей таблицы:


n

Xn

f(xn)

0

-0.4

0.198

1

-0.157

-0.06

2

-0.343

-0.119

3

-0.89

0.012



Оценку погрешности результата, вычисленного методом хорд, получим по формуле

. Тогда после трех итераций

| - | <=

Метод половинного деления, написанный на питоне:

import math
def half_interval(a, b):

    return (a + b) / 2
def get_parametr():

    a = float(input("Введите точку a :"))

    b = float(input("Введите точку b :"))

    E = float(input("Введите точность E:"))
    print('a = {a} Тип:{a1}\nb = {b} Тип {b1}\nE = {E} Тип:{E1}'

      .format(a=a, a1=type(a), b=b, b1=type(b), E=E, E1=type(E))

      )

    return a, b, E

def func(x):

    return x - math.sin(1/x)

def start():

    a, b, E = get_parametr()

    counter = 0

    max_counter = 200

    while abs(b - a) > E:
        counter += 1

        if counter >= max_counter:

            break
        if abs(b - a) <= E:

            break
        print('\n\nШаг №{counter}'.format(counter=counter))

      

        fa = func(a)

        c = half_interval(a, b)

        fc = func(c)

        if fa * fc > 0:

            a = c

        else:

            b = c

        print('fa = {f_a} fc = {f_c} fa * fc = {res}'.format(f_a=fa, f_c=fc, res=fa * fc))

        print('a = {a} b = {b} x = {x} fx = {f_x}'.format(a=a, b=b, x=(a+b)/2, f_x=fc))

к

x

f(x)

a

b

1

-0.375

-0.06937060048564314

-0.4

-0.35

2

-0.3625

0.08227262663581197

-0.375

-0.35

3

-0.35624999999999996

0.011178785065124874

-0.3625

-0.35

4

-0.359375


-0.02788213054197286

-0.3625

-0.35624999999999996

5

-0.3609375

-0.008051858933839195

-0.3625

-0.359375

6

-0.36015625

0.0016379281287689507

-0.3609375

-0.359375

7

-0.36054687500000004


-0.0031882866854368586

-0.3609375

-0.36015625

8

-0.36074218750000003

-0.0007705173213234939

-0.3609375

-0.36054687500000004

9

-0.36064453125000007

0.0004348699202055828

-0.36074218750000003

-0.36054687500000004

10

-0.360693359375

-0.00016753244951156487

-0.36074218750000003

-0.36064453125000007

0>