這是一個很典型的不動點問題:設

[公式]

則原方程可表為

[公式]

並且 [公式] 很好地滿足不動點定理的條件:

[公式]

於是隻要不停地迭代就可得到結論:

[公式]

[公式]

選取初值 [公式] ,迭代 [公式] 次後誤差不超過 [公式] (見上圖).


如圖。


應該只能求數值解


首先確定一個範圍

[公式]

畫個圖,看到 [公式][公式] 交點在0.7左右。

直接迭代:

f(x) =sin(cos(x))
x = 0.7;
error = 1e-6
While (true)
{
y = f(x);
if (abs((x-y)/x) &< error) break x = y } return x

牛頓法迭代

f(x)=sin(cos(x))-x;
df(x)=-1 - cos(cos(x)) sin(x);

x0 = 0.7;
error = 1e-6;
while (true):
{
x1 = x0-f(x0)/df(x0);
if (abs((x1-x0)/x1) &< error) break; x0 = x1; } return x1;

都收斂到0.69482,但是牛頓法更快一點


此方程只能近似解,右-1&

得cosX&>0→sin&>0,→0&

(等號均不可取,)

且左是減函數,sin1→cos1,

右是增函數。,0→1,

用插值無限逼近,

唯一解:x=0.69481969……

沒公式解的:


推薦閱讀:
相關文章