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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【读文献】primal dual PBD

發(fā)布時(shí)間:2024/1/18 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【读文献】primal dual PBD 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 基于最優(yōu)化的時(shí)間積分(變分法)
    • 梯度下降法
    • 二次勢(shì)能(primal space)
    • 附錄
      • 附錄1:為什么勢(shì)能的導(dǎo)數(shù)就是保守力。
      • 附錄2:為什么預(yù)處理矩陣P應(yīng)該選擇Hessian的逆呢?
      • 附錄3:為什么會(huì)有一個(gè)G?
      • 附錄4:推導(dǎo)f對(duì)u求導(dǎo)

基于最優(yōu)化的時(shí)間積分(變分法)

首先寫出equation of motion,實(shí)際上就是動(dòng)量方程或者f=ma


這里M是質(zhì)量矩陣。他是對(duì)角陣,每一項(xiàng)分別是對(duì)應(yīng)頂點(diǎn)的質(zhì)量。

  • u+代表下一時(shí)刻開始時(shí)的速度(或者是這一時(shí)刻結(jié)束時(shí)的速度),
  • u-代表這一時(shí)刻開始時(shí)的速度。
  • u~代表慣性作用下的下時(shí)刻速度,或者說(shuō),無(wú)約束情況下的下一時(shí)刻速度,或者說(shuō),僅僅在外力作用下的下一時(shí)刻速度。
  • q代表廣義坐標(biāo)。如果是直角坐標(biāo)系,就是位置x。之所以用廣義坐標(biāo)代替是因?yàn)檫@里還考慮了例如擺線的極坐標(biāo)。和速度一樣,+代表下一時(shí)刻。

我們能夠通過(guò)變分原理將動(dòng)量方程轉(zhuǎn)換為能量最小化問(wèn)題。目標(biāo)函數(shù)定義為

  • 其中Ui代表勢(shì)能。如果是最簡(jiǎn)單情況我們就可以認(rèn)為是彈性力對(duì)應(yīng)的彈性勢(shì)能。

補(bǔ)充:為什么勢(shì)能的導(dǎo)數(shù)是保守力?見附錄

最小化問(wèn)題就是求使得目標(biāo)函數(shù)g最小的下一時(shí)刻速度。

求解最小化問(wèn)題的時(shí)候,需要用到目標(biāo)函數(shù)的梯度(例如梯度下降法)。求導(dǎo)得g的梯度為

其中廣義力為

(把f帶進(jìn)去試試,會(huì)發(fā)現(xiàn)求導(dǎo)公式就是公式4)

其中G是kinematic map。它是廣義速度與廣義坐標(biāo)的導(dǎo)數(shù)之間的轉(zhuǎn)換矩陣。

顯然,假如在笛卡爾坐標(biāo)系下,G就是單位陣。

如果用最簡(jiǎn)單的顯示時(shí)間積分,這一時(shí)刻的廣義坐標(biāo)與下一時(shí)刻的廣義坐標(biāo)的關(guān)系就是

梯度下降法

一個(gè)求解最小化問(wèn)題(公式3)的最簡(jiǎn)單的方法就是使用梯度下降法。

首先我們有了梯度d,如公式4所示。

然后我們向著梯度d的方向下降一小步,步長(zhǎng)是alpha

如前所述,使用最簡(jiǎn)單的顯示時(shí)間積分,那么下一時(shí)刻的廣義位置就是

梯度下降法的缺陷是很慢。我們可以通過(guò)預(yù)處理來(lái)進(jìn)行加速。為此我們需要找到預(yù)處理矩陣P。然后用P乘以d即可。于是公式5變?yōu)椤?/p>

一個(gè)對(duì)于矩陣P的簡(jiǎn)單的選擇是:選取Hessian矩陣的逆的近似值。

補(bǔ)充:為什么預(yù)處理矩陣P應(yīng)該選擇Hessian的逆呢? 見附錄

加了預(yù)處理的梯度下降,此時(shí)就相當(dāng)于是牛頓法了。

二次勢(shì)能(primal space)

對(duì)于目標(biāo)函數(shù)g(公式2)來(lái)說(shuō),可以分為慣性項(xiàng)和勢(shì)能項(xiàng)。對(duì)于勢(shì)能來(lái)說(shuō),使用基于約束的公式,最簡(jiǎn)單的是二次勢(shì)能。

k是剛度系數(shù)。C是約束。約束可以是向量也可以是標(biāo)量(后面我們主要用標(biāo)量)。

根據(jù)能量最小化原理,勢(shì)能的導(dǎo)數(shù)就是保守力。

補(bǔ)充:為什么會(huì)有一個(gè)G? 見附錄

這里J是Constraint的Jacobian

如前所述,使用Newton style的preconditioner,那個(gè)preconditioner取Hessian矩陣。

上式中,M是質(zhì)量矩陣。他是對(duì)角陣,每個(gè)元素是頂點(diǎn)的質(zhì)量。剩下的唯一不確定的就是f對(duì)u的導(dǎo)數(shù)。也就是force Jacobian。 f = ? ∑ i G T ? U i T ? q + \mathbf{f}=-\sum_i \mathbf{G}^T \frac{\partial U_i^T}{\partial \mathbf{q}^{+}} f=?i?GT?q+?UiT??。對(duì)每個(gè)單元來(lái)說(shuō),我們對(duì)u求導(dǎo)得到

推導(dǎo)我們放到附錄

其中第二項(xiàng)叫做幾何剛度,geometric stiffness。 忽略幾何剛度,只考慮第一項(xiàng),則H的逆,也就是預(yù)處理矩陣,近似為

(GN for Gauss-Newton)

這就是Gauss Newton法迭代(一種quasi-Newton 法)的預(yù)處理矩陣。

由于求逆會(huì)耗費(fèi)大量時(shí)間,所以一般用對(duì)角的倒數(shù)矩陣代替

其中下標(biāo)d代表degree of freedom,也就是節(jié)點(diǎn)(三維每個(gè)坐標(biāo)攤平了)。

附錄

附錄1:為什么勢(shì)能的導(dǎo)數(shù)就是保守力。

首先我們說(shuō)保守力的概念。

保守力就是做功與路徑無(wú)關(guān)的力。只和起點(diǎn)和重點(diǎn)有關(guān)。

因此保守力積分就是個(gè)定積分。積分上下限分別是終點(diǎn)和起點(diǎn)。

于是積分出來(lái)的原函數(shù),就是功。我們隨便取一個(gè)零點(diǎn),功就是能量。這種保守力積分出來(lái)的能量叫做勢(shì)能。也就是說(shuō),勢(shì)能就是保守力積分。

所以反過(guò)來(lái),勢(shì)能求導(dǎo),就是保守力。

附錄2:為什么預(yù)處理矩陣P應(yīng)該選擇Hessian的逆呢?

關(guān)于這點(diǎn),請(qǐng)看

https://blog.csdn.net/weixin_43940314/article/details/121125847

簡(jiǎn)單來(lái)說(shuō),就是求 a r g m i n g ( u ) argmin g(u) argming(u)相當(dāng)于求解其導(dǎo)數(shù)得0的點(diǎn)(駐點(diǎn))。令其導(dǎo)數(shù)就恰好取為某個(gè)Au=b的線性方程組。也就是

g ′ ( u ) = A u ? b = 0 g'(u)=Au-b = 0 g(u)=Au?b=0

那么求解Au=b就得到了期望的u。

而求解該方程最直接的辦法就是直接對(duì)A求逆。也就是
u = A ? 1 b u = A^{-1}b u=A?1b
就直接得到了解。

于是梯度下降法對(duì)于g來(lái)說(shuō),相當(dāng)于二階導(dǎo)數(shù)(第一階導(dǎo)數(shù)是求駐點(diǎn),第二階導(dǎo)數(shù)來(lái)自于梯度)

附錄3:為什么會(huì)有一個(gè)G?

這是因?yàn)閒為U對(duì)x求導(dǎo)。所以根據(jù)鏈?zhǔn)椒▌t,等于
f = ? U / ? x = ( ? U / ? q ) ( ? q / ? x ) f = \partial U/ \partial x = (\partial U / \partial q) (\partial q / \partial x) f=?U/?x=(?U/?q)(?q/?x)

速度u與廣義坐標(biāo)導(dǎo)數(shù)的關(guān)系為
q ˙ = G u \dot q = G u q˙?=Gu
上市可以認(rèn)為是廣義坐標(biāo)系下的速度(實(shí)際上是廣義坐標(biāo)的時(shí)間導(dǎo)數(shù))與直角坐標(biāo)系下的速度u的關(guān)系。又因?yàn)槲覀儾捎昧俗詈?jiǎn)單的顯式時(shí)間積分,速度和位置之間只不過(guò)是乘以個(gè)dt的關(guān)系,而dt是個(gè)常數(shù),因此是線性的。

Δ q / Δ t = G u \Delta q/\Delta t = Gu Δqt=Gu

所以廣義坐標(biāo)和直角坐標(biāo)系位置的轉(zhuǎn)換矩陣也是矩陣G。

Δ q = G Δ x \Delta q = G \Delta \mathbf{ x} Δq=GΔx

所以 ( ? q / ? x ) (\partial q / \partial x) (?q/?x)這一項(xiàng)就是G。而轉(zhuǎn)置不轉(zhuǎn)置,只是為了內(nèi)積的寫法。因?yàn)閮?nèi)積是標(biāo)量,所以最后寫出來(lái)都是一樣的。

由于 q ˙ = G u \dot q = G u q˙?=Gu所以顯式時(shí)間積分后 Δ q = G u \Delta q = G u Δq=Gu。因?yàn)榱泓c(diǎn)對(duì)導(dǎo)數(shù)沒(méi)影響,我們這里就認(rèn)為零點(diǎn)是0了,所以 q = G u d t q = G u dt q=Gudt。

附錄4:推導(dǎo)f對(duì)u求導(dǎo)

目標(biāo)是推導(dǎo)出

? f ? u = ? Δ t k [ J T J + ? J ? u C ] \frac{\partial \mathbf{f}}{\partial \mathbf{u}}=-\Delta t k\left[\mathbf{J}^T \mathbf{J}+\frac{\partial \mathbf{J}}{\partial \mathbf{u}} C\right] ?u?f?=?Δtk[JTJ+?u?J?C]

其中

  • f是保守力
  • u是速度
  • C是constraint function: C(q)
  • J是constraint Jacobian, J = ( ? C / ? q ) G J=(\partial C/\partial q) G J=(?C/?q)G
  • k是stiffness
  • Δ t \Delta t Δt是時(shí)間步長(zhǎng).

已知

f = ? G T ? U T ? q \mathbf{f}=-\mathbf{G}^T \frac{\partial U^T}{\partial \mathbf{q}} f=?GT?q?UT?
J = ? C ? q G J=\frac{\partial C}{\partial q} G J=?q?C?G
Δ q = G u d t \Delta q = G u dt Δq=Gudt
U = 1 2 k C 2 U = \frac{1}{2}kC^2 U=21?kC2

G是kinmatic map, 用于轉(zhuǎn)換廣義坐標(biāo)系與直角坐標(biāo)系

我們這里不加上標(biāo)的q都默認(rèn)是q+. 因?yàn)閝-是已知量(上一時(shí)刻的廣義位置),而只有下一時(shí)刻的位置q+是未知量。
由于 q ˙ = G u \dot q = G u q˙?=Gu所以顯式時(shí)間積分后 Δ q = G u \Delta q = G u Δq=Gu。因?yàn)榱泓c(diǎn)對(duì)導(dǎo)數(shù)沒(méi)影響,我們這里就認(rèn)為零點(diǎn)是0了,所以 q = G u d t q = G u dt q=Gudt

? f / ? u = ? ? ( G T ? U T ? q ) ? u = ? G ? 2 U ? q 2 ? q ? u = ? G 2 d t ? 2 U ? q 2 = ? G 2 d t k C ? C ? q ? q = ? G 2 d t k ( ( ? C ? q ) 2 + C ? 2 C ? q 2 ) = ? G 2 d t k ( ( G ? 1 J ) 2 + ( G ? 1 ) 2 ? J ? q C ) = ? d t k ( J 2 + ? J ? q C ) \begin{align*} \partial f/\partial u&=- \frac{\partial(\mathbf{G}^T \frac{\partial U^T}{\partial \mathbf{q}})}{\partial u} \\ &=-G\frac{\partial^2 U}{\partial q^2} \frac{\partial q}{\partial u}\\ &=-G^2 dt \frac{\partial^2 U}{\partial q^2}\\ &=-G^2 dt \frac{kC\frac{\partial C}{\partial q}}{\partial q}\\ &=-G^2 dt \space k \left( (\frac{\partial C}{\partial q})^2 + C\frac{\partial^2 C}{\partial q^2}\right)\\ &=-G^2 dt \space k \left((G^{-1}J)^2 + (G^{-1})^2 \frac{\partial J}{\partial q}C\right)\\ &=- dt \space k \left(J^2 + \frac{\partial J}{\partial q}C\right) \end{align*} ?f/?u?=??u?(GT?q?UT?)?=?G?q2?2U??u?q?=?G2dt?q2?2U?=?G2dt?qkC?q?C??=?G2dt?k((?q?C?)2+C?q2?2C?)=?G2dt?k((G?1J)2+(G?1)2?q?J?C)=?dt?k(J2+?q?J?C)?

總結(jié)

以上是生活随笔為你收集整理的【读文献】primal dual PBD的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

主站蜘蛛池模板: 亚洲第一国产视频 | 丁香五香天堂 | 美国av一区二区 | 日韩视频在线视频 | 人与动物黄色片 | 国产又爽又黄的视频 | 亚洲久草视频 | 欧美三级一区二区三区 | 国产精品久久久久久久专区 | 亚洲精品第一 | 少妇精品一区二区三区 | 亚洲精品鲁一鲁一区二区三区 | 操操操综合 | 一区二区视频在线免费观看 | 久久久久久久久久久久久久久久久久 | 黄色精品视频在线观看 | 大陆农村乡下av | 五月天国产 | 久久看片网 | 欧美激情第1页 | 亚洲综合图片一区 | 夜夜嗨av一区二区三区 | 日本一区不卡 | 逼逼av| 国产女上位 | 亚洲8888 | 六月丁香色婷婷 | 日韩美女视频19 | 嫩草研究院在线 | 国产精品无码专区 | 色屁屁ts人妖系列二区 | 天天操天天做 | 91在线视频网址 | 天天干夜夜添 | 精品一区二区视频在线观看 | 国产精品一区2区 | 欧美 日韩 国产精品 | 国产人妻大战黑人20p | 污污视频网站在线免费观看 | 在线中文天堂 | 国产精品白嫩白嫩大学美女 | 欧美三级在线播放 | 日韩中文字幕av电影 | 国产99久久久欧美黑人 | 色婷婷视频在线观看 | av东方在线 | 啦啦啦免费高清视频在线观看 | 花房姑娘免费观看全集 | 欧美色图俺去了 | 丰满大肥婆肥奶大屁股 | 久热一区 | 免费观看成人毛片 | 亚洲精品9 | 又黄又爽在线观看 | 娇妻被老王脔到高潮失禁视频 | 日韩欧美精品久久 | 少妇喷白浆 | 国产精品久久婷婷 | 欧美黑吊大战白妞欧美大片 | bt男人天堂| 亚洲精选国产 | 好看的黄色网址 | 女生扒开尿口给男生捅 | 91精品国产自产精品男人的天堂 | 欧美久久久精品 | 天天干天天色综合 | 久久精品国产亚洲av嫖农村妇女 | 亚洲综合免费观看高清完整版在线 | 中文字幕日韩一级 | 日韩三级网 | xxx性视频 | av女优天堂在线观看 | 我要色综合天天 | 美女扒开腿让男生捅 | 性色一区二区 | 乱子伦一区二区 | 亚洲高清久久久 | 国产一区二区视频免费在线观看 | 夜夜骚av一区二区三区 | 国产黄色精品网站 | 亚洲精品国产精品国自产观看浪潮 | 国产日本欧美在线观看 | 日韩一级片在线 | 欧美精品久久天天躁 | 国产精品一区在线看 | 18视频在线观看男男 | 在线成年人视频 | 日韩精品久 | 伊人7| 在线播放毛片 | 久久色av | av导航福利 | 91免费.| 午夜影院欧美 | 婷婷.com | 成人av网站在线播放 | a无一区二区三区 | 久久久不卡国产精品一区二区 | 午夜日韩av |