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
© Copyright 2025 Paperzz