Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Решение прикладных задач методом дихотомии

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Отрезок интегральной кривой, соответствующий x (x0,x1), x1=x0+h заменяется участком касательной с угловым коэффициентом k. Найденная точка (x1,y1) используется в качестве нового начального условия для уравнения y (x1)=y1,в ней вновь вычисляется угловой коэффициент поля направлений и процедура повторяется. Вывод: Метод дихотомии прост в реализации, но обладает малой скоростью сходимости по сравнению… Читать ещё >

Решение прикладных задач методом дихотомии (реферат, курсовая, диплом, контрольная)

Кафедра информатики и вычислительной информатики

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

ОТЧЕТ

по курсовой работе

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

Москва 2009 г.

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

Вариант № 11.

Часть 1

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

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

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

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

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

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

Уравнение:, [1,2];

Метод численного решения: метод дихотомии, метод хорд.

Решение.

Метод дихотомии

1. Этот метод позволяет отыскать корень уравнения f ()=0 с любой наперед заданной точностью е.

Предполагается, что искомый корень уравнения уже отделен, т. е. указан отрезок [ a; b ] непрерывности функции f (x) такой, что на концах этого отрезка функция принимает различные значения.

Суть метода в том, что [ a ;b ] делится пополам. Половина, где нет корня отбрасывается, а другая делиться на два.

1-й Шаг. Вычисление середины отрезка

Если f ()=0, то мы нашли точный корень уравнения.

Если f () · f (x0)<0, то находится в интервале [] следовательно ;

Иначе

2-й Шаг. Вычисление середины отрезка

Если f ()=0, то мы нашли точный корень уравнения.

Если f (· f (x1)<0, то ;

Иначе

n-ый Шаг. Вычисление середины отрезка

Если f ()=0, то мы нашли точный корень уравнения.

Если f (· f (xn)<0, то ;

Иначе

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

2. Нелинейное уравнение и условие его решения:

[1,2], е = 0,0001;

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

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

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

Обозначение

Идентификатор

Тип

n

n

int

a

double

b

double

eps

double

x

x

double

f (x)

f (x)

double

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

#include

#include

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.8lfn», n, x, f (x));

if (f (x)==0)

{

printf («Tothnii koreni x=%lfnkolithestvo iteratsii n=%in», x, n);

return 0;

}

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

else a=x;

}

printf («Reshenie x=%11.8lf pri Eps=%lfnkolithestvo iteratsii n=%in», x, eps, n);

return 0;

}

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

step= 1x= 1.5 000 0000f (x)=-0.21 392 288

step= 2x= 1.2 500 0000f (x)=-0.893 133

step= 3x= 1.1 250 0000f (x)= 0.8 982 692

step= 4x= 1.1 875 0000f (x)= 0.4 080 796

step= 5x= 1.2 187 5000f (x)= 0.1 602 415

step= 6x= 1.2 343 7500f (x)= 0.356 738

step= 7x= 1.2 421 8750f (x)=-0.267 680

step= 8x= 1.2 382 8125f (x)= 0.44 659

step= 9x= 1.2 402 3438f (x)=-0.111 478

step= 10 x= 1.2 392 5781f (x)=-0.33 401

step= 11 x= 1.2 387 6953f (x)= 0.5 631

step= 12 x= 1.2 390 1367f (x)=-0.13 885

step= 13 x= 1.2 388 9160f (x)=-0.4 127

Reshenie x= 1.23 889 160 pri Eps=0.0001

kolithestvo iteratsii n=13

Метод хорд:

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

Шаг первый:

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

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

y=0

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

x0

f ()=f (x0)

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

x1=x0;

Шаг второй:

x2=x1;

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

xn=xn-1;

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

2. Нелинейное уравнение и условие его решения:

[1,2], е = 0,0001;

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

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

Обозначение

Идентификатор

Тип

n

n

int

a

double

b

double

eps

double

x

x

double

f (x)

f (x)

double

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

#include

#include

double f (double x)

{

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

}

int main (void)

{

int n=0;

double x, a=1., 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.8lfn», n, xn, f (xn));

}

printf («pribligennoe znathenie x=%lf pri Eps=%lfnkolithestvo iterasii n=%in», xn, eps, n);

return 0;

}

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

step= 1 x= 1.22 334 934 f (x)= 0.1 236 182

step= 2 x= 1.23 796 144 f (x)= 0.70 219

step= 3 x= 1.23 879 055 f (x)= 0.3 951

step= 4 x= 1.23 883 720 f (x)= 0.222

pribligennoe znathenie x=1.238 837 pri Eps=0.0001

kolithestvo iterasii n=4

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

метод дихотомии

метод хорд

значение корня

1.23 889 160

1.238 83720

значение функции

-0.4 127

0.222

количество итераций

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

Часть 2

Решение дифференциального уравнения.

Вариант № 11.

Метод Эйлера

1.Математическое описание

Геометрический смысл метода Эйлера состоит в следующем: дифференциальное уравнение определяет в точке (x0, y0) направление касательной к искомой интегральной кривой

k0=y'(x0)=f(x0,y0)

Отрезок интегральной кривой, соответствующий x(x0,x1), x1=x0+h заменяется участком касательной с угловым коэффициентом k. Найденная точка (x1,y1) используется в качестве нового начального условия для уравнения y(x1)=y1,в ней вновь вычисляется угловой коэффициент поля направлений и процедура повторяется.

На n-ом шаге имеем точку (xn-1, yn-1), задающую начальное условие для уравнения:

y(xn-1)=yn-1

Уравнение определяет угловой коэффициент касательной к интегральной кривой в этой точке Соответствующее уравнение касательной:y-yn-1=k(x-xn-1)

Отсюда получаем значение х=хn, соответствующее точке: хnn-1+h,

А именно: yn-yn-1=kn-1(xn-1+h-xn-1), или

yn=yn-1+h· kn-1

yn=yn-1+h· f (xn-1,yn-1)

Полученная формула является основной расчетной формулой метода Эйлера.

Процесс вычислений заканчивается, когда аргумент после очередного приращения выйдет за пределы исследуемого отрезка .

2. Дифференциальное уравнение:

x0 = 0, y0 = 1, xmax =1, Дx = 0.01; 0.005; 0.001

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

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

Обозначение

Идентификатор

Тип

s

s

int

i

i

int

x

x

double

xmax

x_max

double

x1

x1

double

Дx

h[i]

double

y

y

double

d

d

double

f (x)

f (x)

double

k

k (x, y)

double

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

#include

#include

double k (double x, double y)

{

return ((x/exp (x*x))-2.*x*y);

}

double f (double x)

{

return ((1./exp (x*x))*(1+x*x/2.));

}

int main (void)

{

int s, i;

double x, x1, x_max=1,y, d;

double h[3]={0.01,0.005,0.001};

FILE*file;

file=fopen («result.txt» ," w+");

for (i=0;i<=2;i++)

{ s=0;y=1;

fprintf (file," h (%i)=%lfn", i, h[i]);

for (x=0;x<=x_max;x+=h[i])

{

s++;

x1=x+h[i];

y=y+k (x, y)*h[i];

d=y-f (x1);// ypribl. f (x) — tochnoe

printf («step =%4.i x=%6.4lf y=%6.4lf yt=%6.4lf d=%10.8lfn», s, x1, y, f (x1), d);

fprintf (file," step =%4.i x=%10.8lf y=%10.8lf yt=%10.8lf d=%10.8lfn", s, x1, y, f (x1), d);

}

}

fclose (file);

return 0;

Вывод: Интегрированная среда Visual С позволяет обрабатывать программы, записанные на языке С++ .Для программирования циклических алгоритмов были использованы операторы организации циклов с параметрами, решение использует форматируемый вывод и оператор присваивания, а также использовались операторы вызова функций. Чем больше шаг, тем точнее вычисления.

Показать весь текст
Заполнить форму текущей работой