Реферат по предмету "Информатика, программирование"


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

Кафедра №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труктурная схема алгоритма:  Методдихотомии/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
f(a0), f(b0)   /> /> /> /> /> /> />
 

                                                                            да/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
x=c   /> /> /> /> /> />
an+1=an ;  bn+1=c   />
an+1= c ;  bn+1= bn   /> /> /> /> /> /> />
n=n+1   /> /> /> /> /> />
X=an+bn
   2   /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />
 

Листинг программы имеетвид
 
#include
#include 
doublef(double x)
{
return0.25*(pow(x,3))+x-1.2502;
}
int main(void)
{
int n=0;
doublex,a=0.,b=2.,eps=0.0001;
while(fabs(a-b)>2*eps)
{
x=(a+b)/2,
n++;
printf(«step=%3ix=%11.8lf f(x)=%11.8lf\n»,n,x,f(x));
if (f(x)==0)
{
printf(«Tothniikoreni x=%lf\nkolithestvo iteratsii n=%i\n»,x,n);
return 0;
}
else  if(f(a)*f(x)
else a=x;
         }
printf(«Resheniex=%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
#include
doublef(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;
doublex,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(«pribligennoeznathenie x=%lf pri Eps=%lf\nkolithestvo iterasii n=%i\n»,xn,eps,n);
fprintf(jad,«pribligennoeznathenie 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.Метод Эйлера-Коши
Метод Эйлера-Коши (илиусовершенствованный метод Эйлера) является методом второго порядка изаключается в следующем. Интегральная кривая на каждом шаге интегрированиязаменяется прямой с тангенсом угла наклона, равным среднему арифметическомутангенсов углов наклона касательных к искомой функции в начале и в конце шага.Вычисления проводятся в следующем порядке:
1.   Выбираем шаг интегрирования />.
2.   Полагаем номер шага />.
3.   Вычисляем />,находим оценку для приращения функции на этом шаге методом Эйлера />, />, вычисляем среднееарифметическое тангенсов углов наклона /> иокончательно получаем:
/>.
4.   Если />,то увеличиваем номер шага /> наединицу и повторяем п.3. В противном случае переходим к выполнению п.5.
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
#include
int s,i;
double x, x1, x_max=2,y, d, q;
doubleh[3]={0.01,0.005,0.001};
doublek(double x,double y )
{
return((x)/(4+(pow(x,4))));
}
doublee(double x)
{
return0.25*atan(pow(x,2)/2);
}
doublef1=k(x,y);
doubleyw=y+f1*h[i];
doubler=x+h[i];
doublefl=k(r,yw);
int main(void)
{
FILE*sev;
sev=fopen(«E:result34.xls»,«w+»);
for(i=0;i
{
s=0; y=0;
fprintf(sev,«h(%i)=%lf\n»,i,h[i]);
for(x=0;x
{
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\td=\t%10.5f\n",s,x1,y,e(x1),d);
}
}
fclose(sev);
return 0;
}
/>
/>
/>
 
/>
/>
/>
/>
/>
/>
 
Вывод:
Интегрированная среда Visual С позволяет обрабатывать программы, записанныена языке  С++. Для программирования циклических алгоритмов были использованыоператоры организации циклов с параметрами, решение использует форматируемыйвывод и оператор присваивания, а также использовались операторы вызова функций.Чем больше шаг, тем точнее вычисления.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.

Сейчас смотрят :