Программирование численных методов. Нахождение корней нелинейного уравнения методом секущих

Автор работы: Пользователь скрыл имя, 20 Марта 2012 в 17:00, курсовая работа

Описание работы

Существует множество методов, позволяющих находить корни нелинейных уравнений, используя приближенные вычисления. Одним из них является метод секущих.
Метод решает уравнение вида f(x)=0. Если уравнение имеет несколько корней необходимо несколько раз использовать метод, задав различные начальные приближения. Заменив производную, f’(xn) разностью последующих значений функции, отнесенной к разности значений аргумента.

Содержание работы

Задание:3
Введение4
Разработка проекта5
Разработка программы6
Результат9
Заключение..10
Список литературы..

Файлы: 1 файл

Курсовая работа по программированию Нахождение корней нелинейного уравнения методом секущих.docx

— 64.18 Кб (Скачать файл)

Министерство  образования и науки Российской Федерации

ГОУ ВПО  «Пензенский Государственный Университет»

Кафедра «Экономическая кибернетика.»

 

 

 

 

Курсовая  работа

По дисциплине «Программирование»

На тему: «Программирование численных методов. 
Нахождение корней нелинейного уравнения методом секущих»

 

 

 

 

 

 

 

Выполнил:

 

Проверила:

 

 

 

 

 

 

Пенза 2011.

Содержание

Задание:3

Введение4

Разработка проекта5

Разработка программы6

Результат9

Заключение..10

Список литературы..11

 

Задание:

Программирование численных методов.

Существует множество методов, позволяющих находить корни нелинейных уравнений, используя приближенные вычисления. Одним из них является метод секущих.

Метод решает уравнение вида f(x)=0. Если уравнение имеет несколько корней необходимо несколько раз использовать метод, задав различные начальные приближения. Заменив производную, f’(xn) разностью последующих значений функции, отнесенной к разности значений аргумента.

 

Получим следующую итерационную формулу

 

Расчет по итерационной формуле  заканчивается, когда два последних  приближения xn и хn+1 станут достаточно близкими

|xn-xn+1|< ε

или когда |f(xn)|< ε

 

Необходимо написать программу  на языке программирования в Borland c++. Программа должна вычислять функцию 2х+cos(x)+4=0

 

Введение:

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

 

Основным значением программы  является легкость нахождения корней нелинейного уравнения. Метод секущих  подразумевает сложные расчеты, однако благодаря созданному продукту пользователю остается только ввести начальные приближения и точность ε, чтобы получить результат. В программе предусмотрен вывод всех значений, которые получаются в ходе работы, что позволит пользователю увидеть ход решения.

 

Разработка проекта

1.Вводимые данные - Х0, Х1, ε. Выводимые данные – X1.  На основе вводимых данных программа считает значения f(x), , X2. После переменной Х1 присваивается значение Х2.

2.Алгоритм решения

 

3.Данные вводимые с клавиатуры: Х0, Х1, ε – вещественные переменные, delta, X2, F1, F2 – вещественные переменные, вычисляются при выполнении программы, m – целочисленная переменная, используется для проверки вводимых данных. 

  1. Разработка программы.

Ход работы:

      • Запустил Borland C++ 3.1 и создал в нем новый файл с именем «kurs»;
      • Используя команду  «#define», создал макросы, для удобства проверки ошибок;
      • С помошью оператора «clrscr» очистил экран;
      • Объявил переменные Х0, X1, ε, X2, delta с помощью «float»
      • Добавил проверку введенных данных, используя созданные ранее макросы.
      • Циклом While задал условие |xn-xn+1|< ε
      • Вывел значение Х1 с помощью «printf»
      • Для удачного завершения программы используем «getch()»

Программа:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <stdlib.h>

#define DATA_ERROR "\n Vvedeni nekorrektnie dannie"

#define EPSOSH "\n Znachenie epsilant tol'ko bolshe 0"

#define PRESS "\n Dlya zavershenia nazhmite lyubuy klavishu"

#define RAVNZNACH "\n Priblizheniya ne mogut bit ravni"

#define EXIT; getch(); exit(0);

void main()

{

float X0, X1, EPS, X2, DELTA;

clrscr();

printf("\n Vvedite znachenie X0=");

int m=scanf("%f", &X0);

if (m!=1)

{

printf (DATA_ERROR);

printf (PRESS);

EXIT

}

printf ("Vvedite znachenie X1=");

m=scanf("%f", &X1);

if (m!=1)

{

printf (DATA_ERROR);

printf (PRESS);

EXIT

}

 

if (X1==X0)

{

printf (RAVNZNACH);

printf (PRESS);

EXIT

}

 

printf ("Vvedite znachenie EPS=");

m=scanf("%f",&EPS);

if (m!=1)

{

printf (DATA_ERROR);

printf (PRESS);

EXIT

}

if ( EPS==0 || EPS<0 )

{

printf(EPSOSH);

printf(PRESS);

EXIT

}

while (fabs(X0-X1) > EPS )

{

DELTA=(pow(2,X1)+cos(X1)+4-pow(2,X0)+cos(X0)+4)/(X1-X0);

X2=X1-(pow(2,X1)+cos(X1)+4)/DELTA;

printf ("\n X2 %8.4f DELTA %8.4f",X2,DELTA);

X0=X1;

X1=X2;

}

 

printf ("\n Poluchenni rezultat=%8.4f",X1);

printf (PRESS);

getch();

}

Тестируемые данные:

      1. Пусть     Х0=2

X1=6

ε=0,001

      1. Пусть     Х0=5

X1=5

      1. Пусть     Х0=1

X1=50

ε=0,00

      1. Пусть     Х0=5

X1=kurs

 

 

  1. Результат:

3.1

 

 

3.2

 

 

 

3.3

 

3.4

 

Заключение:

Исходная формула -  2х+cos(x)+4=0.В процессе выполнения работы я научился самостоятельно разрабатывать программы и пользоваться циклом, использовать проверку вводимых данных, а также метод секущих. Составленная мною программа работает корректно.

 

Список  литературы:

 

    1.  Вальпа О.Д. «Borland C++ Builder. Экспресс-курс.»

2006 г.

    1. Послед Б.С. «Borland C++ Builder 6. Разработка приложений.»

Информация о работе Программирование численных методов. Нахождение корней нелинейного уравнения методом секущих