• Description

在COMSOL Multiphysics®中,我們通常需要使用實驗數據來表示材料屬性或模型的其他輸入項。但是,實驗數據通常有許多噪點,並會包含我們不希望引入仿真中的實驗錯誤。在這篇博客中,我們將研究如何借助COMSOL Multiphysics®的核心功能來為實驗數據擬合平滑的曲線與表面。

作為最小化問題的曲線擬合

我們先看下圖所示的部分實驗數據樣本,可以觀察到數據包含噪點,而且取樣在x軸上不均勻。這一實驗數據可能代表了一種材料屬性,如果這一屬性依賴於解變量,例如依賴於溫度的導熱係數,我們通常就不希望直接在分析中使用這一數據。這類含噪點的輸入數據通常會增加求解器的收斂難度,具體原因請閱讀博客“求解非線性靜態有限元問題”相反,如果我們能用一條平滑曲線對數據進行近似,通常就可以改進模型的收斂,還能得到一個簡單的函數來表示材料屬性。

Experimental data plot 利用COMSOL Multiphysics 擬合實驗數據曲線
希望用更簡單的函數來近似實驗數據。

我們希望找到一個函數來盡可能接近地擬合實驗數據我們將定義一個“最擬合”函數來最小化實驗數據與擬合函數之差的平方,然後在整個數據范圍進行積分。也就是說,我們的目標是最小化:

因此,我們首先需要決定希望擬合哪類函數。我們可以靈活選擇所用的函數類型,但應選擇一個可得到數值良態問題的擬合函數。我們依據最高魯棒性的原則選擇了這一擬合函數,不過這裡將不會對選擇原因展開介紹:

此時,可以簡化為:

現在,我們需要找到4 個係數來最小化:

雖然這可能聽起來像一個優化問題,但我們的係數並沒有任何約束,且假定上述函數有單一最小值。該最小值對應於導數為零時的相對係數。也就是說,要找出最擬合函數,我們必須找到以下條件下的係數值:

事實證明,我們能夠利用COMSOL Multiphysics ®的核心功能求解該問題。我們再來看一下如何實現。

在COMSOL® 中執行

我們先創建一個包含一維分量的新文件。我們將使用'全局常微分和微分代數方程'物理場接口來求解係數,並使用穩態求解器。簡單起見,我們將使用無量綱長度單位,如下方截屏所示。

Dimensionless length unit 利用COMSOL Multiphysics 擬合實驗數據曲線
從一維分量開始,並將'單位系統'設為'None'。

接下來,創建幾何。我們的幾何應包括'間隔',本例中採樣點的範圍是從0到1),以及每個採樣點沿x方向的一組點。您可以簡單地從電子表單中復制這些點的範圍,然後粘貼到'點'特徵下,如下圖所示。

Adding points over the interval 利用COMSOL Multiphysics 擬合實驗數據曲線
在間隔內為每個數據採樣點增加點。

使用內插函數讀取實驗數據。為函數輸入一個合適的名稱,我們在下方截圖中將其簡單命名為D,選擇“使用空間坐標作為自變量”,並確保在數據點間使用缺省的'線性'內插。

Importing the experimental data settings 利用COMSOL Multiphysics 擬合實驗數據曲線
導入實驗數據的設定。

針對所有域定義一個'積分算子'。您可以使用缺省名稱:intop1本特徵可以用於執行上述積分操作。

Defining the Integration Operator 利用COMSOL Multiphysics 擬合實驗數據曲線
針對所有域定義積分算子。

現在定義兩個變量。一個是您的函數,另一個是我們希望最小化的函數由於'幾何實體層次'設為'整個模型',將在模型所有域定義,並將隨函數在空間變化。另一方面,在各處均為標量值,而且也在整個模型可用。如下方截圖所示,我們可以輸入作為的函數,並在之後定義這些係數。

Fitting function definition 利用COMSOL Multiphysics 擬合實驗數據曲線
擬合函數的定義,以及希望最小化的量。

接下來,我們將使用'全局方程'接口來為這四個係數定義四個方程。還記得我們之前希望的導數能相對於每個係數為零嗎?使用差分算子d(f(x),x),我們可以按照下圖所示輸入:

Global Equations 利用COMSOL Multiphysics 擬合實驗數據曲線
'全局方程'用於求解擬合函數的係數。

我們最終需要一個適合一維域的網格。還記得之前我們在每個數據採樣點安置了一個幾何點嗎?使用'邊網格'特徵中的'分佈'子特徵,可以保證每個數據點之間都存在一個單元。除此之外,我們無須更多單元,因為我們假定在數據點之間為線性內插,但我們也不接受更少的單元,因為這將會造成一些實驗數據點的丟失。

Elements over data intervals 利用COMSOL Multiphysics 擬合實驗數據曲線
每個數據間隔都應存在一個單元。

我們現在可以求解該穩態問題來獲取係數的值,並繪製結果。從下方的繪圖中,我們可以看到數據點和它們之間的線性內插,以及計算得到的擬合函數。我們對這兩條曲線之差的平方在整個間隔內進行了積分,並最小化了該值,現在有了一個非常近似我們數據的平滑簡單函數。

Experimental data and fitted function 利用COMSOL Multiphysics 擬合實驗數據曲線
實驗數據(黑色,含線性內插)以及擬合函數(紅色)。

進一步拓展

到目前為止,我們的操作其實很簡單,您可以在電子表格程序或其他任意數值軟件工具中進行類似的曲線擬合計算。但這一方法的應用不止於此,我們也並非必須要使用該擬合函數。您可以自由任意函數,但最好是作為一組正交函數之和的函數。例如,試一下:

不過,請注意您只希望求解擬合函數內不同項下的線性係數。您不會希望使用類似的非線性擬合係數,因為這類問題可能會因高度非線性而很難收斂。

如果您有一個二維或三維的數據集呢?您其實還可以繼續使用我們這裡所介紹的方法。唯一的區別是您將需要建立二維或三維域。您甚至可以將該域切換至一個不同的坐標系,而非必須使用笛卡爾坐標。

讓我們快速查看下方所示區域內測量的一些數據採樣點:

Sample data in 2D region 利用COMSOL Multiphysics 擬合實驗數據曲線
二維區域的採樣數據。我們希望能有關於這些點高度的最佳擬合表面。

由於數據是在一個環狀區域取樣,似乎相對軸向和軸向而非笛卡爾坐標方向有差異,我們可以嘗試擬合該函數:

我們可以採用和之前相同的步驟。唯一的區別是我們需要在一個二維域而非一條線上進行積分,並使用柱坐標系書寫表達式。

Best fit surface to data 利用COMSOL Multiphysics 擬合實驗數據曲線
上述數據計算得到的最佳擬合表面。

結束語

您可以看到,COMSOL Multiphysics®軟件提供了非常靈活的功能,您可以使用這裡提到的方法找出一維、二維或三維數據的最佳擬合曲線。

有時候,您可能希望不只是一個簡單的曲線擬合,希望考慮一些附加約束。這時,您可以使用優化模塊,它不僅支持這類曲線擬合,還提供了更多的功能。有關使用優化模塊進行曲線擬合和參數估計相關主題的簡要介紹,您可以參考: