Newton Algorithm with Parabolas
>:: p(x,a):=f(a)+'diff(f(a),a)*(x-a)
d
p(x, a) := (-- (f(a))) (x - a) + f(a)
da
>:: solve(p(x,a)=0,x); newton:=rhs(%[1])|expand
f(a)
a - ---------
d
-- (f(a))
da
>:: dnewton := diff(newton,a)
2
d
f(a) (--- (f(a)))
2
da
-----------------
d 2
(-- (f(a)))
da
>:: atvalue(f(x),x=a0,0); at(dnewton,a=a0)
0
>:: taylor(newton,a,a0,2)
!
2 !
d ! 2
(--- (f(a))! ) (a - a0)
2 !
da !
!a = a0
/T/ a0 + ----------------------------- + . . .
!
d !
2 (-- (f(a))! )
da !
!a = a0
>:: subst(f(a)=a^3-8,newton); na := % | nouns
3
a - 8
a - ------
2
3 a
>:: taylor(na,a,2,3)
2 3
(a - 2) (a - 2)
/T/ 2 + -------- - -------- + . . .
2 3
>:: fpprec:=100;
>:: at(na,a=2.2b0), at(na,a=%), at(na,a=%), at(na,a=%), at(na,a=%)
2.017630853994490358126721763085399449035812672176308539944903581267217\
630853994490358126721763085399b0
2.000153616593130364027516166650181729183342359874352201195091532576002\
725023944107721337345875938096b0
2.000000011797820607418091417206088019779634849405539582686471063401306\
518202668409505552656957631673b0
2.000000000000000069594284995035565044396576173429581450020821753424329\
143996927312275962422339266909b0
2.000000000000000000000000000000002421682251985116086491265907737608871\
913078530078031916652981710816b0
>:: p(x,a):=f(a)+'diff(f(a),a)*(x-a)+'diff(f(a),a,2)*(x-a)^2/2
2
d 2
(--- (f(a))) (x - a)
2
da d
p(x, a) := --------------------- + (-- (f(a))) (x - a) + f(a)
2 da
>:: solve(p(x,a)=0,x); newton2:=rhs(%[2])|expand
2
d 2 d
sqrt((-- (f(a))) - 2 f(a) (--- (f(a)))) d
da 2 -- (f(a))
da da
---------------------------------------- - ---------- + a
2 2
d d
--- (f(a)) --- (f(a))
2 2
da da
>:: assume(at('diff(f(a),a),a=a0)>0);
>:: diff(newton2,a); at(%,a=a0)
0
>:: diff(newton2,a,2); at(%,a=a0)
0
>:: taylor(newton2,a,a0,3)
!
3 !
d ! 3
(--- (f(a))! ) (a - a0)
3 !
da !
!a = a0
/T/ a0 - ----------------------------- + . . .
!
d !
6 (-- (f(a))! )
da !
!a = a0
>:: subst(f(a)=a^3-8,newton2); na2 := % | nouns
4 3
sqrt(9 a - 12 a (a - 8)) a
-------------------------- + -
6 a 2
>:: taylor(na2,a,2,3)
3
(a - 2)
/T/ 2 - -------- + . . .
12
>:: at(na2,a=2.2b0), at(na2,a=%), at(na2,a=%)
1.999326347210999255220456247282773955557572897344334796253889746839036\
446657406931706578324785885588b0
2.000000000025475759460754086661969059031162957614454447583039561889029\
497957818231105556768840585764b0
1.999999999999999999999999999999998622155607874288557242510392199433240\
948356638428015183239783315089b0
>:: na3:=at(na,a=na)|ratsimp, at(na3,a=2.2b0), at(na3,a=%), at(na3,a=%),
9 6 3
4 a + 102 a + 192 a + 256
----------------------------
8 5 2
9 a + 72 a + 144 a
2.000153616593130364027516166650181729183342359874352201195091532576002\
725023944107721337345875938096b0
2.000000000000000069594284995035565044396576173429581450020821753424329\
143996927312275962422339266909b0
2.000000000000000000000000000000000000000000000000000000000000000002932\
2724647898516428157063672215b0
>
Examples Homepage