Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as Matlab by oko ( 15 years ago )
clear all                  % czysci wszystkie inne zmienne
format long e              % postac wyswietlania liczb
 
p = [ 2 3 0 -1 ];          % definicja funkcji p = 2x^3 + 3x^2 + 0x^2 - 1 = 0
dp = polyder ( p );        % pochodna wielomianu p
x = [ -10 : 0.1 : 10 ];    % x - wektor od -10 do 10 z krokiem 0.1
y = polyval ( p, x );      % wartosc funkcji p dla x = [-10 : 0.1 : 10]
dy = polyval ( dp, x );    % wartosc pochodnej dla x
  
guess = 100;                     % zgadujemy polozenie miejsca zerowego
newy = polyval ( p, guess );     % nowe y = wartosc funkcji p dla x = guess (100)
steps = 0;                       % zmienna liczaca ilosc krokow (iteracji)
 
iterations = zeros ( 1, 10 );    % tworzymy macierz w ktorej bedziemy trzymac ilosc iteracji dla danej dokladnosci
 
for accuracy = [ 1 : 10 ]        % petla zlozona z 10 krokow, przy kazdym bierzemy zmienna \'accuracy\' wieksza o 1
    while abs ( newy ) > ( 10 ^ ( - accuracy ) )          % powtarzamy ponizsze instrukcje tak dlugo, jak blad jest wiekszy od danej dokladnosci ( np. 10 ^ -4 = 0.001 )
        guess = guess - ( newy / polyval ( dp, guess ) )  % metoda Eulera
        newy = polyval ( p, guess );                      % nowe y = wartosc funkcji p dla x = guess
        steps = steps + 1;                                % zwiekszamy ilosc krokow o 1
    end                                                   % znalezlismy miejsce zerowe z dana dokladnoscia, wiec teraz...
    iterations ( 1, accuracy ) = steps;                   % ...zapisujemy ilosc krokow do macierzy w danym jej miejscu
    accuracies ( 1, accuracy ) = 10 ^ ( - accuracy );     % to samo robimy z dokladnoscia jakiej chcielismy. w sumie niepotrzebne
end
 
semilogy ( iterations, accuracies, '--o' )  % wykres o logarytmicznej skali osi OY
    xlabel ( 'liczba iteracji' );           % podpis osi X
    ylabel ( 'dokladnosc' );                % podpis osi Y

 

Revise this Paste

Parent: 23874
Your Name: Code Language: