Вы находитесь на странице: 1из 6

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ

ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Отчет по
лабораторной работе № 5
Решение математических задач численными методами.
Вариант № 14

Выполнил студент группы 0491


Павлов Кирилл Игоревич

Проверил преподаватель
Кузьмина Анна Владимировна

Томск-2020
Цель работы:
Ознакомиться с численными методами решения алгебраических и
трансцендентных уравнений, систем линейных алгебраических
уравнений (СЛАУ), восстановления функциональных зависимостей
и вычисления определенного интеграла. Научиться реализовывать
данные методы программно на языке Си.

Задание:
1) Получить номер варианта задания у преподавателя, ведущего
лабораторные занятия.
2) Ознакомиться с заданием к лабораторной работе (файл
Задания.doc).
3) Ознакомиться с учебно-методическими указаниями (файл
Лаб_7.doc).
4) Составить алгоритм решения задачи согласно своему
варианту.
5) Составить блок-схему алгоритма программы.
6) Набрать текст программы на языке Си при помощи
текстового редактора.
7) Провести трансляцию и компоновку программы.
8) Решить контрольный пример.
9) Выполнить задание с использованием пакетов MS Excel и
MathCad.
10) Составить отчет по лабораторной работе в соответствии с
правилами оформления отчета (файл
Общие_указания_к_лабораторным_работам.doc).
Вариант 14:
Определить на заданном интервале изменения переменной x корни
уравнения вида F(x) = 0, используя метод секущих. Границы
интервала, коэффициенты уравнения, точность решения и
начальные приближения ввести с терминала. Предусмотреть
возможность поиска решения при одном запуске программы при
других начальных условиях (границы, коэффициенты) и задаваемой
точности.
Результаты решения вывести на экран и в файл вместе с заданными
начальными условиями и видом решаемого уравнения.
Теоретическая часть:
Метод секущих
Далеко не всегда бывает удобно находить аналитическое выражение для
производной функции, в таком случае можно использовать метод
секущих.
Для начала итерационного процесса необходимо задать два начальных
приближения х0 и х1.
Если х0 и x1 расположены достаточно близко друг к другу, то
'
производную f ( x1 ) можно заменить ее приближенным значением в
f ( x1 )  f ( x0 )
виде отношения приращения функции равного к
отношению приращения аргумента равного (x1 – x0):
' f ( x1 )  f ( x0 )
f ( x1 ) 
x1  x0 (1)
Таким образом, формула метода секущих может быть получена из
формулы Ньютона Error: Reference source not found заменой
производной выражением (1) и записана в виде:
xK  xK 1
xK 1  xK  f ( xK )
f ( xK )  f ( xK 1 ) (2)
Однако следует помнить, что при этом нет необходимости, чтобы

значения функции f ( x0 ) и f ( x1 ) обязательно имели разный знак, как


в методе половинного деления.
Процесс нахождения корня при использовании метода секущих можно
считать законченным, когда выполняется следующее условие:
xk 1  xk  E (3)
Метод секущих несколько уступает методу Ньютона в скорости
сходимости, однако не требует вычислений производной левой
части уравнения.
Таким образом, для реализации метода секущих необходимо:
Задать в явном виде уравнение f ( x) , корни которого необходимо
определить.
Определить начальные приближения х0 и х1, обеспечивающие быструю
сходимость метода.
Задать точность нахождения корня уравнения f ( x) .
Реализовать в программе итерационную процедуру, реализующую
формулу (2.5).
Результатом проведения лабораторной работы является программа,
реализующая один из описанных методов с решением контрольного
примера согласно, полученного индивидуального задания.
Практическая часть:
#include<cmath>
#include<stdio.h>
#include<conio.h>
int main()
{
float a0,a1,a2,a3,x1,e,delta,x,y;
printf("введите коэф-ы a0,a1,a2,a3\n");
scanf("%f%f%f%f",&a0,&a1,&a2,&a3);
printf("введите начальное приближение: ");
scanf("%f",&x);
printf("введите конечное приближение: ");
scanf("%f",&x1);
printf("введите точность: ");
scanf("%f",&e);
do
{
delta=x-(((x-x1) * (a0+a1*x+a2*pow(x,2) + a3*sin(x*x*x))) /
((a0+a1*x+a2*pow(x,2)+a3*sin(x*x*x))-
(a0+a1*x1+a2*pow(x1,2)+a3*sin(x1*x1*x1))));
x=x1;
x1=delta;
}while(fabs(x-delta)>e);
printf("%f",x);
y=a0+a1*x+a2*pow(x,2)+a3*sin(x*x*x);
printf("y=%f", y);
}

Вывод:
В ходе лабораторной работы можно ознакомиться с численными
методами решения алгебраических и трансцендентных уравнений,
систем линейных алгебраических уравнений (СЛАУ),
восстановления функциональных зависимостей и вычисления
определенного интеграла. Научиться реализовывать данные методы
программно на языке Си.
Вложение:

Блок-схема

начало

Scanf("",
a0,a1,a2,a3,e,a2,a3,e,x,x1)
Вычисляем f(x), f(x1)

delta=x-(((x-
x1)*(a0+a1*x+a2*pow(x,2)+a3*sin(x*x*x))
)/((a0+a1*x+a2*pow(x,2)+a3*sin(x*x*x))-
(a0+a1*x1+a2*pow(x1,2)+a3*sin(x1*x1*x1
))))

x=x1; x1=delta (x-delta)>e

Printf("%f",x)

конец