1.Funkcja z której szukamy pierwiastki
function g=funkcja(x);
g=(x-3)*(x+5)*(x+7); równanie funkcji
end
2.Rozwiązywanie równań nieliniowych (Metoda bisekcji)
function c=bisekcja(a, b, ep) deklaracja funkji
if nargin()<3 zabezpieczenie przed podaniem zlej wartosci
parametrow
ep=0.00005; parametr ustawiany domyslnie
end
if funkcja(a)*funkcja(b)>0; sprawdzanie przedzialu
disp('brak miejsc zerowych')
elseif funkcja(a)*funkcja(b)==0; wyjatek dla iloczynu rownego 0
a;
b;
funkcja(a)
funkcja(b)
else
while abs(b-a)>ep petal liczaca kolejne punkty podzialu
d=(a+b)/2;
if funkcja(a)*funkcja(d)<0; warunek zbierznosci pierwszego przedzialu
b=d;
elseif funkcja(b)*funkcja(d)<0; warunek zbierznosci drugiego przedzialu
a=d;
else funkcja zeruje sie w ktoryms punkcje a lub b
break
return
end
end
if funkcja(d)==0 wypisanie wyniku
disp(['rozwiazaniem jest ',num2str(d)])
else
a
b
funkcja(a)
funkcja(b)
end
end
end
3. Rozwiązywanie równań nieliniowych (Metoda siecznych)
function c=sieczna(a, b, ep)
if nargin()<3 zabezpieczenie przed podaniem zlej wartości
parametrow
ep=0.00005; parametr ustawiany domyslnie
end
if funkcja(a)*funkcja(b)>0; sprawdzanie przedzialu
disp('brak miejsc zerowych')
elseif funkcja(a)*funkcja(b)==0; wyjatek dla iloczynu rownego 0
a;
b;
funkcja(a)
funkcja(b)
else
while abs(funkcja(b))>ep; petal liczaca kolejne punkty podzialu
if abs(funkcja(a))<ep
break
endif
x=GAUSE([1 a;1 b],[funkcja(a);funkcja(b)]); wyliczanie parametrow prostej przechodzącej
przez punkty a b (funkcja wykanianie wlasne)
d=-x(1,1)/x(2,1);
if funkcja(a)*funkcja(d)<0; warunek zbierznosci pierwszego przedzialu
b=d;
elseif funkcja(b)*funkcja(d)<0; warunek zbierznosci drugiego przedzialu
a=d;
else funkcja zeruje sie w ktoryms punkcje a lub b
break
return
end
end
if funkcja(d)==0 wypisanie wyniku
disp(['rozwiazaniem jest ',num2str(d)])
else
a
b
funkcja(a)
funkcja(b)
end
end
end
4. Rozwiązywanie równań nieliniowych (Metoda stycznych)
function c=styczna(a, ep)
b=a+0.00005; punkt współ styczny z punktem a
if nargin()<2 zabezpieczenie przed podaniem zlej wartości
parametrow
ep=0.00005 parametr ustawiany domyslnie
end
if funkcja(a)*funkcja(b)==0; wyjatek dla iloczynu rownego 0
a
funkcja(a)
else
while abs(funkcja(a))>ep;
x=GAUSE([1 a;1 b],[funkcja(a);funkcja(b)]); wyliczanie parametrow prostej przechodzącej
przez punkty a b (funkcja wykanianie wlasne)
d=-x(1,1)/x(2,1);
if funkcja(a)*funkcja(d)!=0; zmiana położenia punktow nowej stycznej
a=d;
else
break
return
end
end
if funkcja(d)==0 wypisanie wyniku
disp(['rozwiazaniem jest ',num2str(d)])
else
a
funkcja(a)
end
end