非線性問題的勁度會隨位移、應力或接觸狀態改變,無法寫成一組線性方程式一次解完。因此有限元素軟體會把載重切成很多小步,每走一步就反覆修正,直到這一步的力量達到平衡,再走下一步。
內容依據 Marc 2025.1 手冊 Volume A -〈Solution Procedures for Nonlinear Systems〉重新撰寫詮釋。
重點摘要
- 非線性問題中,結構的勁度隨解而變,無法一次求解,需分增量逐步進行。
- 增量和疊代協作,幫助接近解答,增量負責分步施加負載,而疊代則持續修正以達平衡。
- 非線性求解可能有多解或沒有解,檢查增量和容差設定有助於收斂。
- 切線模數法和初始應變法是將非線性引入方程式的兩種主要方法。
- Marc 軟體支援多種共通的疊代方法,如Newton-Raphson,使用者必須正確定義材料行為。
前面讀完什麼是非線性分析系列文章,我們知道了非線性的來源,以及它會讓求解方程式變成什麼樣子,以至於無法一次求解到位。這也說明了非線性問題的複雜性。那麼實務上要如何處理非線性的問題,CAE軟體又是怎麼做的呢? 這系列這篇文章是「非線性分析收斂」系列的第一篇,這個系列我們會帶你用淺顯易懂的方式了解收斂計算如何運作。
大綱
什麼是非線性問題?為什麼不能一次解完?
非線性問題是指結構的勁度 k 會隨著解本身改變的問題,例如材料降伏、大位移,或接觸狀態從分開變成接觸。因為勁度要等解出來才知道,所以這類問題「永遠無法」寫成一組線性方程式一次求解。
Cadence 的 進階非線性軟體 – Marc ,它的使用手冊對非線性分析的說明很直接,通常是比線性分析更複雜、更昂貴,需要工程師深厚的知識和經驗判斷力,也常常要跑好幾次才能得到理想的結果,這就是常聽到在非線性求解計算中的增量和疊代 ( 也有人寫成 迭代,這裡”疊”字的意思較為接近。),一步步逼近解答。
在 Marc 中常見的非線性來源包括:
- 彈塑性(elastic-plastic)材料
- 非線性彈簧與非線性基礎
- 大位移(large displacement)
- 間隙(gap)與接觸
- 潛變(creep)、黏彈性等與時間相關的材料
增量與疊代是什麼?
增量負責「把路分段走」,疊代負責「把每一段走準」。兩者配合,才能讓非線性的解沿著正確的平衡路徑前進。
- 增量(increment):把總載重或總時間切成多個小步,每一步只施加其中一部分。
- 疊代(iteration,Marc 也稱 recycle):在同一個增量內反覆修正位移,直到增量結束時的狀態滿足平衡。
每一次的疊代怎麼運作?
每加上一小段載重,軟體會先用當下的勁度,算出一個「暫定」的位移。接著拿這個位移去算結構內部的抵抗力(內力),再和外加的載重比較。
如果內力剛好等於外力,結構就是平衡的;如果不等,兩者的差就是殘差力(residual force,亦稱不平衡力)。軟體接著解下面這組方程式,算出位移該修正多少:
其中 K 是當下的勁度矩陣,δu 是對增量位移的修正量,r 是殘差力(residual force),也就是外力與內力之間尚未平衡的部分。每解一次,位移就更新一次,殘差力應該隨之變小;當殘差小到符合收斂準則 (一般使用者都可以在 CAE 軟體內設定),這個增量就算完成,能進入下一個增量。
然而,疊代並不是每次都會發生,發生的次數也不一定。非線性問題求解「一定」需要增量,但「有時」才需要疊代。是否需要疊代、要幾次,取決於該增量內非線性的強弱,以及你設定的收斂容差值。假使你設定只能疊代20次,但真的進行了20次還沒有到達你設定容許的收斂數值,計算也會停止。
常見的疊代法,也是 Marc 支援的方法有四種:
- Newton-Raphson
- Modified Newton-Raphson
- 搭配應變修正的 Newton-Raphson(strain correction)
- 直接代入法(direct substitution)
四種方法的差異與選用時機,在這裡就先不詳述。

為什麼疊加原理在非線性分析中不能用?
在前面一段,我們了解到非線性問題求解必須一個增量一個增量往前推進。有人會問說這不同於線性分析常用到於求解的疊加原理,為什麼不能沿用疊加原理來求解非線性問題呢?
疊加原理(principle of superposition)是指:在線性系統中,多個載重同時作用的反應,等於各個載重單獨作用時反應的總和。舉例來說,載重 A 讓結構位移 2 mm,載重 B 讓結構位移 3 mm。在線性問題中,A 和 B 一起作用時,位移就是 2 + 3 = 5 mm;載重 A 加倍,位移也剛好變成 4 mm。所以線性分析常把各種載重工況分開算,再依需要組合,可以省下大量重複計算。
疊加原理成立的前提是勁度固定不變。非線性問題的勁度取決於當下的狀態,先加載重 A 會改變結構對載重 B 的反應,所以兩者同時作用的結果,不等於各自單獨計算再相加。因此,非線性問題不能套用疊加原理。
這對實務計算上有兩個直接影響,非線性問題:
- 不能分開算再組合:多個載重工況要照實際的施加順序,在同一個分析裡依序加上。
- 載重歷程會影響結果:例如塑性變形後卸載,結果和直接加到最終載重不同。
那麼,非線性問題一定有解嗎?
不一定。兩件容易被忽略的事,也是提醒初學者注意:
- 非線性問題不一定只有唯一解。
- 有時問題看起來定義正確,可能根本沒有解。
所以分析不收斂時,除了檢查增量步、容許差值等數值設定,也要回頭確認物理上是否真的存在平衡解。當同一個載重對應多個位移解(例如挫屈後的 snap-through),就需要弧長法(Arc length)這類特殊的求解策略。
每個增量裡,非線性要怎麼放進方程式?
前面說明了非線性問題必須一個增量一個增量地求解。接下來的問題是:在每個增量裡,材料或幾何的非線性要怎麼放進 K δu = r 這組方程式?不同的非線性,進到方程式的方式也不同,大致分成兩種:
- 切線模數法(tangent modulus method):把非線性反映在勁度上。例如材料降伏後變軟,就改用較小的勁度。塑性、大位移、接觸都屬於這一類。
- 初始應變法(initial strain method):勁度維持不變,把非線性轉成一股額外的載重。潛變、黏彈性這類會隨時間慢慢變形的材料,屬於這一類。
這兩種方法不需要使用者自己選。Marc 會依照你定義的材料行為自動採用;如果同一種材料同時有塑性和潛變,兩種方式也會一起使用。所以使用者要做的是兩件事:
- 把材料行為正確定義好。
- 依分析類型設好收斂控制。一般分析在 CONTROL 中設收斂容差與疊代次數;潛變分析還要在 AUTO CREEP 或 AUTO STEP 中,限制每一步的應力變化與潛變應變增量。
增量法 、 求解方程式、疊代法
看到這裡,有覺得迷糊了嗎? 我們先來釐清前面講到的內容,也是三個容易混在一起的觀念,了解後就知道是不同層次的東西:
| 概念 | 回答求解過程的什麼問題? | Marc 軟體內的設定 |
|---|---|---|
| 增量法 | 載重或時間要怎麼分段施加? | 固定增量(如 AUTO LOAD)或自適應增量(如 AUTO STEP) |
| 求解方式 | 非線性的影響要反映在勁度上,還是轉換成額外的載重? | 切線模數法或初始應變法 |
| 疊代法 | 每個增量內怎麼修正到平衡? | Newton-Raphson 等四種 |
三者是上下層的關係,不是互相取代:先用增量法把路分段,每一段用其中一種求解方式建立方程式,再用疊代法修正到收斂。
第一次跑非線性分析,怎麼設定?
問題來了,講這麼多我是新手該怎麼做呢? 對於簡單的問題,可能使用預設就有解答了,有沒有非常仔細的調教差異不會太大。但這篇文章的目的是要讓大家從根本學習,所以我們還是按部就班來。實際要設定的就是兩件事:增量要切多細、疊代要做到多準。這兩件事決定了計算時間,也決定了分析能不能收斂。
第一次試算的目標是:用最少的計算時間,取得最多資訊。先找出非線性變化最劇烈的載重區段,再針對那一段加密增量,比一開始就用細密設定硬跑更有效率。建議初步分析採用以下三個做法:
- 盡量減少自由度:網格越少(節點少)、模型越小,每次疊代越快。
- 增量數減半、每步加倍:用較大的增量步快速走完整個載重歷程。
- 使用較寬鬆的收斂容差值:收斂容差值是「殘差力要小到多小才算收斂」的標準。放寬一點,疊代次數就會減少。
正式分析的增量數,可以套用軟體給我們的經驗法則:非線性結果曲線需要幾條直線段才能擬合,就至少要有幾個增量。曲線平緩的區段可以用大步,轉折劇烈的區段就要切細。
收斂容差值在哪裡設定?
同樣以 Marc 軟體來說明,收斂容差、最大與最少疊代次數這些控制值,都在 CONTROL 選項中設定。它可以在模型定義階段設一次,也可以在之後的載重案例中重新設定,或在重啟(restart)分析時修改。也就是說,試算時用的寬鬆容差,正式分析時可以直接收緊,不必重建模型。
「殘差力小到多少」要怎麼衡量,Marc 有好幾種收斂準則可選,這裡就不詳細說明,留給之後的文章。
增量要自己設,還是讓軟體自動調整?
增量太大,每個增量要疊代很多次,甚至不準、不收斂;太小又浪費計算時間。你也能自己調整:
| 方式 | 步長怎麼決定 | 靜態分析常用選項 |
|---|---|---|
| 固定(fixed) | 自己設定,整個載重案例內不變 | AUTO LOAD |
| 自適應(adaptive) | 軟體依收斂情況自動放大或縮小 | AUTO STEP(預設) |
AUTO STEP 會拿每個增量實際用了幾次疊代,和你設定的「期望疊代次數」比較。容易收斂就把下一步放大,不收斂就縮小步伐重算,這個動作稱為 cutback。
用固定增量時也可以開啟 cutback:某個增量算不下去時,退回上一個增量的狀態,將步長減半重算,直到收斂或達到設定的縮減次數。至於遇到挫屈後載重反而下降的情況,則要用 AUTO INCREMENT 的弧長法,這裡就不詳述了。
結語: 最後請記住這張圖
前面講了這麼多,是否仍然覺得好複雜?別擔心這是很正常的,畢竟 CAE 沒有簡單的事,簡單的事情也不見得會是我們來學。現在通通忘記不懂也沒關係,下面這張圖把非線性問題在數值上求解,增量和疊代產生的迴圈關係畫出來了,先弄清楚這張圖能說故事就好。

常見問題
A:線性分析的勁度固定,解一次就有答案;非線性分析的勁度會隨變形、材料狀態或接觸改變,必須把載重分成增量,並在每個增量內疊代到平衡。
A:可能是增量太大或收斂容差設定不恰當,也可能是問題本身沒有解。非線性問題可能有多個解,例如同一個載重,結構可能停在好幾種不同的變形狀態,而且每一種力量都是平衡的;也可能在定義看似正確時完全沒有解。
想進一步學習非線性分析嗎? 歡迎報名 CAE 軟體訓練課程。