66871

Решение алгебраических и трансцендентных уравнений. Метод половинного деления

Контрольная

Информатика, кибернетика и программирование

Анализ технического задания Для выполнения задания требуется: Найти область определения функции корень. Блок-схема алгоритма Блок-схема функции представлена на рисунке 2. Выполняемые функции реализует алгоритм нахождения корня уравнения.

Русский

2014-08-29

499 KB

8 чел.

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ФИЛИАЛ ГОСУДАРСТВЕННОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)» в г. Смоленске

Кафедра информатики

Расчетное задание

По курсу «Информатика и программирование»

1 семестр

Студент:

Корнеева М.И.

Группа:

ПИЭ-10

Преподаватель:

Нестеров А.П.

Вариант:

12

Смоленск, 2010


Задание 1. Решение алгебраических и трансцендентных уравнений

  1.  Теоретическое введение

В практических вычислениях часто приходиться решать уравнения вида:

F(x) =0,                                                                                                                                (1)

где F(x) определена и непрерывна на некотором конечном или бесконечном интервале a<x<b.

Если функция представляет собой многочлен, то уравнение (1) называется алгебраическим, если же в функцию входят элементарные (тригонометрические, логарифмические, показательные и т.п.) функции, то такое уравнение называют трансцендентным.

Всякое значение x, обращающее функцию F(x) в нуль, называется корнем уравнения (1), а способ нахождения этого значения x и есть решение уравнения.

Найти корни уравнения вида (1) точно удается лишь в частных случаях. Поэтому разработаны методы численного решения уравнения вида (1), которые позволяют отыскать приближенные значения корней этого уравнения.

Для заданного уравнения применяется метод половинного деления.

Метод половинного деления.

Для нахождения корня (1), принадлежащего отрезку [a;b], делим отрезок пополам, т.е. выбираем начальное приближение равным x0=(a+b)/2. Если F(x0)=0, то x0 является корнем уравнения. Если F(x0)<>0, то выбираем тот отрезок [a;x0] или [x0;b], на концах которого функция F(x) имеет противоположные знаки. Полученный отрезок снова делим пополам и проводим то же рассмотрение и т.д.

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

  1.  Техническое задание

Найти корень уравнения y = sin(ln(x))- cos(ln(x)) + 2ln(x), расположенный на найденном отрезке, с абсолютной погрешностью eps методом половинного деления.

  1.  Анализ технического задания

Для выполнения задания требуется:

  •  Найти область определения функции, корень.
  •  Определить способ задания входных  параметров – ввод с экрана.

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

  1.  Блок-схема

Блок-схема алгоритма представлена на рисунке 1.

   

           Рисунок 1. Блок-схема алгоритма

Блок-схема функции  представлена на рисунке 2.

Рисунок 2. Блок-схема алгоритма

  1.  Модульная структура программы

Модульная структура программы изображена на рисунке 3.

Рисунок 3. Модульная структура программы

  1.  Спецификация на программные модули

Модуль 1.

  1.  Имя модуля TForm1.Button1Click(Sender: TObject).
  2.  Имя вызывающего модуля Unit1.
  3.  Выполняемые функции – реализует алгоритм нахождения корня уравнения.
  4.  Входные данные – a, b, eps.
  5.  Выходные данные – x.
  6.  Особенности, ограничения – координата начала отрезка должна быть больше нуля.

Модуль 2.

  1.  Имя модуля F.
  2.  Имя вызывающего модуля – TForm1.Button1Click(Sender: TObject).
  3.  Выполняемые функции – вычисление значения функции.
  4.  Входные данные – x.
  5.  Выходные данные – F.
  6.  Особенности, ограничения – значение входного параметра x должно быть больше нуля.

Модуль 3.

  1.  Имя модуля Unit1
  2.  Имя вызывающего модулянет.
  3.  Выполняемые функции – обеспечивает работу всех модулей.
  4.  Входные данные – нет.
  5.  Выходные данные – нет.
  6.  Особенности, ограничения нет.
  7.  Текст программы

procedure TForm1.Button1Click(Sender: TObject);

var a, b, x0, x, Eps:Real;

function F(x:Real):real;

begin

 F:=sin(ln(x))-cos(ln(x))+2*ln(x);

end;

begin

 a:=StrToFloat(edit1.Text);      {начало отрезка}

 b:=StrToFloat(edit2.Text);      {конец отрезка}

 eps:=StrToFloat(edit3.Text);    {абсолютная погрешность}

if (F(a)*F(b)>=0) then

edit4.Text:='на заданном отрезке корней нет'

else

begin

if F(a)=0 then x:=a

else

begin

 if F(b)=0 then x:=b

 else

 begin

   x0:=(a+b)/2;

   while (f(x0)<>0) and (Abs(b-x0)>=eps) do

   begin

     if (F(a)*F(x0)<0) then b:=x0

     else a:=x0;

     x0:=(b+a)/2;

   end;

   x:=x0

 end;

end;

edit4.Text:=FloatToStr(x);

end;

end;

end.

  1.  Результаты тестирования

С использование программы MathCad был найден корень заданной функции. Изображение экрана с результатом представлено на рисунке 4.

Рисунок 4. Изображение экрана с результатом.

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

Таблица 1. Результаты тестирования.

Режим тестирования

a

b

eps

Результат

Корректные значения

1

0,2

1,2

4

6

4

0,001

0,00004

0,01

1,374267578125

1,37487258911133

1,36953125

Не корректные значения

s

4

0,001

Ошибка – неверный формат

Вывод: программа работает верно.

  1.  Заключение

В ходе проделанной работы был освоен способ нахождения корня уравнения методом половинного деления.


Задание 2. Вычисление конечных сумм.

  1.  Теоретическое введение

Обычно формула общего члена суммы принадлежит у одному из следующих трех типов:

  1.  .     xn/n!            (-1)n* x2n-1/(2n+1)!      x2n/(2n)!
  2.        cos(nx)/n     sin((2n-1)x)/2n-1         cos(2nx)/4n2-1
  3.       X4n-1/4n+1   (-1)n*cos(nx)/n2              n2+1(x/2)n/n!

В случаи b) необходимо каждый член суммы вычислять по общей формуле.

Алгоритм решения задач суммирования при значениях параметра суммирования, изменяющегося в некотором диапазоне с заданным шагом, сводится к двум вложенным циклам. Внутренний цикл суммирует слагаемые при фиксированном параметре x, а внешний организует изменение параметра x. Вычисляемая сумма является частичной суммой некоторого функционального ряда, поэтому наряду с вычислением суммы необходимо вычислить для сравнения и значения соответствующей функции y=F(x).

  1.  Техническое задание

Составить программу для вычисления суммы ряда с заданной точностью eps и значения функции на заданном диапазоне изменения аргумента (количество расчетных точек – не менее 10).

Сумма: S=(x*cos(pi)/3))/1+(x^2*cos(2*pi)/3))/2+…+(x^n*cos(n*pi)/3))/n

Диапазон изменения аргумента:0,1<=x<=0,8

Функция y:= -1/2*ln(1-2*x*cos((pi)/3)+x^2)

  1.  Анализ технического задания

Для нахождения суммы ряда, значения функции на заданном диапазоне необходимо:

  •   Рассчитать точки
  •  Найти значения функции в полученных точках
  •  Определить способ задания входных  параметров – ввод с экрана.
  •  Найти суммы рядов в полученных точках и сопоставить со значениями функции в соответствующих значениях.

  1.  Блок-схема

Блок-схема алгоритма представлена на рисунке 5.

           Рисунок 5. Блок-схема алгоритма

Блок-схема функции  представлена на рисунке 6.

Рисунок 6. Блок-схема алгоритма

  1.  Модульная структура программы

Модульная структура программы изображена на рисунке 7.

Рисунок 7. Модульная структура программы

  1.  Спецификация на программные модули

Модуль 1.

  1.  Имя модуля TForm1.Button1Click(Sender: TObject).
  2.  Имя вызывающего модуля Unit1.
  3.  Выполняемые функции – реализует алгоритм нахождения конечных сумм.
  4.  Входные данные – eps.
  5.  Выходные данные – y,s,x.
  6.  Особенности, ограничения – нет.

Модуль 2.

  1.  Имя модуля y.
  2.  Имя вызывающего модуля – TForm1.Button1Click(Sender: TObject).
  3.  Выполняемые функции – вычисление значения функции.
  4.  Входные данные – x.
  5.  Выходные данные – y.
  6.  Особенности, ограничения – нет.

Модуль 3.

  1.  Имя модуля Unit1
  2.  Имя вызывающего модулянет.
  3.  Выполняемые функции – обеспечивает работу всех модулей.
  4.  Входные данные – нет.
  5.  Выходные данные – нет.
  6.  Особенности, ограничения нет.

Модуль 4.

  1.  Имя модуля TForm1.FormCreate(Sender: TObject).
  2.  Имя вызывающего модуля – Unit1.
  3.  Выполняемые функции – обеспечивает очистку полей Memo.
  4.  Входные данные – нет.
  5.  Выходные данные – нет.
  6.  Особенности, ограничения нет.

  1.  Текст программы

procedure TForm1.Button1Click(Sender: TObject);

var n:integer;

var s,x,eps :real;

function y(x:real):real;

begin

 y:=-1/2*ln(1-2*x*cos((pi)/3)+sqr(x));

end;

begin

    memo1.Clear;

    memo2.Clear;

    memo3.clear;

 eps:=strtofloat(edit1.Text);     {абсолютная погрешность}

 x:=0.1;

 while x<=0.8 do

 begin

   n:=1;

   s:=(exp(n*ln(x))*cos(pi*n/3))/n;

   while (abs(y(x)-s))>=eps do

   begin

     n:=n+1;

     s:=s+(exp(n*ln(x))*cos(pi*n/3))/n;

   end;

   memo1.Lines.Add(floattostr(x));

   memo2.Lines.Add(floattostr(s));

   memo3.Lines.Add(floattostr(y(x)));

   x:=x+0.07;

 end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

memo1.Clear;

memo2.Clear;

memo3.clear;

end;

end.

  1.  Результаты тестирования

С использование программы MathCad были найдены значения функции в заданных точках(0,1;0,17;0,24;0,31;0,38;0,45;0,52;0,59;0,66;0,73;0,8). Изображение экрана с результатом представлено на рисунке 8.

Рисунок 8. Изображение экрана с результатом.

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

Таблица 2. Результаты тестирования.

Режим тестирования

eps

Результат

Корректные значения

0,0001

0,1

См. рисунок 9,10.

Не корректные значения

s

Ошибка – неверный формат

\

Рисунок 9. Изображение экрана с результатом тестирования.

Рисунок 10. Изображение экрана с результатом тестирования.

Вывод: программа работает верно. При уменьшении значения eps сумма ряда сходится к значению функции.

  1.  Заключение

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


 

А также другие работы, которые могут Вас заинтересовать

58112. Из истории появления компьютерных коммуникаций 26 KB
  Устный пересказ которым пользовались для передачи информации в дописьменный период опирался на такое ненадежное устройство хранения информации как человеческая память Второй информационной революцией по праву считают изобретение книгопечатания.
58113. История развития слесарного дела 23 KB
  Качество выполнения слесарных работ во многом зависит от слесарного инструмента и умения его правильно применять. Слесарномонтажный инструмент должен быть качественным и надежным а начинающему слесарю нужно прежде всего изучить инструмент которым ему придется пользоваться. При холодной ручной обработке металлов слесарь наиболее часто использует такой слесарномонтажный инструмент как молотки зубила ножовки напильники и др.
58114. Общество и общественные отношения 226 KB
  ОБЩЕСТВО - обособившееся от природы, но тесно с ней связанная часть мира, которая включает в себя способы взаимодействия людей и формы их объединений.
58115. Значение здоровья для человека 41 KB
  Цель: ознакомить с задачами и содержанием курса Основы здоровья; формировать представление о значении здоровья для обучения труда общения с родными; развивать память мотивацию основ сохранения и укрепления здоровья; воспитывать любовь к жизни к людям.
58116. Військові звання і знаки розрізнення. Начальники та підлеглі, старші та молодші, їх права і обовязки 182.5 KB
  Мета: Вивчити поняття щодо суті і значення військової дисципліни; Назвати статути Збройних сил України основні їх вимоги. Статути Збройних Сил України це зведення законів військової служби на основі яких проходять повсякденне життя виховання навчання бойова діяльність військ...
58118. Функции финансов, как экономической категории 15.22 KB
  Именно через эту функцию реализуется общественное назначение финансов – обеспечение каждого субъекта хозяйствования и государства необходимыми ресурсами, использ. в форме денежных фондов целевого назначения.
58119. Финансы как экономическая категория в системе социально-экономических категорий 15.17 KB
  Каждая наука оперирует определенным кругом понятий, имеет особые, специфические категории, которые являются концентрированным выражением общих, наиболее существенных признаков, качеств, закономерностей и взаимосвязей объектов той сферы
58120. Создание Интернет-страниц 32 KB
  Он требует терпения и знания основ «программирования» на языке html, который, по сути, языком программирования не является. Итак. Для работы нам будет достаточно программы Блокнот. И даже более того, достаточно будет использовать только меню FILE.