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

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

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

И вычисляется значение функции в точке с, т. е. находится f©. Если f (c)=0, то мы точно нашли корень уравнения. Если же f©?0, то знак этой величины сравнивается со знаками функции y= f (x) в концах отрезка. Из двух отрезков, для дальнейшего рассмотрения оставляется тот, в концах которого функция имеет разные знаки. С оставленным отрезком поступаем аналогичным образом. расчет прекращается, когда… Читать ещё >

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

Кафедра № 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труктурная схема алгоритма: Метод дихотомии.

да.

Листинг программы имеет вид.

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

}.

Метод хорд:.

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.

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

fprintf (jad," 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);

fprintf (jad," pribligennoe znathenie x=%lf pri Eps=%lfnkolithestvo iterasii n=%in", xn, eps, n);

fclose (jad);

return 0;

}.

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

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

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

метод хорд.

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

-0.28 766.

-0.287 700.

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

-0.45.

-0.2 140.

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

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

Часть 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;

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)=%lfn", 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);// ypribl. f (x) — tochnoe.

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

fprintf (sev," t step =t%4.it x=t%10.5lft y=t%10.5lft yt=t%10.5lft d=t%10.5fn", s, x1, y, e (x1), d);

}.

}.

fclose (sev);

return 0;

}.

Вывод:

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

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