Wygląd formatki: Komponenty • 3 komponenty TButton (karta

Transkrypt

Wygląd formatki: Komponenty • 3 komponenty TButton (karta
Wielomian interpolacyjny Lagrange’a
1
Zadanie 2.
Zaprojektuj aplikację, która dla danego stopnia wielomianu i węzłów interpolacji oblicza, korzystając
z wielomianu interpolacyjnego Lagrange’a, wartość wielomianu dla x=c. Definicja klasy
TWielomian i definicje funkcji składowych mają być zamieszczone w oddzielnym pliku Unit2.h
i Unit2.cpp.Możesz skorzystać z gotowego projektu lub z ostatnich ćwiczeń.
Wygląd formatki:
Komponenty

3 komponenty TButton (karta Standard), uzupełnij odpowiednio własność Caption:
Podaj dane, Oblicz wartości wielomianu, Koniec

5 komponentów TEdit (karta Standard), uzupełnij własność Text jak na rysunku

8 komponentów TLabel (karta Standard), uzupełnij własność Caption jak na rysunku

1 komponent TPanel,

1 komponent TStringGrid (karta Additional), uzupełnij własności:
ColCount: 3
DefaultColWidth: 40
DefaultRowHeight: 24
FixedCols: 0
FixedRows: 1
Height: 89
Name: SG_wsp
RowCount: 3
Width: 473
Options, goEditing: true
Visible: false
Opis komponentu TStringGrid
Wiersze i kolumny są numerowane od lewego, górnego rogu.
Odwołanie się do komórki siatki: SG_wsp ->Cells[kolumna][wiersz]
Pierwsza komórka, w górnym lewym rogu komponentu ma indeksy Cells[0][0]
Wielomian interpolacyjny Lagrange’a
2
Obsługa zdarzeń kliknięcia na przyciski:
Podaj dane – dostosowanie liczby kolumn siatki TStringGrid do stopnia wielomianu, pokazanie
komponentu, uzupełnienie nagłówkowego wiersza komponentu TStringGrid liczbami od 0 do n:
Oblicz wartość wielomianu – obliczanie wartości wielomianu za pomocą wzoru Lagrange’a:
Koniec – zamknięcie aplikacji
Wygląd aplikacji po uruchomieniu:
Plik Unit2.cpp, Unit2.h
W celu obliczenia wartości wielomianu należy do klasy TWielomian dodać pola prywatne:
private:
int n;
double
double
double
double
a[MAX];
wx[MAX]; //węzły
wy[MAX]; // wartości w węzłach
W_Lagr[MAX]; //wspolczynniki wielomianu Lagrangea
oraz trzy funkcje składowe
void CzytajWezlyWielomianu(int nn, double *x, double *y);
wczytanie do pól klasy węzłów i wartości w węzłach z tablic x, y podanych jako parametry
bool WspLagrangea();
obliczenie współczynników wielomianu Lagrange’a według wzoru:
W_Lagr [i ] 
yi
n
 (x
j 0
i
 xj)
j i
double WielomianLagrangea(double);
obliczenie wartości wielomianu ze wzoru Lagrange’a z wykorzystaniem obliczonych już
współczynników według wzoru:
n
n
x  xj
i 0
j 0
xi  x j
p ( x)   y i 
j i
public:
TWielomian() {};
Wielomian interpolacyjny Lagrange’a
3
~TWielomian() {};
void CzytajWezlyWielomianu(int, double*, double*);
bool WspLagrangea();
double WielomianLagrangea(double);
Ponadto:
W pliku Unit1.cpp dodać funkcję o nazwie PoprawneDane sprawdzającą poprawność wartości
w węzłach oraz pobierającą te dane do dwóch tablic x, y
Funkcja zwraca true w przypadku poprawnych danych, wtedy można obliczać wartość wielomianu
w punkcie. W przeciwnym razie zwraca false i pojawia się odpowiedni komunikat.
Plik Unit1.cpp
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{}
//-----------------------------------------------------------------bool PoprawneDane(TStringGrid *SG_wsp, int nn, double *x, double *y)
{
bool popr = true;
double wspx, wspy;
for(int i=0;i<nn+1;i++)
{
if(TryStrToFloat(SG_wsp->Cells[i][1],wspx)
&& TryStrToFloat(SG_wsp->Cells[i][2],wspy))
{
x[i] = wspx; y[i] = wspy;
}
else
{
ShowMessage("niepoprawne dane");
return false;
}
}
return popr;
}
//-----------------------------------------------------------------...
Praca domowa
Jeżeli uruchomiłeś program w wersji podstawowej zadbaj o sprawdzanie poprawności danych i
czyszczenie pół przy zmianie danych:

do pola Edit1 (stopień wielomianu) można wpisywać tylko liczby całkowite, po wczytaniu
liczby całkowitej należy sprawdzić, czy jest z zakresu od 2 do 10,

siatka TStringGrid pokazuje się dopiero po podaniu stopnia wielomianu,

w przypadku zmiany stopnia wielomianu sitaka jest czyszczona i znika, czyszczone jest również
pole edycyjne z wynikiem,

pole edycyjne z wynikiem czyszczone jest również w przypadku zmiany wartości c,

wartość c powinna się zawierać pomiędzy najmniejszą i największą wartością węzłów
interpolacji,

wartość wynikowa powinna być wyświetlana z dokładnością do dwóch miejsc po przecinku,

należy zliczyć i wyświetlić liczbę mnożeń i dodawań, jeśli dane są zmieniane pola są czyszczone,

przycisk Oblicz wartość wielomianu jest aktywny dopiero po podaniu stopnia i współczynników
wielomianu.

Podobne dokumenty