Metody numeryczne

0

Witam potrzebuje pomocy w napisaniu kilku programów czy jest ktoś w stanie mi pomóc ? O to lista
1 prog. metoda siecznych, Newtona,program powinien miec mozliwosc wyznaczaania ekstremum i pochodna obliczyc
2.liczenie roznic skonczonych. Ogolnie metody interpolacjii
3. calkowanie metoda trapezow Simpsona i monte carlo
4. rozwiazywanie ukladow liniowych eliminacjii Gaussa i jordana
5. aproksymacja funkcji liniowej z mozliwoscia aproksymacji potegowej

na razie miałem semestr podstaw informatyki a teraz takie coś mam napisać [e beksa] niewiem jak HELP
Tyle wystrobałem pierwszego prog ale działa tylko jedna metoda


unit all;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;

type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TLineSeries;
GroupBox1: TGroupBox;
Panel1: TPanel;
Edit1: TEdit;
Panel2: TPanel;
Edit2: TEdit;
GroupBox2: TGroupBox;
Panel3: TPanel;
Edit3: TEdit;
Panel4: TPanel;
Edit4: TEdit;
GroupBox3: TGroupBox;
Panel5: TPanel;
Edit5: TEdit;
Panel6: TPanel;
Edit6: TEdit;
Button1: TButton;
Button2: TButton;
GroupBox4: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
procedure Button1Click(Sender: TObject);
procedure Chart1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
lewa,prawa:real; // pola klasy TForm1
a,b,x:real;
function f(x:real):real;
procedure RysujFunkcje;// metoda klasy TForm1
function Bisekcja:Boolean;
function Sieczna:Boolean;{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R .DFM}
function TForm1.Bisekcja:Boolean;//znajdz pierwiastek
Var
eps,fa,fb,fx:real;
begin
eps:=StrToFloat(edit6.Text);
Result:=True;
fa:=f(a); fb:=f(B);
if fa
fb>0 then begin result:=false;exit end;
repeat
if abs(fa)<eps then begin x:=a;exit end;
if abs(fb)<eps then begin x:=b;exit end;
x:=(a+B)/2; fx:=f(x);
if fa*fx<0 then begin b:=x;fb:=f(B);end
else begin a:=x;fa:=f(a); end;
until abs(b-a)<eps;
end;

function TForm1.Sieczna:Boolean;//znajdz pierwiastek
var
eps,fa,fb,fx:real;
begin
eps:=StrToFloat(edit6.Text);
Result:=True;
fa:=f(a); fb:=f(B);
if fafb>0 then begin result:=false;exit end;
repeat
if abs(fa)<eps then begin x:=a;exit end;
if abs(fb)<eps then begin x:=b;exit end;
x:=a-fa/(fb-fa)
(b-a); fx:=f(x);
if fa*fx<0 then begin b:=x;fb:=f(B);end
else begin a:=x; fa:=f(a); end;
until abs(b-a)<eps;
end;

function TForm1.f(x:real):real; //Dana Funkcja
begin
result:=sin(x); //wynik funkcji
end;

procedure TForm1.RysujFunkcje; //procedura rysowania funkcji
const
N=1024; //liczba punktów na wykresie
var
dx,x:real;//przyrost miedzy puktami, odleglosc
i:integer;
begin
dx:=(prawa-lewa)/(N-1); // skok funkcji
x:=lewa-dx;
series1.clear;
for i:=1 to N do
begin
x:=x+dx;
series1.AddXY(x,f(x),'',clblue); // dodanie 1 pkt do serii
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
lewa:=StrToFloat(edit1.text);
prawa:=StrToFloat(edit2.text);
RysujFunkcje;
end;

procedure TForm1.Chart1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbleft then
begin
a:=Chart1.BottomAxis.CalcPosPoint(x);
Edit3.Text:=FloatToStr(a);
end
else
begin
b:=Chart1.BottomAxis.CalcPosPoint(x);
Edit4.Text:=FloatToStr(B);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if CheckBox1.Checked then
begin
Bisekcja();
edit5.text:=FloatToStr(x);
end
else if checkbox2.checked then
begin
Sieczna();
edit5.text:=FloatToStr(x)
end
else
ShowMessage('Brak pierwiastka');

end;
end.


Jest ktoś w stanie mi pomóc ??

0

To opisz jak mają działać te algorytmy, będzie łatwiej ci pomóc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1