日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php类中引函数变量,一个非线性差分方程的隐函数解

發(fā)布時(shí)間:2025/3/15 php 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php类中引函数变量,一个非线性差分方程的隐函数解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

問題來源#

筆者經(jīng)常學(xué)習(xí)的數(shù)學(xué)研發(fā)論壇曾有一帖討論下述非線性差分方程的漸近求解:

$$a_{n+1}=a_n+\frac{1}{a_n^2},\, a_1=1$$

原帖子在這里,從這帖子中我獲益良多,學(xué)習(xí)到了很多新技巧。主要思路是通過將兩邊立方,然后設(shè)$x_n=a_n^3$,變?yōu)榈葍r(jià)的遞推問題:

$$x_{n+1}=x_n+3+\frac{3}{x_n}+\frac{1}{x_n^2},\,x_1=1$$

然后可以通過巧妙的技巧得到漸近展開式:

$$x_n = 3n+\ln n+a+\frac{\frac{1}{3}(\ln n+a)-\frac{5}{18}}{n}+\dots$$

具體過程就不提了,讀者可以自行到上述帖子學(xué)習(xí)。

然而,這種形式的解雖然精妙,但存在一些筆者不是很滿意的地方:1、解是漸近的級(jí)數(shù),這就意味著實(shí)際上收斂半徑為0;

2、是$n^{-k}$形式的解,對(duì)于較小的$n$難以計(jì)算,這都使得高精度計(jì)算變得比較困難;

3、當(dāng)然,題目本來的目的是漸近計(jì)算,但是漸近分析似乎又沒有必要展開那么多項(xiàng);

4、里邊帶有了一個(gè)本來就比較難計(jì)算的極限值$a$;

5、求解過程似乎稍欠直觀。

當(dāng)然,上面這些缺點(diǎn),有些是雞蛋里挑骨頭的。不過,也正是這些缺點(diǎn),促使我尋找更好的形式的解,最終導(dǎo)致了這篇文章。

隱式解#

遞推

$$x_{n+1}=x_n+3+\frac{3}{x_n}+\frac{1}{x_n^2},\,x_1=1$$

的第一級(jí)漸近解是通過略去后面的$\frac{3}{x_n}+\frac{1}{x_n^2}$得出的,得到$x_{n+1}=x_n+3$,所以$x_n=3n-2$。

接下來的思路有很多,比如迭代、待定系數(shù)等,都可以求得漸近解,但是我嘗試了另外一條途徑:求隱式的解。首先我們考慮:

$$x_{n+1}+f(x_{n+1})=x_n+3+\frac{3}{x_n}+\frac{1}{x_n^2}+f\left(x_n+3+\frac{3}{x_n}+\frac{1}{x_n^2}\right)$$

將最后一項(xiàng)在$x_n$處展開至1階:

$$x_{n+1}+f(x_{n+1})=x_n+3+\frac{3}{x_n}+\frac{1}{x_n^2}+f(x_n)+f'(x_n)\left(3+\frac{3}{x_n}+\frac{1}{x_n^2}\right)$$

以$1/x_n$為階,略去二階項(xiàng),得到

$$x_{n+1}+f(x_{n+1})=x_n+f(x_n)+3+3\left[\frac{1}{x_n}+f'(x_n)\right]$$

如果讓$f(x_n)=-\ln x_n$,那么方括號(hào)就為0,于是得到

$$x_{n+1}-\ln x_{n+1}=x_n-\ln x_n+3$$

這個(gè)等式的精度是$\mathscr{O}(x_n^{-2})$,為了兼顧簡(jiǎn)潔與精度,從$x_2=8$出發(fā)比較好,這樣

$$x_n - \ln x_n = 3(n-2)+8-\ln 8$$

這就是一個(gè)隱式(近似)解,精度是$\mathscr{O}(x_n^{-1})$。它幾乎對(duì)于所有的$n$都保持同樣的精度。這里的要點(diǎn)就是引入新的項(xiàng),使得它變成了線性的遞推(等差數(shù)列)。這個(gè)過程可以繼續(xù)下去,在前述的基礎(chǔ)上引入新的函數(shù),繼續(xù)將它展開到二階,算得到:

$$x_{n+1}-\ln x_{n+1}+\frac{5}{6x_{n+1}}=x_n-\ln x_n+\frac{5}{6x_n}+3$$

它具有$\mathscr{O}(x_n^{-3})$的精度,由此可以解得精度為$\mathscr{O}(x_n^{-2})$的隱式解。

為什么要隱式解?#

為什么要尋找隱式解?大概有如下的好處。

一般情況下,傳統(tǒng)漸近解是通過泰勒級(jí)數(shù)展開得到的,泰勒級(jí)數(shù)展開本身就存在限制(要求可導(dǎo)且導(dǎo)函數(shù)有限),因此容易出現(xiàn)漸近解,即使不漸近,收斂半徑也可能較小。而隱函數(shù)的解通常來說比較穩(wěn)定,收斂性比較好,雖然可能還是漸近的,但是發(fā)散速度會(huì)降低不少。比如$x=\sqrt{1+t}$,展開為冪級(jí)數(shù),收斂半徑僅為$1$,但是可以表示為隱函數(shù)形式$x^2+1=t$,保持了精度和簡(jiǎn)潔。

簡(jiǎn)而言之,如果顯式展開式能做到的,基本上隱函數(shù)也能做到;而顯式展開式不能做到的,隱函數(shù)也可能做到。因此顯然隱函數(shù)性能會(huì)更好。

此外,對(duì)于本文的遞推來說,隱函數(shù)的解更加簡(jiǎn)潔,不到處出現(xiàn)難以計(jì)算的$a$。可能讀者覺得,每求一次$x_n$都需要求解一次非線性方程,比較復(fù)雜。事實(shí)上,如果愿意的話,可以直接通過求反函數(shù)來從隱式解獲得顯式解,但是這又回到了漸近級(jí)數(shù)了,就沒有什么必要了。

利于編程的遞推格式#

前面所計(jì)算的兩項(xiàng),僅僅是介紹性的演示,由于階數(shù)不高,計(jì)算也不困難,但是為了進(jìn)一步計(jì)算下去,尤其是為了編程計(jì)算,需要構(gòu)造便于理解的遞推格式,就好比攝動(dòng)法的遞推計(jì)算。

假設(shè)引入的$f(x_n)$是精確的,那么顯然,對(duì)于精確的$f(x)$,需要滿足

$$\frac{3}{x}+\frac{1}{x^2}+f\left(x+3+\frac{3}{x}+\frac{1}{x^2}\right)-f(x)=0$$

這時(shí)候原來的遞推就變成了

$$x_{n+1}+f(x_{n+1})=x_{n}+f(x_{n})+3$$

求解就容易多了。

經(jīng)過分析,可以通過人工引入?yún)?shù)$q$,并且將$f(x)$當(dāng)作$x,q$的二元函數(shù)$f(x,q)$,求得$f(x,q)$的級(jí)數(shù)解,然后讓$q=1$,得到$f(x)=f(x,1)$。引入的格式如下:

$$\frac{3q}{x}+\frac{q^2}{x^2}+f\left(x+3q+\frac{3q^2}{x}+\frac{q^3}{x^2},q\right)-f(x,q)=0$$

這樣引入的思路是:以$x^{-1}$為無窮小階,且讓$f^{(n)}(x)$也具有$x^{-n}$的階,所以,在$f()$內(nèi)$x^{-n}\to q^{n+1}x^{-n}$,在$f()$外有$x^{-n} \to q^n x^{-n}$。這時(shí)候,可以用Mathematica之類的軟件,很快展開它:Series[f[x + 3\cdot q + 3\cdot q^2/x + q^3/x^2, q] - f[x, q] + 3\cdot q/x +

q^2/x^2, {q, 0, 5}]

結(jié)果是

$$\begin{aligned}&q \left(3 f^{(1,0)}(x,0)+\frac{3}{x}\right)\\

+&q^2 \left(\frac{3 f^{(1,0)}(x,0)}{x}+3 f^{(1,1)}(x,0)+\frac{9}{2} f^{(2,0)}(x,0)+\frac{1}{x^2}\right)\\

+&q^3 \left(\frac{f^{(1,0)}(x,0)}{x^2}+\frac{3 f^{(1,1)}(x,0)}{x}+\frac{3}{2} f^{(1,2)}(x,0)\right.\\

&\qquad\qquad\left.+\frac{9 f^{(2,0)}(x,0)}{x}+\frac{9}{2} f^{(2,1)}(x,0)+\frac{9}{2} f^{(3,0)}(x,0)\right)\\

+&\dots

\end{aligned}$$

讓$q$的各階系數(shù)為0,逐次解得:

$$\begin{aligned}&f^{(0,0)}(x,0)=-\ln x\\

&f^{(0,1)}(x,0)=\frac{5}{6x}\\

&f^{(0,2)}(x,0)=\frac{4}{3 x^2}\\

&\dots

\end{aligned}$$

因此

$$f(x)=f(x,1)=-\ln x+\frac{5}{6x}+\frac{2}{3 x^2}+\dots$$

也就是

$$\begin{aligned}&x_{n+1}-\ln x_{n+1}+\frac{5}{6x_{n+1}}+\frac{2}{3 x_{n+1}^2}\\

=&x_{n}-\ln x_{n}+\frac{5}{6x_{n}}+\frac{2}{3 x_{n}^2}+3\end{aligned}$$

得到

$$\begin{aligned}&x_{n}-\ln x_{n}+\frac{5}{6x_{n}}+\frac{2}{3 x_{n}^2}\\

=&3(n-2)+8-\ln 8+\frac{5}{6\times 8}+\frac{2}{3\times 8^2}\end{aligned}$$

這具有$\mathscr{O}(x_n^{-3})$的精度。

將思路稍加變動(dòng),就可以用Mathematica寫出自動(dòng)計(jì)算程序:g[x_] = 0;

ff[x_] = 3\cdot 1/x + 1/x^2

Do[e = q^n;

g[x_] = g[x] +

q^n\cdot Integrate[-D[

f[x + 3\cdot q\cdot e + ff[x/q]\cdot e\cdot q, q] - f[x, q] +

g[x + 3\cdot q + ff[x/q]\cdot q] - g[x] + ff[x/q], {q,

n + 1}] /. {q -> 0, f -> 0} // Simplify, x]/

3/(n + 1)!;, {n, 0, 5}]

h[x_] = g[x] /. {q -> 1} // Expand

通過修改{n, 0, 5}中的5可以增減精度。上述代碼給出:

$$f(x)=-\ln x+\frac{5}{6 x}+\frac{2}{3 x^2}+\frac{77}{108 x^3}+\frac{133}{240 x^4}-\frac{2669}{5400 x^5}+\dots$$

漸近結(jié)果與極限值#

此時(shí)解得

$$x_n+f(x_n)=3(n-k)+x_k+f(x_k),\,\text{以}x_k\text{為初值的情況下}$$

設(shè)

$$a=x_k+f(x_k)-3k+\ln 3$$

得到

$$x_n + f(x_n)=3n+a-\ln 3$$

如果要得到顯式的漸近表達(dá)式,可以以上式為基礎(chǔ)構(gòu)建迭代式:

$$x^{(k+1)}_n=3n+a-\ln 3 -f(x^{(k)}_n)$$

這里的$x^{(k)}_n$指的是$x_n$的第$k$級(jí)近似。以$x^{(0)}_n=3n+a-\ln 3$為初值,進(jìn)行迭代,并展開,得到

$$\begin{aligned}x_n=&3n+a+\ln n+\frac{6 a+6 \ln n-5}{18 n}+\\

&\frac{-3 a^2-6 a \ln n+11 a-3 \ln ^2 n+11 \ln n-9}{54 n^2}+\dots\end{aligned}$$

這跟研發(fā)論壇上mathe給出的漸近式是一樣的。

迭代的Mathematica代碼為(接前):p[n_] = 3\cdot n + a - Log[3];

Do[p[n_] =

Normal[Series[-h[p[n]] + 3\cdot n + a - Log[3], {n, Infinity, 5}]], {i,

0, 5}]

Series[p[n], {n, Infinity, 5}]

由此發(fā)現(xiàn),這里的$a$正好是極限值$a$:

$$a=\lim_{n\to\infty} (x_n - 3n - \ln n)$$

這也正好同時(shí)給出了求$a$的漸近表達(dá)式:

$$x_k+f(x_k)-3k+\ln 3$$

利用wayne算出的$x_{10^9}$,代入上式,算得

$$a=1.1352558473155037141953943477479\dots$$

更詳細(xì)的轉(zhuǎn)載事宜請(qǐng)參考:《科學(xué)空間FAQ》

如果您還有什么疑惑或建議,歡迎在下方評(píng)論區(qū)繼續(xù)討論。

如果您覺得本文還不錯(cuò),歡迎分享/打賞本文。打賞并非要從中獲得收益,而是希望知道科學(xué)空間獲得了多少讀者的真心關(guān)注。當(dāng)然,如果你無視它,也不會(huì)影響你的閱讀。再次表示歡迎和感謝!

打賞

微信打賞

支付寶打賞

因?yàn)榫W(wǎng)站后臺(tái)對(duì)打賞并無記錄,因此歡迎在打賞時(shí)候備注留言。你還可以點(diǎn)擊這里或在下方評(píng)論區(qū)留言來告知你的建議或需求。

如果您需要引用本文,請(qǐng)參考:

蘇劍林. (Apr. 09, 2016). 《一個(gè)非線性差分方程的隱函數(shù)解 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/3696

總結(jié)

以上是生活随笔為你收集整理的php类中引函数变量,一个非线性差分方程的隐函数解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。