66871

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

Контрольная

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

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

Русский

2014-08-29

499 KB

9 чел.

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

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

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

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

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

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

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

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

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.  Заключение

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


 

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

71944. Александр Васильевич Советов 149.42 KB
  Александр Васильевич Советов возглавлял Вольное Экономическое общество (ВЭО), в котором его первый отдел объединял агрономов, экономистов и естествоиспытателей, таких как Д.И. Менделеев, К.А. Тимирязев, а с 1875 года - Докучаев.
71945. ДЕМОГРАФИЧЕСКАЯ ПОЛИТИКА 111.5 KB
  Она призвана воздействовать на формирование желательного для общества режима воспроизводства населения сохранения или изменения тенденций в области динамики численности и структуры населения темпов их изменений динамики рождаемости смертности семейного состава расселения внутренней...
71947. Понятие сети ССП и ее базовые принципы 180.57 KB
  Пользователи получили доступ к услугам, о которых 10–15 лет назад и не задумывались. E-mail, Интернет, сотовый телефон стали обычными атрибутами повседневной жизни. За короткое время мы так привыкли к практически ежедневному появлению всевозможных новинок, что сами начали выдвигать требования по предоставлению новых услуг и приложений.
71948. Інформаційна культура учнів 47.04 KB
  В інформаційному суспільстві люди мають можливість отримувати доступ до надійних джерел інформації. Процес комп’ютеризації позбавляє їх від рутинної роботи дозволяє забезпечити високий рівень автоматизації обробки інформації в сферах освіти виробництва в соціальній сфері.
71950. Разновидность методов управления персоналом 126 KB
  В отличие от господствовавших ранее взглядов экономически включавших персонал в категорию издержек подлежащих строгому контролю и возможно большему сокращению появилась концепция управления человеческими ресурсами в соответствии с которой персонал...
71951. Развитие транспортного комплекса автотранспортных предприятий 76.5 KB
  Грузовой автомобильный транспорт в рыночных условиях переживает период особенно бурного развития. По-видимому как это происходит в большинстве европейских стран доля грузового автотранспорта в транспортном балансе будет увеличиваться пропорционально темпам роста ВВП.
71952. Нормирование и управление запасами 48.5 KB
  Логистика, вначале как практическая деятельность, а затем и как наука выявила новый объект управления — поток товарно-материальных ценностей. Запасы стали рассматривать как форму существования материального потока, часть материального потока, который имеет свои границы в пространстве и во времени.