Алгоритмы нахождения корней уравнения
Дисциплина: «ИНФОРМАТИКА»
КУРСОВАЯ РАБОТА
Тема: «Решение прикладных задач численными методами»
Москва 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 труктурная схема алгоритма: Метод дихотомии
да
Листинг программы имеет вид #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. Таблица идетификаторов:
Листинг программы: #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. Листинг решения:
Анализ результатов:
Вывод: Метод дихотомии прост в реализации, но обладает малой скоростью сходимости по сравнению с методом хорд, что выражается в количестве шагов. Метод хорд к тому же обладает большей точностью. Часть 2
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (392)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |