Учебная работа. Курсовая работа: Решение прикладных задач численными методами
информатики и вычислительной арифметики
Дисциплина: «ИНФОРМАТИКА»
КУРСОВАЯ РАБОТА
Тема:
«Решение прикладных задач численными способами»
Москва 2009 г.
ЦЕЛЬ работы:
Получение практических способностей по применению численных способов при решении прикладных задач на ЭВМ общего предназначения, с внедрением программ сложных повторяющихся алгоритмов, включая редактирование программ в ЭВМ , отладку программ, выполнение расчетов на периферийные устройства.
время: 12 часов.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Работа состоит из 2-х частей.
Цель первой части курсовой работы: получить практические способности в использовании численных способов решения не линейных уравнений применяемых в прикладных задачках.
Для выполнения 1 части работы нужно:
· Составить программку и высчитать значения функции в левой части нелинейного уравнения для решения задачки отделения корней;
· Составить логическую схему метода, таблицу идентификаторов и программку нахождения корня уравнения способом дихотомии и способом, обозначенным в таблице;
· Ввести программку в комп, отладить, решить задачку с точностью ε=0,0001
и вывести итог;
· Предугадать в программке вывод на экран монитора микропроцессора получения корня.
Задание на выполнение первой части курсовой работы:
Вариант №21.
Уравнение: 0,25
x
3
+
x
-1,2502=0:
Отрезок, содержащий корень:
[0;2].
I.
Математическое описание численных способов решения
способ деления отрезка напополам (способ дихотомии).
Этот способ дозволяет найти корень уравнения с хоть какой наперёд данной точностью εε . разыскиваемый корень
уравнения уже разделен, т.е.указан отрезок
непрерывности функции
таковой, что на концах этого отрезка функция f(x) воспринимает разные значения:
Сначала находится середина отрезка [ a, b ]:
и рассчитывается с,
т.е. находится
то мы буквально отыскали корень уравнения. Если же
,то символ данной величины сравнивается со знаками функции
в концах отрезка [ a, b ]. Из 2-ух отрезков [ a, с], [ с, b ] для предстоящего рассмотрения оставляется тот, в концах которого функция имеет различные знаки. С оставленным отрезком поступаем аналогичным образом. расчет прекращается, когда оставленный отрезок будет иметь длину меньше 2ε. В этом случае принимаем за приближенное значение корня середину оставленного отрезка и требуемая точность будет достигнута.
II.
График функции.
Для выделения корней рассчитаем значения функции на данном отрезке [0,2] с шагом 0,0001 и по приобретенным данным построим график функции.
Как видно из рисунка график пересекает ось Х один раз, как следует, на данном отрезке [ 0, 2] наше уравнение имеет один корень.
Методы нахождения корней уравнения
I
.
C
труктурная схема метода: способ дихотомии
f(a0
), f(b0
)
да
an+1
=an
; bn+1
=c
an+1
= c ; bn+1
= bn
X
=
a
n
+b
n
2
Листинг программки имеет вид
#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.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;
}
способ хорд:
1.
Этот способ состоит в том, что к графику функции проводится хорда. Находим точку пересечения с осью OX и опускаем из данной точки прямую параллельную OY. Из точки пе-ресечения прямой и графика проводим хорду и операция повторяется до того времени, пока точка пересечения хорды с осью OX не приблизиться к корню функции до данной погрешности.
Шаг 1-ый:
Нас интересует точка пересечения с осью ОХ.
Создадим допущение: х=x1
y=0
Введем обозначение
x0
f()=f(x0
)
Подставим в уравнение
Отсюда
x1=x0
—
Шаг 2-ой:
x2=x1-
Для
n
-го шага:
xn
=xn
-1
—
Условием нахождения корня является:
2. Нелинейное уравнение и условие его решения: 0,25
x
3
+
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