Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Разработка алгоритмов и программ решения
Московский авиационный институт (национальный исследовательский университет)
Факультет радиоэлектроники Кафедра 403
Разработка алгоритмов и программ решения алгебраических задач численными методами
Курсовая работа по дисциплине «Информатика»
Выполнил: Студент группы 4О-106Б Мирзаев Фаррух
Принял: Преподаватель кафедры 403 Кошелькова Л.В.
Вариант 105 Условия задачи : Требуется расчитать значения функции :
Данная функция является трансцендентной, имеющая 3 переменные величины (a, x, b). Количество значений (и сами значения) переменной величины a определяется пользователем. Величина x формируется с помощью начального, конечного значения и шага (начальное, конечное значение и шаг определяется так же пользователем). b - корень следующей функции :
Программа включает в себя главную программу и набор подпрограмм, предназначенных соответственно для ввода массива (DataIn), табулирование функции (Tab), вычисления корня уравнения (Equat), вывод результатов выполнения программы (RezOut). Схема алгоритма главной программы представлена на рис.2, а таблица обозначения переменных главной программы в табл.1. Главная программа начинается с ввода значений входных данных: сначала – простых переменных, а затем массива А с помощью подпрограммы-процедуры(ПП) DataIn.
Таблица 1 Обозначение в задании Обозначение в алгоритме Наименование Xn Xn Начальное значение аргумента, вещественный тип Xk Xk Конечное значение аргумента, вещественный тип Dx Dx Шаг изменения аргумента, вещественный тип N N Количество значений параметра A, целый тип А А Массив значений параметра, вещественный тип В В Параметр функции, вещественный тип Х Х Аргумент, вещественный тип Y Y Функция, вещественный тип
Mx Массив значений аргумента, вещественный тип
My Массив значений функции, вещественный тип
K Количество значений аргумента (функции), целый тип C,D C,D Параметры уравнения, вещественный тип
Z Корень уравнения, вещественный тип Eps Eps Заданная погрешность вычисления корня, вещественный тип
Zt Погрешность вычисления корня по невязке, вещественный тип
Km Предельное число повторений цикла, целый тип
Err Признак ошибки при решении уравнения, целый тип
I,J Счетчик числа повторений циклов, целый тип
Рисунок ниже демонстрирует график функции:
Рис. 2. Схема алгоритма главной программы
Вычисление корня нелинейного уравнения происходит путем обращения к ПП Equat, формирующей также признак ошибки в случае, если корень не найден за предельно допустимое число итераций Km. При Схемы алгоритмов подпрограмм, используемых в данной программе, с указанием их назначения и списков формальных параметров приведены на рис. 3 – 7.
Подпрограмма – процедура DataIn предназначена для ввода значений элементов одномерного массива заданного размера. Список формальных параметров: N,A. Входные параметры: N. N – количество элементов массива; величина целого типа. Выходные параметры: A. A – массив значений элементов; величины вещественного типа Рис. 3. Схема алгоритма подпрограммы-процедуры DataIn
Подпрограмма-функция F (рис. 4) предназначена для вычисления значения функции уравнения, представляет собой один оператор присваивания и используется в главной программе для проверки погрешности вычисления корня по невязке.
Подпрограмма-функции F предназначена для вычисления значения функции F. Список формальных параметров: X. Входные параметры: X. X – аргумент функции, тип – вещественный
Рис. 4. Схема алгоритма подпрограммы-функции F
Подпрограмма-процедура вычисления корня уравнения Equat (рис. 5) реализуется циклом итерационного типа, который завершается при условии, что F(B)>eps.
Подпрограмма-процедура табулирования Tab (рис. 6), выполненная в виде двойного цикла, определяет функциональную зависимость вида Y=f(X) при различных значениях параметров, поэтому внутренний цикл должен быть связан с изменением аргумента X, а внешний – с изменением параметра А.
Подпрограмма-процедура RezOut (рис. 7) выводит результаты выполнения программы. По структуре она построена аналогично подпрограмме Tab: представляет собой двойной цикл арифметического типа, но в отличие от ПП Tab, где внутренний цикл выполнен с постусловием, здесь оба цикла выполнены с предусловием.
Список формальных параметров: C, D, Eps, Km, B, Err; Входные параметры: C, D, Eps, Km. C, D – границы интервала изоляции корня, тип –вещественный; Eps – погрешность вычисления корня, тип –вещественный; Km – предельно допустимое количество циклов, тип – целый; Выходные параметры: Err, B B – параметры функции, тип –вещественный;Err – признак ошибки, тип – целый; Рис. 5. Схема алгоритма подпрограммы-процедуры Equat
Подпрограмма-процедура Tab предназначена для вычисления таблицы значений функции Y. Список формальных параметров: B,Xn,Xk,Dx,N,A,Mx,My.
Входные параметры: B,Xn,Xk,Dx,N, A.
B-параметр функции, тип вещественный. Xn-начальное значение аргумента, тип вещественный. Xk-конечное значение аргумента, тип вещественный. Dx-шаг изменения значения аргумента, тип целый. N-количество значений параметра A, тип целый. A-массив значений параметра, тип вещественный.
Выходные параметры: A,Mx,My. A-массив значений параметра, тип вещественный. Mx-массив значений аргумента, тип вещественный. My-массив значений функции, тип вещественный.
Рис. 6. Схема алгоритма подпрограммы-процедуры Tab
Список формальных параметров:Mx,My,A,Err,K Входные параметры: Mx,My,A,Err,K Mx-массив значений аргумента, тип-вещественный. My- массив значений функции, тип-вещественный. A-массив значений параметра, тип-вещественный. Err-массив значений признака ошибок, тип-целый. K-количество значений аргумента, тип-целый. Выходные параметры: Mx,My,A,Err Рис. 7. Схема алгоритма подпрограммы-процедуры RezOut Program Rgr_Informatika; {Студент: Мирзаев Фаррух, группа: 4O-106Б, дата: 23 декабря 2012 года} {Программа табулирования функции (sqr(B)/A[J]*ln((sqr(A[J])*A[J])+(sqr(B)*B)))*arctan(sqr(X)/sqrt(sqr(A[J]))*X+(1/sqr(B)))} {Где аргумент X изменяется от начального Xn до конечного Xk значение с шагом Dx, параметр А принимает M различных значений} {а параметр B равен корню уравнения 2*ln(X)-(1/sqr(X));, вычисленному при заданных значениях интервала изоляции и погрешности Eps [ 0,10 ] } uses math; type TMx = array [1..100] of Extended; Tmy = array [1..100,1..100] of Extended; var A, Mx:TMx; My:Tmy; M,I, J, Km, Err, K: Integer; X, Y, fa, B, fb ,D, C, Xn, Xk, Dx, Eps, Zt: Extended;
{Текст процедуры ввода массива} Procedure DataIn(M: integer; var A:TMx); begin for I:=1 to M do read(A[I]); end;
{Текст процедуры табулирования} Procedure Tab(B,Xn, Xk, Dx: Extended; M:integer; var A, Mx:TMx; var My:Tmy); begin for J:=1 to M do begin I:=1; X:=Xn; repeat Y := (sqr(B)/A[J]*ln((sqr(A[J])*A[J])+(sqr(B)*B)))*arctan(sqr(X)/sqrt(sqr(A[J]))*X+(1/sqr(B))); Mx[I]:=X; My[J, I]:=Y; inc(I); X:=X + Dx; until X>Xk; end; end;
{Подпрограмма-функции} Function F(X:Extended):Extended; begin F:=2*ln(X)-(1/sqr(X)); end;
{Нахождение корня методом дихотомии} Procedure Equat(C, D:Extended; Km: integer; Eps: Extended; var B:Extended; var Err:integer); begin
fa:=F(C); for I:=1 to Km do begin Err:=0; B:=(C + D)/2; fb:=F(B); if abs(F(B))>Eps then begin if fa*fb > 0 then C:=B else
D:=B end else begin
end; end; end;
{Текст процедуры вывода данных} Procedure RezOut(A, Mx:TMx; My:Tmy; M, K: integer); begin For J:=1 to M do begin writeln(' A[',J,'] =',A[J]:8:4); writeln(' X Y '); For I:=1 to K do writeln(Mx[I]:6:3,' ',My[J,I]:6:3); end; end;
{Главная программа} begin writeln('Введите значение переменных : Xn,Xk,Dx,M'); readln(Xn,Xk,Dx,M); writeln('Введите погрешность Eps, число циклов Km'); readln(Eps,Km); writeln('Заполните массив A [Количество значений ', M, ']'); DataIn(M, A); writeln('Введите левую и правую границу интервала изоляции'); readln(C,D);
Equat(C, D,Km, Eps, B, Err); if C<0 then Err:=1 ; if B>10 then Err:=1 ; if Err=0 then begin Zt:=2*ln(B)-(1/sqr(B)); writeln('[ Xn = ',Xn:4:2, ' ],[',' Xk = ',Xk:4:2, ' ],[',' Dx = ',Dx:4:2, ' ]'); writeln('[ M = ',M, ' ],[',' Eps = ',Eps:7:3, ' ],[',' Km = ',Km:3, ' ]'); writeln('[ Корень= ',B:4:2, ' ]',',[Zt = ', Zt:8:7, ' ]'); Tab(B, Xn, Xk, Dx,M, A,Mx,My); K:=trunc((Xk - Xn)/Dx) + 1; RezOut(A, Mx, My, M,K); end; if Err=1 then writeln ('Корень не найден за',Km,'итераций'); end.
Тестирование программы :
Литература : "Решение алгебраических задач численными методами в среде DELPHI" Л.В. Кошелькова , А.И. Заковряшин Москва 2008
Оглавление Условие задачи и обозначение переменных……………………………………………………………………………… 3 График функции……………………………………………………………………………………………………………………………. 4 Блок-схема главной программы………………………………………………………………………………………………….. 5 Описание подпрограммы DataIn и ее блок-схема………………………………………………………………………. 6 Описание подпрограммы функции с блок-схемой и подпрограмм Equat,Tab,Rezout………………. 7 Блок-схема подпрограммы Equat…………………………………………………………………………………………………. 8 Блок-схема подпрограммы Tab……………………………………………………………………………………………….. 9-10 Блок-схема подпрограммы RezOut………………………………………………………………………………………………. 11 Код программы на языке Pascal………………………………………………………………………………………………. 12-15 Результаты тестирования откомпилированной программы в среде FreePascal…………………… 16-17 Используемая литература………………………………………………………………………………………………………………18
|
||
|
Последнее изменение этой страницы: 2024-06-17; просмотров: 45; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.007 с.) |