Кафедра №83
информатики и вычислительной математики
Дисциплина: «ИНФОРМАТИКА»
КУРСОВАЯ РАБОТА
Тема: «Решение прикладных задач численными методами»
Москва 2009 г.
ЦЕЛЬ РАБОТЫ:
Получение практических навыков по применению численных методов при решении прикладных задач на ЭВМ общего назначения, с использованием программ сложных циклических алгоритмов, включая редактирование программ в ЭВМ, отладку программ, выполнение расчетов на периферийные устройства.
Время: 12 часов.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Работа состоит из 2-х частей.
Цель первой части курсовой работы: получить практические навыки в использовании численных методов решения не линейных уравнений используемых в прикладных задачах.
Для выполнения 1 части работы необходимо:
· Составить программу и рассчитать значения функции в левой части нелинейного уравнения для решения задачи отделения корней;
· Составить логическую схему алгоритма, таблицу идентификаторов и программу нахождения корня уравнения методом дихотомии и методом, указанным в таблице;
· Ввести программу в компьютер, отладить, решить задачу с точностью ε=0,0001 и вывести результат;
· Предусмотреть в программе вывод на экран дисплея процессора получения корня.
Задание на выполнение первой части курсовой работы:
Вариант №21.
Уравнение: 0,25x3+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труктурная схема алгоритма: Метод дихотомии
an+1=an ; bn+1=c |
an+1= c ; bn+1= bn |
n=n+1 |
X=an+bn 2 |
5. Таблица идетификаторов:
Обозначение | Идентификатор | Тип |
n | n | int |
a | double | |
b | double | |
eps | double | |
x | x | double |
f(x) | f(x) | double |
6. Листинг программы:
#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 |
Вывод: Метод дихотомии прост в реализации, но обладает малой скоростью сходимости по сравнению с методом хорд, что выражается в количестве шагов. Метод хорд к тому же обладает большей точностью.