Рефетека.ру / Информатика и програм-ие

Курсовая работа: Решение прикладных задач численными методами

Кафедра №83

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

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


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


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


Москва 2009 г.

ЦЕЛЬ РАБОТЫ:


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


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


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


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

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

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

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

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

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

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

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

Вариант №21.


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


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


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

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


Этот метод позволяет отыскать корень уравнения с любой наперёд заданной точностью εε . искомый корень 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ε. В этом случае принимаем за приближенное значение корня середину оставленного отрезка и требуемая точность будет достигнута.


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

Для выделения корней рассчитаем значения функции на заданном отрезке [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,25x3+x-1,2502=0:


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


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


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


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


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

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


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


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

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


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


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


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

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

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

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

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

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

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


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


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


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


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


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

Часть 2


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


Вариант №21.


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


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

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


Точное решение уравнения:

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


Начальные условия: x0 = 0 , y0 =0, xmax=2.


Метод решения: метод Эйлера-Коши, Δx = 0,01; 0,005; 0,001.


Метод Эйлера-Коши

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

Выбираем шаг интегрирования Решение прикладных задач численными методами.

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

Вычисляем Решение прикладных задач численными методами, находим оценку для приращения функции на этом шаге методом Эйлера Решение прикладных задач численными методами, Решение прикладных задач численными методами, вычисляем среднее арифметическое тангенсов углов наклона Решение прикладных задач численными методами и окончательно получаем:

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

Если Решение прикладных задач численными методами, то увеличиваем номер шага Решение прикладных задач численными методами на единицу и повторяем п.3. В противном случае переходим к выполнению п.5.

Оформляем полученный результат.

Достоинство метода – более высокая точность вычисления по сравнению с методом Эйлера. Недостаток – больший объем вычислений правых частей.


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

Обозначение Идентификатор Тип
s s int
i i int
x x float
xmax x_max float
x1 x1 float

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

h[i] float
y y float
d d float
f(x) f(x) float
k k(x,y) float
K1 f1 float
K2 f2 float
K3 f3 float
K4 f4 float

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


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


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


#include<stdio.h>

#include<math.h>

int s,i;

double x, x1, x_max=2, y, d, q;

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

double k(double x,double y )

{

return ((x)/(4+(pow(x,4))));

}

double e(double x)

{

return 0.25*atan(pow(x,2)/2);

}

double f1=k(x,y);

double yw=y+f1*h[i];

double r=x+h[i];

double fl=k(r,yw);

int main(void)

{

FILE*sev;

sev=fopen("E:result34.xls","w+");

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

{

s=0; y=0;

fprintf(sev,"h(%i)=%lf\n",i,h[i]);

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

{

s++;

x1=x+h[i];

y+=(f1+fl)*h[i]/2;

d=y-e(x1);// y- pribl. f(x)- tochnoe

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


fprintf(sev," \t step =\t%4.i\t x=\t%10.5lf\t y=\t%10.5lf\t yt=\t%10.5lf\t d=\t%10.5f\n",s,x1,y,e(x1),d);

}

}

fclose(sev);

return 0;

}

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


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


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


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

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

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


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

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

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


Вывод:

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

Похожие работы:

  1. Решение прикладных задач методом дихотомии
  2. • Управление учебным процессом в колледже в период внедрения ...
  3. • Распределение ресурсов по трем отраслям
  4. • Ричард Хэмминг и начало теории кодирования
  5. • Численные методы решения типовых математических задач
  6. • Производная и ее применение для решения прикладных ...
  7. • Методика обучения решению текстовых задач ...
  8. • Вычислительная математика
  9. • История развития прикладного программного обеспечения
  10. • Решения задачи планирования производства ...
  11. • Экзаменационные билеты по численным методам за первый семестр ...
  12. • Решение задач транспортного типа методом потенциалов
  13. •  ... высокого уровня для реализации численных методов
  14. •  ... высокого уровня для реализации численных методов
  15. • Численное интегрирование методом прямоугольников
  16. • Численные методы интегрирования и оптимизации ...
  17. • Решение творческих задач методом блочных альтернативных ...
  18. • Эвристические методы решения творческих задач
  19. •  ... среди магазинов методами решения транспортной задачи
Рефетека ру refoteka@gmail.com