3.10: Homotopy Method

3.10: Homotopy Method
Finding a good starting value x(0) for Newton’s method is a crucial problem.
The homotopy method (continuation method, successive loading method)
can be used to generate a good starting value.
Assume, that F0 is a known function with a known zero x∗, i.e. F (x∗) = 0
We construct a parameter depending function
H(x, s) = sF (x) + (1 − s)F0(x)
s ∈ [0, 1]
and note, that H(x, 0) = 0 is the problem with known solution and
H(x, 1) = 0 is the original problem F (x) = 0.
C. Führer: FMN081-2005
66
3.11: Homotopy Method (Cont.)
An example for F0(x) is just the trivial way
F0(x) := F (x) − F (x∗)
This gives the homotopy function
H(x, s) = F (x) + (s − 1)F (x∗)
for a given vector x∗.
C. Führer: FMN081-2005
67
3.12: Homotopy Method (Cont.)
As the solution of H(x, s) = 0 depends on s we denote it by x∗(s).
We discretize now the intervall into 0 = s0 < s1 < · · · < sn = 1 and solve
a sequence of nonlinear systems with Newton’s method
H(x, si) = 0
Each iteration is started with the solution x∗(si−1) of the preceeding
problem.
C. Führer: FMN081-2005
68
3.13: Homotopy Method: Example
Let’s consider the scalar problem arctan(x) = 0 again.
We saw previously that Newton’s method for this problem fails to converge
if started with |x0| > 1.34.
Assume we have an initial guess x∗ = 4 instead. We set up a homotopy
function
H(x, s) = arctan(x) + (s − 1) arctan(4) = 0
and discretize s by selecting si = i ∗ 0.1, i = 0 : 10
C. Führer: FMN081-2005
69
3.14: Homotopy Method: Example (Cont.)
x0=4;
homotop=inline(’atan(x)+(s-1)*atan(4)’,’x’,’s’);
homotop_deriv=inline(’1/(1+x^2)’);
s=linspace(0,1,11);
xast=zeros(length(s),1);
xast(1)=x0;
for i=2:11
[xast(i),iter,ier]=newtonh(homotop,homotop_deriv,xast(i-1),15,1.e-8,s(i));
if (ier ==1)
disp(’divergence’)
break
end
end
Note, we had to provide newton with an extra parameter s.
C. Führer: FMN081-2005
70
3.15: Homotopy Method: Example (Cont.)
The resulting homotopy path
4
Homotopy path x(s)
3
x(s)
2
1
0
0
0.5
1
s
C. Führer: FMN081-2005
71