Step 1: restart: Digits:=400; |
Step 2: sigma := 1e−120; rho := 2 ∗ sigma; epsilon := .1e−60; |
Step 3: u[1, 1] := 1; u[1, 2] := 0; u[2, 1] := 0; u[2, 2] := 1; |
Step 4: p[1, 1] := u[1, 1]; p[1, 2] := u[1, 2]; |
Step 5: f := (x1, x2) → 100 ∗ (x2 − x1)2 + (x1 − 1)2; |
Step 6: x[1, 1] := −1.2; x[1, 2] := 1; |
Step 7: Perform the following iteration: |
for j from 1 to 10 do |
c[1] := (f (x[1, 1]) − sigma ∗ p[1, 1], x[1, 2] − sigma ∗ p[1, 2]) − f (x[1, 1] + sigma ∗ p[1, 1], x[1, 2] + sigma ∗ |
p[1, 2]))/(2 ∗ sigma): |
d[1] := (f (x[1, 1] − sigma ∗ p[1, 1], x[1, 2] − sigma ∗ p[1, 2]) − 2 ∗ f (x[1, 1], x[1, 2]) + f (x[1, 1] + sigma ∗ |
p[1, 1], x[1, 2] + sigma ∗ p[1, 2]))/(sigma)2 |
a[1] := c[1]/d[1]: |
x[2, 1] := x[1, 1] + a[1] ∗ p[1, 1]: |
x[2, 2] := x[1, 2] + a[1] ∗ p[1, 2]: |
for i for 1 to 2 do |
x[2, i] := x[1, i] + a[1, i] |
end for: |
c[2, 1] := (f (x[1, 1] + rho ∗ u[2, 1] − sigma ∗ p[1, 1], x[1, 2] + rho ∗ u[2, 2] − sigma ∗ p[1, 2]) − f (x[1, 1] + rho ∗ |
u[2, 1] + sigma ∗ p[1, 1], x[1, 2] + rho ∗ u[2, 2] + sigma ∗ p[1, 2]))/(2 ∗ sigma): |
a[2, 1] := c[2, 1]/d[1]: |
b[2, 1] := (a[2, 1] − a[1])/rho: |
for i from 1 to 2 do |
pbar[2, i] := u[2, i] + b[2, 1] ∗ p[1, i] |
end for: |
for i from 1 to 2 do |
p[2, i] := pbar[2, i]/sqrt((pbar[2, 1])2 + (pbar[2, 2])2) |
end for: |
for k from 2 to 2 do |
c[k] := (f (x[1, 1] − sigma ∗ p[k, 1], x[1, 2] − sigma ∗ p[k, 2]) − f (x[1, 1] + sigma ∗ p[k, 1], x[1, 2] + sigma ∗ |
p[k, 2]))/(2 ∗ sigma) |
end for: |
for k from 2 to 2 do |
d[k] := (f (x[1, 1] − sigma ∗ p[k, 1], x[1, 2] − sigma ∗ p[k, 2]) − 2 ∗ f (x[1, 1], x[1, 2]) + f (x[1, 1] + sigma ∗ |
p[k, 1], x[1, 2] + sigma ∗ p[k, 2]))/(sigma)2 |
end for: |
for k from 2 to 2 do |
a[k] := c[k]/d[k] |
end for; |
for i from 1 to 2 do |
x[3, i] := x[2, i] + a[2] ∗ p[2, i] |
end for; |
for i from 1 to 2 do |
x[1, i] := x[3, i] |
end for; |
print (x[3, 1], x[3, 2]); |
y[ j, 1] := x[3, 1]; y[ j, 2] := x[3, 2]; |
end for |