Разработка алгоритмов и программ решения алгебраических задач численными методами
Создание схем алгоритмов и составление программы на языке Pascal для вычисления значений заданных функций. Сущность и порядок нахождения значения определенного интеграла. Анализ работы подпрограмм. Разработка тестов для проверки правильности алгоритмов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 24.11.2013 |
Размер файла | 831,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
18
Московский авиационный институт
Национальный исследовательский университет
Факультет радиоэлектроники
Кафедра 403
Расчетно-графическая работа
по дисциплине: Информатика
Разработка алгоритмов и программ решения алгебраических задач численными методами
Выполнил:
студент группы 4О-110Б
Ибрагимов Я.О
Принял:
Преподаватель кафедры 403
Кошелькова Л.В
Москва 2011
Содержание
Анализ задания
Теоретические сведения
Схемы алгоритмов
Набор тестов
Текст программы
Список используемой литературы
Анализ задания
Разобрать схему алгоритма, составить Pascal-программу для вычисления таблицы значений функций:
если аргумент Х принимает M различных значений, параметр А изменяется от начального значения An, N раз, с шагом Da, а параметр В принимает значение, равное интегралу:
,
вычисленному с погрешностью о при заданном интервалом изоляции c,d.
Входными данными в этой задаче являются: An- начальное значение аргумента, Da- шаг, с которым изменяется параметр, N- кол-во его изменений, M- количество значений аргумента Х, массив значений аргумента Х. Для решения интеграла методом Симпсона используются следующие входные данные: интервалы изоляции интеграла - с,d, начальное приближение корня - Xo, погрешность вычисления интеграла ? Eps, предельно допустимое число повторений цикла при вычислении корня- Km.
Выходными данными являются четыре массива: двумерный массив значений функции Мy двумерный массив ошибок Er, одномерный массив аргумента Мх и параметра А; значение интеграла ? В, диагностические сообщения, извещающие пользователя в следующих случаях:
· Невозможность вычисления тангенса числа, выходящего за его ОДЗ.
· Невозможность вычисления интеграла с заданной точностью за определенное количество повторений цикла.
В алгоритме выполняются следующие функции:
· ввод исходных данных
· вычисление уравнения
· проверка количества итераций при вычислении интеграла и формирование ошибки в случае, если корень не найден за заданное число итераций;
· вычисление таблицы значений функции
· проверка значения выражения под функцией tg и формирования признака ошибки, если оно имеет отрицательный знак
· вывод результатов вычислений
Теоретические сведения
Определённый интеграл - аддитивный монотонный нормированный функционал, заданный на множестве пар, первая компонента которых есть интегрируемая функция или функционал, а вторая - область во множестве задания этой функции (функционала).
Нахождение значения интеграла:
1. Нахождение первообразной функции;
2. Нахождения значений первообразной от нижней и верхней границы интегрирования;
3. Вычитание значения первообразной от нижней границы интегрирования из значения первообразной от верхней границы.
Используя три точки отрезка интегрирования, можно заменить подынтегральную функцию параболой. В качестве таких точек используют концы отрезка и его середину:
.
Если разбить интервал интегрирования на 2N равных частей, то имеем
где.
Схемы алгоритмов
В соответствии с принципами структурного программирования каждый функционально законченный фрагмент программы оформлен в виде подпрограммы. В результате программа включает главную программу и набор подпрограмм, предназначенных соответственно для ввода массива (InpX), табулирования функции (Vych), вычисления интеграла (integral), вывода результатов выполнения программы (OutP).
Схема алгоритма главной программы представлена на рис.2, а таблица обозначения переменных главной программы- в табл. 1.
Главная программа начинается с ввода значений входных данных: сначала - простых переменных, а затем- массива X с помощью подпрограммы- процедуры (InpX).
Обозначение в задании |
Обозначение в алгоритме |
Наименование |
|
M |
M |
Количество элементов массива аргумента Х, целый тип |
|
An |
An |
Начальное значение параметра А, вещественный тип |
|
Da |
Da |
Шаг изменения параметра А, вещественный тип |
|
N |
N |
Количество изменений параметра А, вещественный тип |
|
X |
X |
Массив значений аргумента Х, вещественный тип |
|
B |
B |
Параметр функции, вещественный тип |
|
Y |
Y |
Функция, вещественный тип |
|
My |
Массив значений параметра, вещественный тип |
||
Er |
Массив признака ошибки, целый тип |
||
C,D |
C,D |
Границы интеграла, вещественный тип |
|
о |
Eps |
Заданная погрешность вычисления корня, вещественный тип |
|
Xn |
Начальное приближение корня, вещественный тип |
||
Km |
Предельное число повторений цикла, целый тип |
||
Err |
Признак ошибки при решении интеграла, целый тип |
||
I,J |
Счетчики циклов, целый тип |
Схема алгоритма главной программы. Вычисление интеграла производится путем вызова процедуры integral, формирующей также признак ошибки в случае, если корень не найден за предельно допустимое число итераций Km. При Err=1 выводятся диагностическое сообщение, иначе происходит табулирование функции (ПП Vych) и вывод результатов выполнения программы (ПП Outp). Значение eps определяет погрешность корня.
Подпрограмма ? процедура ввода Inpx реализуется циклом, который завершается при наполнении всех указанных ячеек массива. В данном цикле реализуется заполнение массива X.
Список формальных параметров:M,X
Входные параметры: M
M- количество ячеек массива; вещественный тип
Выходные параметры: Х
Х- массив аргумента Х; вещественный тип
Подпрограмма-функция F предназначена для вычисления значения подынтегральной функции.
Список формальных параметров: x.
Входные данные:
1. x - аргумент функции, тип - вещественный.
Подпрограмма-процедура решения интеграла, Integral, реализуется методом Симпсона, состоящего из цикла, делящегося на две ветви для нахождения решения.
Подпрограмма-процедура Integral предназначена для вычисления численного значения интеграла.
Список формальных параметров: C, D, Z, Eps, Km, Err.
Входные данные:
1. C - нижняя граница интегрирования, тип - вещественный;
2. D - верхняя граница интегрирования, тип - вещественный;
3. Eps - погрешность вычисления интеграла, тип - вещественный;
4. Km - предельное число повторений цикла, тип - целый.
Выходные данные:
1. Z - численное значение интеграла, тип - вещественный;
Err - признак ошибки при вычислении интеграла, тип - целый.
Подпрограмма-процедура для вычисления значения функции vych, реализуется двойным циклом для вывода двумерного массива результатов y и других данных.
Подпрограмма-процедура vych для вычисления значения переменной y для всех возможных случаев
Список формальных параметров: y,x,an,da,n,m
Входные параметры: x,an,da,n,m
x- массив аргументов X; вещественный тип
an- начальное значение параметра а; вещественный тип
da- размер “шага” изменения параметра а; вещественный тип
n- количество “шагов” изменений параметра а; целый тип
m- количество ячеек массива x ; вещественный тип
Выходные параметры: y
y- двумерный массив аргументов y; вещественный тип
Er- массив ошибок; бинарный тип
Подпрограмма-процедура outp, предназначенная для вывода результатов расчета программы по средствам применения двойного цикла.
Список формальных параметров: x,y,b,er,an,da,n,m
Входные параметры: x,y,b,er,an,da,n,m
x- массив аргументов X; вещественный тип
y- двумерный массив аргументов y; вещественный тип
b- корень логарифмического уравнения;
er- массив ошибок; Boolean
an- начальное значение параметра а; вещественный тип
da- размер “шага” изменения параметра а; вещественный тип
n- количество “шагов” изменений параметра а; целый тип
m- количество ячеек массива x ; вещественный тип
Набор тестов
алгоритм интеграл подпрограмма тест
Для проверки правильности алгоритмов составим тесты для возможных путей вычислений и выполним контрольные просчеты, пользуясь независимыми от Pascal-среды вычислительными средствами - калькулятор.
Тест 1. Проверка ветви, работающей при правильном вводе данных
Входные данные: M=1; An=2; N=1; Da=0; d=0.57;c=2.36;eps=0.1;km=10;X[1]=3
Результаты: y= -115.03
b= 5.708
Тест 2. Проверка действий программы при вводе значений, приводящих к ошибке вычислений
Входные данные: М=2; An=1.4; N=3; Da=2; d=0.57; c=2.36; eps=0.1;km=10; x[1]=2.5; x[2]=0
Результат: Ошибка при х=2.5
Тест 3. Проверка действий программы при вводе множества Х.
Входные данные: М=4; An=2.3; N=4; Da=0.3; d=0.57; c=2.36; eps=0.1; km=10 x[1]=3; x[2]=4; x[3]=3; x[4]=4
Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, jpeg, ExtCtrls, TeEngine, Series, TeeProcs,
Chart, XPMan;
type
TForm1 = class(TForm)
mmo1: TMemo;
edt1: TEdit;
edt2: TEdit;
edt3: TEdit;
Button1: TButton;
edt4: TEdit;
lbl3: TLabel;
lbl1: TLabel;
lbl2: TLabel;
lbl8: TLabel;
lbl6: TLabel;
lbl5: TLabel;
lbl4: TLabel;
Chart1: TChart;
Series1: TLineSeries;
StringGrid1: TStringGrid;
XPManifest1: TXPManifest;
edt5: TEdit;
edt6: TEdit;
edt7: TEdit;
edt8: TEdit;
lbl9: TLabel;
lbl10: TLabel;
lbl11: TLabel;
lbl12: TLabel;
procedure edt4KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
M:array [0..40] of Real;
y:array [0..40,0..40] of Real;
a,da:Real;
n:integer;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function f(x:real):Real;
begin
F:=sqr(sqrt(x)+1)*exp(3*x*(ln(exp(1))))/exp(6*ln(x));
end;
procedure Integral(C,D,Eps:real; Km:integer; var Z:real; var Err:integer);
var H,W,Z0:real;
i,j,K:integer;
begin
Err:=1;
K:=2;
j:=1;
Z0:=0;
While j<Km do begin
Z:=F(C)+F(D);
H:=(D-C)/K;
For i:=1 to K-1 do If Odd(i) Then Z:=Z+4*F(C+i*H)
Else Z:=Z+2*F(C+i*H);
Z:=Z*H/3;
W:=Abs(Z0-Z);
If w<Eps Then begin
Err:=Err-1;
j:=Km;
end
Else begin
Z0:=Z;
j:=j+1;
K:=K*2;
end;
end;
end;
procedure TForm1.edt4KeyPress(Sender: TObject; var Key: Char);
var
i:Integer;
begin
if Key=#13 then
StringGrid1.ColCount:=StrToInt(edt4.Text)+1;
for i:=1 to StringGrid1.ColCount do
StringGrid1.Cells[i,0]:='X'+IntToStr(i);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
aa:Real;
ter:real;
c,d,eps:Extended;
km:integer;
err:integer;
z:Real;
begin
a:=StrToFloat(edt1.Text);
da:=StrToFloat(edt3.Text);
n:=StrToInt(Edt2.Text);
c:=StrToFloat(edt5.Text);
d:=StrToFloat(edt6.Text);
km:=StrToInt(edt8.Text);
eps:=StrToFloat(edt7.Text);
Integral(C,D,Eps,Km,Z,Err);
ShowMessage('B='+FloatTOStr(z));
aa:=a;
Chart1.Series[0].Clear;
StringGrid1.RowCount:=n+2;
for i:=1 to StringGrid1.ColCount-1 do
m[i]:=StrToFloat(StringGrid1.Cells[i,1]);
For I:=1 to n+1 do
begin
StringGrid1.Cells[0,i+1]:=FloatToStr(aa);
for j:=1 to StringGrid1.ColCount-1 do
begin
if (cos(pi*m[j]/5)=0) then
begin
mmo1.Lines.Add('Ошибка деления на 0');
StringGrid1.Cells[i,j+1]:='Ошибка деления на 0';
end
else
begin
y[i,j]:=aa*z*(sin((pi*m[j]/5))/cos((pi*m[j]/5))+2*aa*cos(m[j]/2*m[j]));
mmo1.Lines.Add('x= '+ FloatToStr(m[j])+ ' : ' + 'y= '+floattostr(y[i,j]));
StringGrid1.Cells[j,i+1]:=FloatToStr(y[i,j])
end;
Chart1.Series[0].AddXY(m[j],y[i,j])
end;
aa:=aa+da;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
mmo1.Text:='';
StringGrid1.ColCount:=2;
StringGrid1.Cells[1,0]:='1';
StringGrid1.Cells[0,1]:=' a/x';
end;
end.
Список использованной литературы
1. Кошелькова Л.В., Заковряшин А.И. Решение алгебраических задач численными методами в среде DELPHI: Учебное пособие к расчётной работе. - М.: Изд-во МАИ-ПРИНТ, 2008. - 88 с.: ил.
2. http://ru.wikipedia.org - свободная общедоступная мультиязычная универсальная интернет-энциклопедия.
Размещено на Allbest.ru
Подобные документы
Использование нестандартных функций и подпрограмм (процедур) для составления алгоритмов вычислений. Программы для вычисления значение корней нелинейного уравнения по методу половинного деления. Составление алгоритма операций над матрицами и интегралами.
курсовая работа [580,0 K], добавлен 23.08.2015Разработка алгоритмов методом пошаговой детализации. Типы данных и операции в Turbo-Pascal. Организация работы с подпрограммами. Составление алгоритмов и программ задач с использованием конечных сумм. Организация работы с динамическими переменными.
учебное пособие [1,4 M], добавлен 26.03.2014Принципы разработки математических моделей, алгоритмов и программ. Составление программы вычисления функции с использованием нестандартных функций. Нахождение значения корней нелинейного уравнения по методу касательных. Программа для вычисления интеграла.
курсовая работа [568,3 K], добавлен 07.03.2015Решение задач прикладного программирования. Оформление разработанных алгоритмов в виде графических схем. Написание программ с использованием подпрограмм, их отладка. Блок-схемы и листинг программ. Наборы тестов для отладки разработанных программ.
курсовая работа [575,8 K], добавлен 06.12.2013Разработка и анализ алгоритмов с использованием электронных таблиц и прикладных программ Smath Studio, Microsoft Excel. Проверка алгоритма ветвления или выбора. Реализация циклов на примере вычисления определённого интеграла с заданной точностью.
контрольная работа [1,0 M], добавлен 19.03.2016Исследование особенностей разработки линейных алгоритмов и их реализации в среде Delphi. Составление тестов для проверки программы. Характеристика основных элементов интерфейса, компонентов, значения их свойств. Построение графической схемы алгоритма.
лабораторная работа [316,6 K], добавлен 08.11.2012Изучение функций и возможностей среды разработки языка программирования Pascal. Рассмотрение работы с одномерными и двумерными массивами, со строками и числами. Математическая формулировка задач. Разработка алгоритмов, описание структуры программ.
курсовая работа [879,8 K], добавлен 11.02.2016Характеристика предприятия ТОО "Com Sales Group". Составление программ на языке программирования. Составление алгоритмов, разработка численных методов решения задач. Методы откладки программ. Анализ технологии машинной обработки экономической информации.
отчет по практике [1,3 M], добавлен 19.04.2016Анализ алгоритмов нахождения кратчайших маршрутов в графе без отрицательных циклов: Дейкстры, Беллмана-Форда и Флойда-Уоршалла. Разработка интерфейса программы на языке C++. Доказательство "правильности" работы алгоритма с помощью математической индукции.
курсовая работа [1,5 M], добавлен 26.07.2013Создание программы для вычисления значения функции на основе определённой формулы. Уточнение структуры входных и выходных данных и определение ассемблерного формата их представления. Разработка алгоритмов для реализации работы программного обеспечения.
курсовая работа [240,6 K], добавлен 17.06.2013