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

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


 

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

60746. Роль права в жизни человека, общества, государства 81.5 KB
  Для развития творческого мышления учащихся, познавательного интереса к предмету, воспитания правовой культуры разработан урок усвоения нового материала с элементами практической работы...
60747. Строение и работа сердца 97 KB
  Раскрыть связь строения сердца с его функцией. Дать понятие о сердечном цикле причине неутомляемости сердца. Рассмотреть причину автоматизма сердца.
60748. Сравнение, сложение и вычитание дробей с разными знаменателями 962 KB
  Цель урока: Сформулировать правила сравнения сложения и вычитания обыкновенных дробей с разными знаменателями повторить и обобщить знания об обыкновенных дробях; Развивать умение применять знания теории на практике развивать навыки самоконтроля и взаимоконтроля...
60749. Растровое кодирование графической информации 419.5 KB
  Цель: ввести понятие растровой графики и рассмотреть кодирование растровых изображений Задачи: образовательная: 1. Этап урока Время Деятельность практиканта Деятельность учащихся Примечание...
60750. Поняття комп’ютерної публікації. 3асоби створення публікацій. Види публікацій та їх шаблони. Структура публікації 3.6 MB
  Мета: навчальна: Сформувати поняття комп’ютерної публікації розглянути види публікацій та засоби їх створення. Отже тема нашого уроку Поняття комп’ютерної публікації.
60751. 200 років з дня народження Тараса Григоровича Шевченка 968 KB
  Мета: Активізувати та збагачувати знання дітей про життя та творчість Тараса Шевченка; викликати інтерес до поезії; спонукати учнів до вияву власних творчих здібностей та їх розвитку; розвивати виразне читання та зв€язне мовлення школярів виховувати любов і повагу до спадщини...
60752. Рух графічних зображень за допомогою циклів 58.5 KB
  Мета: ознайомити учнів з поняттям анімації; навчити створювати рухи окремих елементів, створювати анімацію програмним способом; розвивати логічне і образне мислення; виховувати любов до прекрасного.
60753. Розклад чисел на прості множники 78 KB
  Мета: ‒ навчити учнів розкладати числа на прості множники; ‒ розвивати в учнів математичне і логічне мислення здатність самостійно робити висновки розвинути увагу спостережливість; ‒ виховувати самостійність у виконанні вправ культуру математичної мови...
60754. Духовне багатство – найбільший скарб у житті людини 67 KB
  Завдання які ми ставимо перед собою на сьогоднішній урок записані на дошці: Вірш Крила Крила на яких написановиразно і вдумливо читати; визначити провідну думку; аналізувати; висловити власні міркування; прослідкувати звязок з віршем Чайка на крижині.