Помощь в написании студенческих работ
Антистрессовый сервис

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

КонтрольнаяПомощь в написанииУзнать стоимостьмоей работы

Входными данными в этой задаче являются: An— начальное значение аргумента, Da— шаг, с которым изменяется параметр, N— кол-во его изменений, M— количество значений аргумента Х, массив значений аргумента Х. Для решения интеграла методом Симпсона используются следующие входные данные: интервалы изоляции интеграла — с, d, начальное приближение корня — Xo, погрешность вычисления интеграла? Eps… Читать ещё >

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

Московский авиационный институт Национальный исследовательский университет Факультет радиоэлектроники Кафедра 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

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

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 — свободная общедоступная мультиязычная универсальная интернет-энциклопедия.

Показать весь текст
Заполнить форму текущей работой