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

2016-07-30СтудИзба

Описание файла

Документ из архива "Решение прикладных задач методом дихотомии", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48817"

Текст из документа "48817"

Кафедра

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

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

ОТЧЕТ

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

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

Москва 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. Схема алгоритма:



1



2




3



4



5





нет

да

6



7



8



9





10

15


нет

да




11

14


нет

да




12

13





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.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;

}

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

step= 1x= 1.50000000f(x)=-0.21392288

step= 2x= 1.25000000f(x)=-0.00893133

step= 3x= 1.12500000f(x)= 0.08982692

step= 4x= 1.18750000f(x)= 0.04080796

step= 5x= 1.21875000f(x)= 0.01602415

step= 6x= 1.23437500f(x)= 0.00356738

step= 7x= 1.24218750f(x)=-0.00267680

step= 8x= 1.23828125f(x)= 0.00044659

step= 9x= 1.24023438f(x)=-0.00111478

step= 10 x= 1.23925781f(x)=-0.00033401

step= 11 x= 1.23876953f(x)= 0.00005631

step= 12 x= 1.23901367f(x)=-0.00013885

step= 13 x= 1.23889160f(x)=-0.00004127

Reshenie x= 1.23889160 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.8lf\n",n,xn,f(xn));

}

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

return 0;

}

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

step= 1 x= 1.22334934 f(x)= 0.01236182

step= 2 x= 1.23796144 f(x)= 0.00070219

step= 3 x= 1.23879055 f(x)= 0.00003951

step= 4 x= 1.23883720 f(x)= 0.00000222

pribligennoe znathenie x=1.238837 pri Eps=0.0001

kolithestvo iterasii n=4

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

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

метод хорд

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

1.23889160

1.23883720

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

-0.00004127

0.00000222

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

13

4

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

Часть 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. Схема алгоритма:


1



2




3




4


5


6




7




8


9




100


11




12


13







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)=%lf\n",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);// y- pribl. f(x)- tochnoe

printf(" step =%4.i x=%6.4lf y=%6.4lf yt=%6.4lf d=%10.8lf\n",s,x1,y,f(x1),d);

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

}

}

fclose(file);

return 0;

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

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5140
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее