Мегаобучалка Главная | О нас | Обратная связь


Алгоритмы нахождения корней уравнения



2019-07-03 391 Обсуждений (0)
Алгоритмы нахождения корней уравнения 0.00 из 5.00 0 оценок




Дисциплина: «ИНФОРМАТИКА»

 

 

КУРСОВАЯ РАБОТА

 

Тема: «Решение прикладных задач численными методами»

 

Москва 2009 г.


ЦЕЛЬ РАБОТЫ:

 

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

 

Время: 12 часов.

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

 

Работа состоит из 2-х частей.

Цель первой части курсовой работы: получить практические навыки в использовании численных методов решения не линейных уравнений используемых в прикладных задачах.

Для выполнения 1 части работы необходимо:

· Составить программу и рассчитать значения функции в левой части нелинейного уравнения для решения задачи отделения корней;

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

· Ввести программу в компьютер, отладить, решить задачу с точностью ε=0,0001 и вывести результат;

· Предусмотреть в программе вывод на экран дисплея процессора получения корня.

Задание на выполнение первой части курсовой работы:


Вариант №21.

Уравнение: 0,25 x 3 + x -1,2502=0:

Отрезок, содержащий корень: [0;2].

 

I. Математическое описание численных методов решения

 

Метод деления отрезка пополам (метод дихотомии).

 

Этот метод позволяет отыскать корень уравнения с любой наперёд заданной точностью εε . искомый корень x уравнения уже отделен, т.е.указан отрезок [а, в] непрерывности функции f ( x ) такой, что на концах этого отрезка функция f(x) принимает различные значения:

 

f ( a )* f ( b )>0

В начале находится середина отрезка [ a, b ]:

и вычисляется значение функции в точке с, т.е. находится f ( c ). Если f ( c )=0, то мы точно нашли корень уравнения. Если же f ( c )≠0 ,то знак этой величины сравнивается со знаками функции y = f ( x ) в концах отрезка [ a, b ]. Из двух отрезков [ a, с], [ с, b ] для дальнейшего рассмотрения оставляется тот, в концах которого функция имеет разные знаки. С оставленным отрезком поступаем аналогичным образом. расчет прекращается, когда оставленный отрезок будет иметь длину меньше 2ε. В этом случае принимаем за приближенное значение корня середину оставленного отрезка и требуемая точность будет достигнута.  

 

II. График функции.


Для выделения корней рассчитаем значения функции на заданном отрезке [0,2] с шагом 0,0001 и по полученным данным построим график функции.

 

 

Как видно из рисунка график пересекает ось Х один раз, следовательно, на данном отрезке [ 0, 2] наше уравнение имеет один корень.

 


Алгоритмы нахождения корней уравнения

I .  C труктурная схема алгоритма: Метод дихотомии

                     
 
f(a0), f(b0)  

 

 

 


                                                                        да

                                           
x=c  
an+1=an ; bn+1=c  
an+1= c ; bn+1= bn  
n=n+1  
 
X= an+bn 2  

 


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

#include<stdio.h>

#include<math.h> 

double f(double x)

{

return 0.25*(pow(x,3))+x-1.2502;

}

int main(void)

{

int n=0;

double x,a=0.,b=2.,eps=0.0001;

while (fabs(a-b)>2*eps)

{

x=(a+b)/2,

n++;

printf("step=%3i x=%11.8lf f(x)=%11.8lf\n",n,x,f(x));

if (f(x)==0)

{

printf("Tothnii koreni x=%lf\nkolithestvo iteratsii n=%i\n",x,n);

return 0;

}

else if (f(a)*f(x)<0) b=x;

else a=x;

    }

printf("Reshenie x=%11.8lf pri Eps=%lf\nkolithestvo iteratsii n=%i\n",x,eps,n);

return 0;

}

Метод хорд:

 

1. Этот метод заключается в том, что к графику функции проводится хорда. Находим точку пересечения с осью OX и опускаем из этой точки прямую параллельную OY. Из точки пе-ресечения прямой и графика проводим хорду и операция повторяется до тех пор, пока точка пересечения хорды с осью OX не приблизиться к корню функции до заданной погрешности.

Шаг первый:

 

Нас интересует точка пересечения с осью ОХ.

Сделаем допущение: х=x1

y=0

Введем обозначение

x0

f( )=f(x0)

Подставим в уравнение

Отсюда

x1=x0-

Шаг второй:

x2=x1-

 

Для n-го шага:

xn=xn-1-

Условием нахождения корня является:


2. Нелинейное уравнение и условие его решения: 0,25 x 3 + x -1,2502=0:

3. График функции:

4. Схема алгоритма:

         
 

 


5. Таблица идетификаторов:

Обозначение Идентификатор Тип
n n int
a double
b double
eps double
x x double
f(x) f(x) double

 


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

#include<stdio.h>

#include<math.h>

double f(double x)

{

return 0.25*(pow(x,3))+x-1.2502;

}

int main(void)

{

FILE*jad;

jad=fopen("D:text.txt","w");

int n=0;

double x,a=0,b=2.,eps=0.0001,xn;

xn=a;

while (fabs(xn-x)>eps)

{

x=xn;

n++;

xn=x-f(x)*(b-x)/(f(b)-f(x));

printf("step=%3i x=%11.8lf f(x)=%11.8lf\n",n,xn,f(xn));

fprintf(jad,"step=%3i x=%11.8lf f(x)=%11.8lf\n",n,xn,f(xn));

}

printf("pribligennoe znathenie x=%lf pri Eps=%lf\nkolithestvo iterasii n=%i\n",xn,eps,n);

fprintf(jad,"pribligennoe znathenie x=%lf pri Eps=%lf\nkolithestvo iterasii n=%i\n",xn,eps,n);

fclose(jad);

return 0;

}

7. Листинг решения:

 

 

Анализ результатов:

 

метод дихотомии метод хорд
значение корня -0 .28766 -0.287700
значение функции -0.000045 -0.00002140
количество итераций 13 6

 

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


Часть 2



2019-07-03 391 Обсуждений (0)
Алгоритмы нахождения корней уравнения 0.00 из 5.00 0 оценок









Обсуждение в статье: Алгоритмы нахождения корней уравнения

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (391)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)