![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Люди добрые написал программу для решения определенных интегралов..
нужно доделать чтобы она еще график функции построила... просто проблема в том что функция вводится в поле edit...вот и не могу сделать так чтобы график строила.. вот код..заранее спс ================================================== ========== Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, UFunction, jpeg, ExtCtrls, TeeProcs, TeEngine, Chart, Series; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Edit4: TEdit; Edit5: TEdit; Button2: TButton; Button3: TButton; CheckBox1: TCheckBox; Image1: TImage; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label7: TLabel; Button5: TButton; Button4: TButton; Label8: TLabel; Label9: TLabel; Edit6: TEdit; Edit7: TEdit; Button6: TButton; Button7: TButton; Label10: TLabel; Edit8: TEdit; Button8: TButton; procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Edit2KeyPress(Sender: TObject; var Key: Char); procedure Edit4KeyPress(Sender: TObject; var Key: Char); procedure Button1Click(Sender: TObject); procedure Edit5KeyPress(Sender: TObject; var Key: Char); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Edit5Enter(Sender: TObject); procedure Edit1Enter(Sender: TObject); procedure Edit2Enter(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button8Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; OldFStroka: string; a, b: extended;//границы интегрирования nc: integer;//разбить на nc частей implementation uses Unit2, Unit3; {$R *.dfm} procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char); begin if not (key in['0'..'9', 'a'..'z', #8, #13, '-', '+', '*', '/', '^', ',', '.', '(', ')'])then key:=#0; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in['0'..'9', #8, '-', 'E', 'e', ',', '.']) then key:=#0; end; procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if not (key in['0'..'9', #8, '-', 'E', 'e', ',', '.']) then key:=#0; end; procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char); begin if not (key in['0'..'9', #8]) then key:=#0; end; procedure TForm1.Button3Click(Sender: TObject); begin LoadKeyboardLayout('00000419', KLF_ACTIVATE);//русский end; procedure TForm1.Button2Click(Sender: TObject); begin LoadKeyboardLayout('00000409', KLF_ACTIVATE);//английский end; procedure TForm1.Edit5Enter(Sender: TObject); begin if Form1.CheckBox1.Checked = true then LoadKeyboardLayout('00000409', KLF_ACTIVATE);//английский end; procedure TForm1.Edit1Enter(Sender: TObject); begin if Form1.CheckBox1.Checked = true then LoadKeyboardLayout('00000409', KLF_ACTIVATE);//английский end; procedure TForm1.Edit2Enter(Sender: TObject); begin if Form1.CheckBox1.Checked = true then LoadKeyboardLayout('00000409', KLF_ACTIVATE);//английский end; procedure Pr; begin FStroka:=Form1.Edit5.Text; if length(OldFStroka) = 0 then begin CreateSh; OldFStroka:=FStroka; end else if OldFStroka <> FStroka then begin DeleteSh; CreateSh; OldFStroka:=FStroka; end; end; function Log: boolean; begin if Form1.Edit5.Text <> '' then Log:=true else Log:=false; if Form1.Edit1.Text <> '' then a:=strtofloat(Form1.Edit1.Text) else Log:=false; if Form1.Edit2.Text <> '' then b:=strtofloat(Form1.Edit2.Text) else Log:=false; if Form1.Edit4.Text <> '' then nc:=strtoint(Form1.Edit4.Text) else Log:=false; end; function IntegralSimpson: extended;//формула Симпсона var c0, c1, c2, c3, dx: extended; i: integer; k: real; begin c0:=(b-a)/(3*nc); c1:=(F(a)+F(b))/2; dx:=(b-a)/nc; c2:=0; i:=0; repeat i:=i+1; c2:=c2+F(a+dx*i); until i = nc-1; c3:=0; k:=-0.5; repeat k:=k+1; c3:=c3+F(a+dx*k); until k = nc-0.5; IntegralSimpson:=c0*(c1+c2+2*c3); end; function IntegralPrmg: extended;//формула прямоугольников var sum, dx: extended; k: real; begin dx:=(b-a)/nc; sum:=0; k:=-0.5; repeat k:=k+1; sum:=sum+F(a+dx*k); until k = (2*nc-1)/2; IntegralPrmg:=dx*sum; end; function IntegralTrap: extended;//формула трапеций var dx, c0, c1: extended; i: integer; begin dx:=(b-a)/nc; c0:=(F(a)+F(b))/2; c1:=0; i:=0; repeat i:=i+1; c1:=c1+F(a+dx*i); until i = nc-1; IntegralTrap:=dx*(c0+c1); end; procedure TForm1.Button1Click(Sender: TObject); begin Pr; if Log then Form1.Edit3.Text:=floattostr(IntegralSimpson); Form1.Edit6.Text:=floattostr(IntegralPrmg); Form1.Edit7.Text:=floattostr(IntegralTrap); end; procedure TForm1.Button5Click(Sender: TObject); //процедура сохранения результата в файл var F,F1,F2: TextFile; S,S1,S2: String; begin AssignFile(F, 'Метод симпсона.txt'); Rewrite(F); Writeln (F, 'Метод симпсона'); Write(F, 'Интеграл равен='); S := Edit3.Text; Write(F,S); CloseFile(F); AssignFile(F1, 'Метод прямоугольников.txt'); Rewrite(F1); Writeln (F1, 'Метод прямоугольников'); Write(F1, 'Интеграл равен='); S1 := Edit6.Text; Write(F1,S1); CloseFile(F1); AssignFile(F2, 'Метод трапеций.txt'); Rewrite(F2); Writeln (F2, 'Метод трапеций'); Write(F2, 'Интеграл равен='); S2 := Edit7.Text; Write(F2,S2); CloseFile(F2); end; procedure TForm1.Button4Click(Sender: TObject); begin close end; procedure TForm1.Button6Click(Sender: TObject); begin Form3.Show; end; procedure TForm1.Button8Click(Sender: TObject); begin Form2.Show; end; end. lmikle: пользукмся тегами!!! |
#2
|
|||
|
|||
![]() Угу, а как ты тогда считаешь?
Расчет значения определенного интеграла численными методами предполагает, что ты можешь вычислить значение функции в нужных тебе точках. Соответсвенно, значения ты вычисляешь. Так в чем проблема построить график по этим точкам??? |
#3
|
|||
|
|||
![]() Да не получается ничего(
видимо после всего проделанного не соображаю уже.. ![]() помоги с кодом если можешь пожалуйста.. после завтра сдавать( |