Bisekcija in tangentna metoda - Derive

Bisekcija in tangentna metoda - Derive

Avtor: Aktivna matematika

Učni cilji: Učni list na temo iskanja ničel funkcij z bisekcijo in tangentno metodo.

Na voljo imamo datoteko  num_bt.mth,  v kateri so zbrane funkcije, s katerimi lahko izvajamo razne račune.

Da jih lahko uporabimo moramo najprej definirati funkcijo , katere ničlo iščemo, recimo

Opišimo funkciji, ki sledita pravilu bisekcije.

Vhodni parametri za ti dve funkciji so:

  • - levo krajišče intervala na katerem leži ničla funkcije .
  • - desno krajišče intervala z ničlo.
  • - število korakov bisekcije.
  •  num_bism(a,b,n) :  nam vrne matriko, ki jo sestavlja vrstic in stolpci. Vsaka vrstica je rezultat iteracije pri bisekciji. V prvem stolpcu je levo krajišče intervala na katerem leži ničla funkcije , v drugem stolpcu pa vrednost funkcije pri tem krajišču. V tretjem in četrtem stolpcu sta ustrezni vrednosti za desno krajišče intervala.
  •  num_bis(a,b,c) :  razultat je zadnja iteracija bisekcije.

Tangentna metoda:

  •  num_tanm(f,x,x0,n) :  rezultat je zaporedje približkov ničle funkcije , katere neodvisna spremenljivka je , začetni približek pa je . Približki so seveda izračunani s tangentno metodo.
  •  num_tan(f,x,x0,n) :  rezultat je -ti približek ničle funkcije .

Slika iz programa in obrazložitev

(slika3.PNG)

Najprej smo z bisekcijo -  num_bis(0,1,20)  - ujeli ničlo iz intervala od do na intervalček dolžine ena milijoninka. Nato pa smo pognali še  num_tanm  pri različnih približkih. Ob teh primerih lahko marsikaj rečemo tudi o hitrosti konvergence tangentne metode v primerjavi z bisekcijo.

Primer datoteke  num_bt.mth   iz programa Derive

 "datoteka num_bt - bisekcija in tangentna metoda za"
"racunanje nicel"

"Natancnost racunanja"
Precision := Approximate
PrecisionDigits := 6

f(x) :=

"bisekcija"
"izbira intervala na katerem je nicla"
novi_i(v) := if( (element(v,2)*element(v,4) = 0), v,č
if( (f(element(v,1))*f( (element(v,1) + element(v,3))/2 ) > 0),č
[(element(v,1)+element(v,3))/2, f((element(v,1)+element(v,3))/2 ),č
element(v,3),element(v,4)],č
[element(v,1),element(v,2),č
(element(v,1)+element(v,3))/2,f((element(v,1)+element(v,3))/2)]))

"n-krat razpolovimo interval [a,b] - izpisemo matriko"
num_bism(a,b,n) := append([["a","f(a)","b","f(b)"]],č
iterates(novi_i(v),v,[a,f(a),b,f(b)],n))

"n-krat razpolovimo interval [a,b]"
num_bis(a,b,n) := append([["a","f(a)","b","f(b)"]],č
[iterate(novi_i(v),v,[a,f(a),b,f(b)],n)])

"tangentna metoda"
"n-krat ponovimo iteracijo - izpisemo vektor"
num_tanm(f,x,x0,n) := iterates(x - f/dif(f,x),x,x0,n)

"n-krat ponovimo iteracijo"
num_tan(f,x,x0,n) := iterate(x - f/dif(f,x),x,x0,n)
 

0%
0%