Forum 1 Grupy Ćwiczeniowej
Forum studentów informatyki Politechniki Białostockiej
FAQ
Szukaj
Użytkownicy
Grupy
Galerie
Rejestracja
Profil
Zaloguj
Forum Forum 1 Grupy Ćwiczeniowej Strona Główna
->
3 semestr
Napisz odpowiedź
Użytkownik
Temat
Treść wiadomości
Emotikony
Więcej Ikon
Kolor:
Domyślny
Ciemnoczerwony
Czerwony
Pomarańćzowy
Brązowy
Żółty
Zielony
Oliwkowy
Błękitny
Niebieski
Ciemnoniebieski
Purpurowy
Fioletowy
Biały
Czarny
Rozmiar:
Minimalny
Mały
Normalny
Duży
Ogromny
Zamknij Tagi
Opcje
HTML:
TAK
BBCode
:
TAK
Uśmieszki:
TAK
Wyłącz HTML w tym poście
Wyłącz BBCode w tym poście
Wyłącz Uśmieszki w tym poście
Kod potwierdzający: *
Wszystkie czasy w strefie EET (Europa)
Skocz do:
Wybierz forum
To już 5 semestr???
----------------
Programowanie systemów aplikacyjnych
Metody probabilistyczne i statystyka
Grafika komputerowa
Systemy operacyjne
Układy elektroniczne
Systemy ekspertowe
Angielski
Architektura Komputerów
Bazy Danych
Systemy Samouczące
Bezpieczeństwo Systemów Komputerowych
Systemy Operacyjne 2
Programowanie Obiektowe
Statystyka 2
OiPL [o ile cos takiego bedzie]
Linux
4 semestr
3 semestr
Chillout
----------------
Spam Room
Humor
ShoutBox
Przegląd tematu
Autor
Wiadomość
Linka
Wysłany: Wto 15:05, 27 Lis 2007
Temat postu: Metody Numeryczne - Zajecia
To co dzis na zajeciach mamy zrobic:)
Kod:
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
y, yr : array[1..1000] of single;
sum_sin, sum_cos, amp : array [0..500] of single;
xx,yy, aa : double;
i,n,j : integer;
plik, wynik : textfile;
begin
n:=1000;
//assignfile(plik,'c:\fou_dane.txt');
//assignfile(wynik,'c:\fou_dane_wyn.txt');
//rewrite(plik);
//rewrite(wynik);
// generowanie danych
//form1.series2.clear;
aa:=0.0;
for i:=1 to n do
begin
xx := i*0.1;
yy := xx+aa;
if yy>3 then aa:=aa-3;
y[i] := yy;
//writeln(plik,yy);
//form1.series2.addxy(xx,yy,'',clred);
form1.Canvas.pixels[i,trunc(abs(yy)*10)]:=clred;
//form1.Canvas.rectangle(i,trunc(abs(yy)*10),i+5,trunc(abs(yy)*10)+5);
end;
//closefile(plik);
// obliczanie współczynników
for j := 1 to (n div 2) - 1 do
begin
sum_sin[j] := 0.0;
sum_cos[j] := 0.0;
for i := 1 to n do
begin
sum_sin[j] := sum_sin[j] + y[i]*sin(2*pi*j*i/n);
sum_cos[j] := sum_cos[j] + y[i]*cos(2*pi*j*i/n);
end;
sum_sin[j] := sum_sin[j]*2/n;
sum_cos[j] := sum_cos[j]*2/n;
end;
// obliczenia zerowych współczynników
sum_sin[0] := 0.0;
sum_cos[(n div 2)] := 0.0;
for i := 1 to n do
begin
sum_sin[0] := sum_sin[0] + y[i];
sum_cos[(n div 2)] := sum_cos[(n div 2)] + y[i]*cos(pi*i);
end;
sum_sin[0] := sum_sin[0]/n;
sum_cos[0] := 0.0;
sum_cos[(n div 2)] := sum_cos[(n div 2)]/n;
sum_sin[(n div 2)] := 0.0;
// wydruk widma
//form1.series1.clear;
for j:=1 to (n div 2) do
begin
amp[j]:=sqrt(sqr(sum_sin[j])+sqr(sum_cos[j]));
xx:=j;
yy:=amp[j];
//writeln(wynik,yy);
//form1.series1.addxy(xx,yy,'',clred);
form1.Canvas.pixels[i,trunc(abs(yy)*10)]:=clred;
end;
//closefile(wynik);
// rekonstrukcja
for i:=1 to n do
begin
yr[i]:= 0.0;
//for j:=1 to (n div 2) do
for j:=100 to 150 do
yr[i]:=yr[i] + sum_sin[j]*sin(2*pi*j*i/n)+ sum_cos[j]*cos(2*pi*j*i/n);
yr[i]:=yr[i]+sum_sin[0];
end;
//form1.series3.clear;
for i:=1 to n do
begin
xx := i;
yy := yr[i];
//form1.series3.addxy(xx,yy,'',clred);
form1.Canvas.pixels[i,trunc(abs(yy)*10)]:=clred;
end;
end;
end.
wersja zmieniona:) :
Kod:
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
y, yr : array[1..1000] of single;
sum_sin, sum_cos, amp : array [0..500] of single;
xx,yy, aa : double;
i,n,j : integer;
plik, wynik : textfile;
begin
n:=1000;
//assignfile(plik,'c:\fou_dane.txt');
//assignfile(wynik,'c:\fou_dane_wyn.txt');
//rewrite(plik);
//rewrite(wynik);
// generowanie danych
//form1.series2.clear;
aa:=0.0;
for i:=1 to n do
begin
xx := i*0.1;
//yy := xx+aa;
//if yy>3 then aa:=aa-3;
yy:=3.0*sin(xx)+cos(5.0*xx);
y[i] := yy;
//writeln(plik,yy);
//form1.series2.addxy(xx,yy,'',clred);
form1.Canvas.pixels[i,trunc(abs(yy)*10)]:=clred;
//form1.Canvas.rectangle(i,trunc(abs(yy)*100),i+5,trunc(abs(yy)*100)+5);
end;
//closefile(plik);
// obliczanie współczynników
for j := 1 to (n div 2) - 1 do
begin
sum_sin[j] := 0.0;
sum_cos[j] := 0.0;
for i := 1 to n do
begin
sum_sin[j] := sum_sin[j] + y[i]*sin(2*pi*j*i/n);
sum_cos[j] := sum_cos[j] + y[i]*cos(2*pi*j*i/n);
end;
sum_sin[j] := sum_sin[j]*2/n;
sum_cos[j] := sum_cos[j]*2/n;
end;
// obliczenia zerowych współczynników
sum_sin[0] := 0.0;
sum_cos[(n div 2)] := 0.0;
for i := 1 to n do
begin
sum_sin[0] := sum_sin[0] + y[i];
sum_cos[(n div 2)] := sum_cos[(n div 2)] + y[i]*cos(pi*i);
end;
sum_sin[0] := sum_sin[0]/n;
sum_cos[0] := 0.0;
sum_cos[(n div 2)] := sum_cos[(n div 2)]/n;
sum_sin[(n div 2)] := 0.0;
// wydruk widma
//form1.series1.clear;
for j:=1 to (n div 2) do
begin
amp[j]:=sqrt(sqr(sum_sin[j])+sqr(sum_cos[j]));
xx:=j;
yy:=amp[j];
//writeln(wynik,yy);
//form1.series1.addxy(xx,yy,'',clred);
memo1.lines.add(floattostr(yy));
//form1.Canvas.pixels[j,trunc(abs(yy)*1000)+100]:=clred;
form1.Canvas.rectangle(j,trunc(abs(yy)*1000)+100,j+5,trunc(abs(yy)*1000)+100+5);
end;
//closefile(wynik);
// rekonstrukcja
for i:=1 to n do
begin
yr[i]:= 0.0;
for j:=1 to (n div 2) do
//for j:=100 to 150 do
yr[i]:=yr[i] + sum_sin[j]*sin(2*pi*j*i/n)+ sum_cos[j]*cos(2*pi*j*i/n);
yr[i]:=yr[i]+sum_sin[0];
end;
//form1.series3.clear;
for i:=1 to n do
begin
xx := i;
yy := yr[i];
//form1.series3.addxy(xx,yy,'',clred);
form1.Canvas.pixels[i,trunc(abs(yy)*10)+300]:=clblue;
//form1.Canvas.rectangle(i,trunc(abs(yy)*100),i+5,trunc(abs(yy)*100)+5);
end;
end;
fora.pl
- załóż własne forum dyskusyjne za darmo
Powered by
phpBB
© 2001, 2005 phpBB Group
deoxBlue v1.0 // Theme created by
Sopel stylerbb.net & programosy.pl
Regulamin