Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка.doc
Скачиваний:
49
Добавлен:
24.03.2015
Размер:
1.09 Mб
Скачать

Расчеты в математическом пакете Mat lab

В математическом пакете по условию задания был построен график функции и найден корень уравнения с использованием символьного решения и в численном виде используя встроенные функции. Для описания функции создан m-файл функции.

На следующем рисунке представлен график функции:

Для записи команд использован m-файл:

В командном окне были получены следующие результаты:

tochnoe = 0.56226

levpr = 0.5555

pravpr = 0.5691

trapezii = 0.5623

Sympson = 0.5623

Отчет о результатах вычисления приближенного значения корня уравнения в MS Excel.

В MS Excel был проведен расчет приближенного значения корня уравнения.

Интерфейс программы:

График уравнения:

Корни, полученные в excel:

Описание приложения созданного в среде Delphi.

При создании приложения в среде Delphi в интерфейсе был предусмотрен вывод вида функции и графика. Нахождение корня уравнения интеграла было реализовано с использование трех методов: метода правых и левых прямоугольников, метода трапеций и метода Симпсона. В отличии от расчета в Excel, где корни находились, в программе предусмотрен ввод точности вычисления пользователем. Результаты расчета выводятся, как в окно приложения, так и в текстовый файл.

Блок – схемы, реализующие численные методы

Блок-схема для метода правых прямоугольников:

Блок-схема для метода левых прямоугольников :

Блок-схема для метода трапеций:

Блок-схема метода Симпсона:

Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Math, AxCtrls, OleCtrls, VCF1, ExtCtrls, TeeProcs,

TeEngine, Chart, Menus, Series, OleCtnrs;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Edit1: TEdit;

Button3: TButton;

Edit2: TEdit;

F1Book1: TF1Book;

Edit3: TEdit;

Button5: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Chart1: TChart;

Edit4: TEdit;

Button4: TButton;

Series2: TLineSeries;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

Label4: TLabel;

OleContainer1: TOleContainer;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure N1Click(Sender: TObject);

procedure N2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

a,b,h,s,x,e:real;

i,j,n:integer;

f:text;

str:string;

implementation

{$R *.dfm}

function integral(x:real):real;

begin

integral:=1/sqrt(power(x,2)+2*x+2);

end;

procedure methlev;

begin

h:=(b-a)/(n-1);

x:=0;

s:=0;

while abs(s)<e do

for i:=2 to n do

begin

x:=x+h;

s:=s+integral(x)*h;

end;

end;

procedure methpr;

begin

h:=(b-a)/n;

x:=0;

s:=0;

while abs(s)<e do

for i:=1 to n do

begin

s:=s+integral(x)*h;

x:=x+h;

end;

end;

procedure methtr;

var

sa,sb:real;

begin

h:=(b-a)/n;

x:=0;

s:=0;

while abs(s)<e do

for i:=1 to n do

begin

sa:=integral(x);

sb:=integral(x+h);

s:=s+h*(sa+sb)/2;

x:=x+h;

end;

end;

procedure meths;

var

sa,sb,sh:real;

begin

h:=(b-a)/n;

x:=0;

s:=0;

while abs(s)<e do

for i:=1 to n do

begin

sa:=integral(x);

sb:=integral(x+h);

s:=s+(2*sa+sb)*h/3;

x:=x+h;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

n:=StrToInt(Form1.Edit1.Text);

a:=StrToFloat(Form1.Edit2.Text);

b:=StrToFloat(Form1.Edit3.Text);

e:=StrToFloat(Edit4.Text);

methlev;

F1Book1.textRC[1,1]:= 'Method';

F1Book1.textRC[1,2]:='levix';

F1Book1.textRC[2,1]:= 'S=';

F1Book1.numberRC[2,2]:=s;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

n:=StrToInt(Edit1.Text);

a:=StrToFloat(Edit2.Text);

b:=StrToFloat(Edit3.Text);

e:=StrToFloat(Edit4.Text);

methpr;

F1Book1.textRC[1,3]:='pravix';

F1Book1.numberRC[2,3]:=s;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

n:=StrToInt(Edit1.Text);

a:=StrToFloat(Edit2.Text);

b:=StrToFloat(Edit3.Text);

e:=StrToFloat(Edit4.Text);

methtr;

F1Book1.textRC[1,4]:='trapezii';

F1Book1.numberRC[2,4]:=s;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

n:=StrToInt(Edit1.Text);

a:=StrToFloat(Edit2.Text);

b:=StrToFloat(Edit3.Text);

e:=StrToFloat(Edit4.Text);

meths;

F1Book1.textRC[1,5]:='sumpsona';

F1Book1.numberRC[2,5]:=s;

end;

procedure TForm1.Button4Click(Sender: TObject);

var y:real;

begin

form1.Chart1.Series[0].Clear;

n:=StrToInt(Edit1.Text);

a:=StrToFloat(Edit2.Text);

b:=StrToFloat(Edit3.Text);

e:=StrToFloat(Edit4.Text);

h:= (b-a)/n;

x:=a;

Chart1.Series[0].AddXY(x,y,'',clRed);

for i:=1 to n do begin

x:=x+h;

y:=integral(x);

Chart1.Series[0].AddXY(x,y,'',clRed);

end;

end;

procedure TForm1.N1Click(Sender: TObject);

begin

close;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

AssignFile(f,'Корни');

rewrite(f);

for i:=1 to n do begin

str:='';

for j:=1 to n do str:=str+F1Book1.TextRC[i,j]+' ';

writeln(f,str);

end;

closeFile(f);

end;

end.

Изображение окна приложения

Первоначальный интерфейс имеет следующий вид:

После выполнения расчетов при E<= 0,0001:

В качестве отчета был сформирован файл «Корни.txt»:

Анализ полученных результатов

В соответствии с заданием на курсовую работу в математическом пакете мною было найдено решение определенного интеграла и построен график.

В электронных таблицах был найден корень уравнения. Результаты практически совпали с результатами в Matlab.

Для поиска корня в среде Delphi пользователь имеет возможность ввести точность вычисления с клавиатуры.

Таким образом, расчеты показали, что можно найти решение определенного интеграла в разных средах. Наиболее трудоемким расчет оказался в среде Delphi.