Created
November 10, 2011 19:39
-
-
Save carbolymer/1355925 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% operacja dominujaca: + - * / | |
% rekurencja 1-go rodzaju - bez rozgalezien w drzewie, bledy i zlozonosci identyczne | |
% x - punkt poczatkowy | |
% n - maksymalna liczba iteracji | |
% i - poczatkowa zlozonosc obliczeniowa, przy wywolaniu zewnetrznym i = 0 | |
function [x,i] = rec(x,n,i) | |
if(n == 0) | |
x = x; | |
else | |
% algorytm newtona do szukania miejsc zerowych | |
x = x - (x^3-9*x^2+23*x-15)/(3*x^2-18*x+23); | |
i = i + 15; % 15 operacji dominujacych | |
n = n - 1; % maksymalna ilosc wywolan | |
[x,i] = rec(x,n,i); | |
end | |
end | |
% algorytm zakodowany iteracyjnie | |
function [x,i] = it(x,n,i) | |
while (n ~= 0) | |
x = x - (x^3-9*x^2+23*x-15)/(3*x^2-18*x+23); | |
i = i + 15; % 15 operacji | |
n = n - 1; | |
end | |
end | |
% zlozonosc w funkcji iteracji z okazji ze algorytm jest 1-go rodzaju jest taka sama, | |
% tzn jest dana zaleznoscia liniowa | |
range = 1:15; | |
for k = range; | |
% 7 jest przykladowa dana, mamy szukac zera w x=5 | |
% 0 - licznik iteracji na poczatku | |
[wartosc_rec(k) , zlozonosc_rec(k)] = rec(20,k,0); | |
[wartosc_it(k) , zlozonosc_it(k)] = it(20,k,0); | |
end | |
%wykres wartosci X w zaleznosci od iteracji | |
plot( | |
% dziedzina, przeciwdziedzina, parametry (typ znacznika: o, kolor: 1, nazwa: Rekurencja), | |
% dalej wielkosc markera - opcjonalna | |
range, wartosc_rec, "o1;Rekurencja;", "markersize", 12, | |
range, wartosc_it, "x3;Iteracja;", "markersize", 12 | |
) % bez srednika | |
ylabel("Wartosc X"); % etykieta X | |
xlabel("Numer iteracji"); % etykieta Y | |
title("Wykres zbieznosci rozwiazania do x = 5"); % tytul wykresu | |
sleep(5); % tylko do octava, w matlabie wywalic | |
% wykres zlozonosci od iteracji | |
% jakbys nie widzial pierwszego wykresu, wykomentuj drugi | |
plot( | |
range, zlozonosc_rec, "o1;Rekurencja;", "markersize", 12, | |
range, zlozonosc_it, "x3;Iteracja;", "markersize", 12 | |
) | |
ylabel("Ilosc operacji - zlozonosc"); | |
xlabel("Numer iteracji") | |
title("Wykres zlozonosci algorytmow"); | |
sleep(5); % tylko do octava, w matlabie wywalic |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment