Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Расчеты в математическом пакете Mat lab ⇐ ПредыдущаяСтр 3 из 3
В математическом пакете по условию задания был построен график функции и найден корень уравнения с использованием символьного решения и в численном виде используя встроенные функции. Для описания функции создан m-файл функции.
На следующем рисунке представлен график функции:
В командном окне были получены следующие результаты: tochnoe = 0.56226 levpr = 0.5555 pravpr = 0.5691 trapezii = 0.5623 Sympson = 0.5623
В MS Excel был проведен расчет приближенного значения корня уравнения. Интерфейс программы:
График уравнения: Корни, полученные в excel:
При создании приложения в среде 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. Литература. 1.Фаронов В.В. Delphi. Программирование на языке высокого уровня 2.Уокенбах Д. Microsoft Office Excel 2007 3.Матющенко М.А. Matlab. Первые шаги.
Популярное: |
Последнее изменение этой страницы: 2016-07-13; Просмотров: 484; Нарушение авторского права страницы