วิทยาศาสตร์การคำนวณ

ถามตอบสำหรับนักวิทยาศาสตร์ที่ใช้คอมพิวเตอร์เพื่อแก้ปัญหาทางวิทยาศาสตร์

2
ทางเลือกในการวิเคราะห์เสถียรภาพของ von neumann สำหรับวิธีผลต่างอันตะ จำกัด
ผมทำงานเกี่ยวกับการแก้คู่หนึ่งมิติporoelasticityสมการ (โมเดลของ Biot) ให้เป็น: ∂−(λ+2μ)∂2u∂x2+∂p∂x=0−(λ+2μ)∂2u∂x2+∂p∂x=0-(\lambda+ 2\mu) \frac{\partial^2 u}{\partial x^2} + \frac{\partial p}{\partial x} = 0 ∂∂เสื้อ[ γp + ∂ยู∂x] - κη[ ∂2พี∂x2] =q( x , t )∂∂t[γp+∂u∂x]−κη[∂2p∂x2]=q(x,t)\frac{\partial}{\partial t} \left[ \gamma p + \frac{\partial u}{\partial x}\right] -\frac{\kappa}{\eta}\left[\frac{\partial^2 p}{\partial x^2}\right] =q(x,t) บนโดเมนและด้วยเงื่อนไขขอบเขต: Ω = ( 0 , 1 )Ω=(0,1)\Omega=(0,1) p = 0 …

4
ในการคำนวณเลขทศนิยมทำไมความคลาดเคลื่อนตัวเลขเป็นผลมาจากการเพิ่มคำเล็ก ๆ ให้กับข้อตกลงที่มีขนาดใหญ่
ฉันอ่านหนังสือComputer Simulation of Liquidsโดย Allen และ Tildesley ผู้เขียนเริ่มจากหน้า 71 ผู้เขียนอภิปรายอัลกอริทึมต่าง ๆ ที่ใช้เพื่อรวมสมการการเคลื่อนที่ของสมการของนิวตันในการจำลองโมเลกุล (MD) ผู้เริ่มต้นในหน้า 78 ผู้เขียนอภิปรายอัลกอริทึม Verlet ซึ่งอาจเป็นอัลกอริทึมการรวมแบบบัญญัติใน MD พวกเขาระบุ: บางทีวิธีการที่ใช้กันอย่างแพร่หลายในการรวมสมการการเคลื่อนที่ก็คือการนำ Verlet (1967) มาใช้ในตอนแรกและนำมาประกอบกับ Stormer (Gear 1971) วิธีนี้เป็นวิธีการแก้ปัญหาโดยตรงของสองเพื่อสมม.ผมR¨ผม= fผมmir¨i=fim_i \ddot{\textbf{r}}_i = \textbf{f}_iฉัน วิธีนี้ขึ้นอยู่กับ postions r (t)r(t)\textbf{r}(t) , การเร่งความเร็วa (t)a(t)\textbf{a}(t)และตำแหน่งr (t-δt )r(t−δt)\textbf{r}(t - \delta t)จากขั้นตอนก่อนหน้า สมการสำหรับการเลื่อนตำแหน่งอ่านดังนี้: r (t+δt ) = 2 …

5
ฉันจะประมาณค่าอินทิกรัลไม่ถูกต้องได้อย่างไร
ฉันมีฟังก์ชั่นเช่นนั้น∫ R 3 f ( x , y , z ) d V มี จำกัด และฉันต้องการประมาณอินทิกรัลนี้ ฉ( x , y, z)f(x,y,z)f(x,y,z) ∫R3ฉ( x , y, z) dV∫R3f(x,y,z)dV\int_{R^3} f(x,y,z)dV ฉันคุ้นเคยกับกฎการสร้างพื้นที่สี่เหลี่ยมจัตุรัสและการประมาณ monte carlo ของอินทิกรัล แต่ฉันเห็นความยากลำบากในการนำไปใช้กับโดเมนที่ไม่มีขอบเขต ในกรณีมอนเต้คาร์โลเราจะสุ่มตัวอย่างพื้นที่ที่ไม่มีที่สิ้นสุดได้อย่างไร (โดยเฉพาะอย่างยิ่งถ้าพื้นที่ที่มีส่วนสำคัญยิ่งต่ออินทิกรัลไม่ทราบ) ในกรณีพื้นที่สี่เหลี่ยมจัตุรัสฉันจะหาจุดที่ดีที่สุดได้อย่างไร ฉันควรแก้ไขพื้นที่ขนาดใหญ่โดยพลการที่มีศูนย์กลางอยู่ที่จุดกำเนิดและใช้กฎการสร้างพื้นที่สี่เหลี่ยมจัตุรัสแบบกระจัดกระจายหรือไม่? ฉันจะประมาณค่าอินทิกรัลนี้ได้อย่างไร

3
แนวปฏิบัติที่ดีที่สุดสำหรับการจัดเก็บข้อมูลการจำลองแบบลำดับชั้น
TL, DR แนวปฏิบัติที่ดีที่สุดที่ได้รับการยอมรับในวงการคำนวณทางวิทยาศาสตร์คืออะไรสำหรับการจัดเก็บข้อมูลที่มีโครงสร้างเป็นลำดับชั้นจำนวนมาก ตัวอย่างเช่น SQL ไม่สามารถเล่นได้ดีกับเมทริกซ์กระจัดกระจายขนาดใหญ่ มีเครื่องมือที่ดีสำหรับการจัดโครงสร้างคลังสินค้าและการวิเคราะห์ข้อมูลประเภทนี้หรือไม่? พวก LHC ใช้อะไร? ใช้รายละเอียดเคส ฉันต้องการจัดเก็บข้อมูลจากการจำลองโปรตีนตามลำดับชั้นดังต่อไปนี้: protein |__simulation conditions |____|__residues |____|____|__conformers |____|____|____|__atoms โปรตีนทุกชนิดควรตระหนักถึงสิ่งตกค้างแต่ละอะตอมทุกอะตอมควรรู้เงื่อนไขที่ใช้ในการจำลองสถานการณ์ ฯลฯ และในทางกลับกัน แต่เดิมฉันคิดว่าฐานข้อมูลเชิงสัมพันธ์จะสมบูรณ์แบบสำหรับแอปพลิเคชันนี้และดังนั้นฉันจึงเขียนโปรแกรมโดยใช้ python และ sqlalchemey ที่เก็บข้อมูลในฐานข้อมูล SQL อย่างไรก็ตามในทางปฏิบัติโปรแกรมนี้ทำงานได้ไม่ดีนัก ปัญหาที่ใหญ่ที่สุดเกี่ยวข้องกับความจริงที่ว่ามีเมทริกซ์ N x N ที่ระดับข้อมูลผู้ตรวจสอบที่เก็บพลังงานที่มีศักยภาพเนื่องจากการมีปฏิสัมพันธ์ระหว่างคู่ที่เป็นไปได้ทุกคู่ที่เป็นไปได้ รายการส่วนใหญ่ในเมทริกซ์เป็นศูนย์ดังนั้นฉันจึงจัดเก็บเมทริกซ์ในตารางแยกต่างหากในฐานข้อมูลในรูปแบบที่กระจัดกระจายหนึ่งแถวต่อรายการ น่าเสียดายที่การจำลองที่เกี่ยวข้องกับผู้ใช้หลายพันคนโต๊ะคู่ยังคงจบลงด้วยแถวหลายแสนแถวและ: a) การสร้างและการสืบค้นช้ามาก (ชั่วโมง) b) ใช้ลำดับความสำคัญของพื้นที่บนฮาร์ดไดรฟ์ของฉันมากกว่าการแสดงข้อความธรรมดาที่เทียบเท่ากันของข้อมูลในฐานะที่เป็นเมทริกซ์ที่ไม่หรี่ c) ใช้หน่วยความจำมากกว่าสิบกิกะไบต์ ตารางถูกอ่านในหน่วยความจำ เป้าหมายสูงสุดของฉันคือการจัดเก็บการวิ่งนับหมื่นนับพัน (มาจากโปรตีนหลายพันภายใต้เงื่อนไขการจำลองหลายโหล) ในฐานข้อมูลเพื่อให้พวกเขาสามารถวิเคราะห์ร่วมกัน นี่หมายความว่าตารางที่แสดงถึงเมทริกซ์การจับคู่ที่น่าจะเติบโตประมาณหนึ่งพันล้านแถว ขณะนี้ดูเหมือนว่าฉันจะต้อง Cray หรือสัตว์ประหลาดหน่วยความจำที่ใช้ร่วมกันอื่น …

5
ข้อดีและข้อเสียของการใช้คลาสเพื่อห่อหุ้มอัลกอริธึมเชิงตัวเลขคืออะไร
อัลกอริธึมจำนวนมากที่ใช้ในการคำนวณทางวิทยาศาสตร์มีโครงสร้างที่แตกต่างจากอัลกอริทึมซึ่งโดยทั่วไปจะพิจารณาในรูปแบบคณิตศาสตร์ที่เข้มข้นน้อยกว่าของวิศวกรรมซอฟต์แวร์ โดยเฉพาะอย่างยิ่งอัลกอริธึมทางคณิตศาสตร์ของแต่ละคนมักจะมีความซับซ้อนสูงซึ่งมักจะเกี่ยวข้องกับโค้ดหลายร้อยหรือหลายพันบรรทัด แต่อย่างไรก็ตามก็ไม่เกี่ยวข้องกับสถานะ (เช่นไม่ได้ทำหน้าที่ในโครงสร้างข้อมูลที่ซับซ้อน) อินเตอร์เฟซ - เป็นฟังก์ชั่นเดียวที่ทำหน้าที่ในอาร์เรย์ (หรือสอง) สิ่งนี้ชี้ให้เห็นว่าฟังก์ชั่นและไม่ใช่คลาสเป็นอินเทอร์เฟซธรรมชาติสำหรับอัลกอริธึมส่วนใหญ่ที่พบในการคำนวณทางวิทยาศาสตร์ แต่ข้อโต้แย้งนี้ให้ข้อมูลเชิงลึกเพียงเล็กน้อยเกี่ยวกับวิธีการจัดการอัลกอริทึมที่ซับซ้อนและหลายส่วน ในขณะที่วิธีการดั้งเดิมคือการมีฟังก์ชั่นหนึ่งที่เรียกใช้ฟังก์ชั่นอื่น ๆ จำนวนมากผ่านการขัดแย้งที่เกี่ยวข้องไปพร้อมกัน OOP นำเสนอวิธีการที่แตกต่างกัน เพื่อความชัดเจนโดยการห่อหุ้มอัลกอริทึมในคลาสฉันหมายถึงการสร้างคลาสที่อินพุตอัลกอริทึมถูกป้อนเข้าไปในตัวสร้างคลาสแล้ววิธีการสาธารณะเรียกว่าอัลกอริทึมจริงเรียก การใช้งาน multigrid ใน C ++ psuedocode อาจมีลักษณะเช่นนี้: class multigrid { private: x_, b_ [grid structure] restrict(...) interpolate(...) relax(...) public: multigrid(x,b) : x_(x), b_(b) { } run() } multigrid::run() { [call restrict, interpolate, relax, etc.] …
13 algorithms 

3
SVD สำหรับการหาค่าลักษณะเฉพาะที่ใหญ่ที่สุดของเมทริกซ์ 50x50 - ฉันต้องเสียเวลาอย่างมากหรือไม่?
ฉันมีโปรแกรมที่คำนวณค่าลักษณะเฉพาะที่ใหญ่ที่สุดของเมทริกซ์ 50x50 ที่สมมาตรจริงหลายตัวด้วยการสลายตัวแบบเอกฐานกับพวกมันทั้งหมด SVD เป็นคอขวดในโปรแกรม มีอัลกอริทึมที่เร็วกว่ามากในการค้นหาค่าลักษณะเฉพาะที่ใหญ่ที่สุดหรือการเพิ่มประสิทธิภาพส่วนนี้จะไม่ให้ผลตอบแทนจากการลงทุนมากหรือไม่?

3
ความแม่นยำจุดเดียวเทียบกับสองเท่า
ตัวเลขจุดลอยตัวที่มีความแม่นยำเดียวใช้หน่วยความจำเพียงครึ่งเดียวและในเครื่องจักรที่ทันสมัย รหัส FDTD จำนวนมากที่ฉันพบนั้นใช้เลขคณิตและการจัดเก็บที่มีความแม่นยำเพียงอย่างเดียวเท่านั้น มีกฎของหัวแม่มือเมื่อยอมรับการใช้ความแม่นยำเดียวสำหรับการแก้ระบบสมการกระจัดกระจายขนาดใหญ่หรือไม่? ฉันคิดว่ามันต้องขึ้นอยู่กับจำนวนเงื่อนไขเมทริกซ์เป็นอย่างมาก นอกจากนี้ยังมีเทคนิคที่มีประสิทธิภาพใด ๆ ที่ใช้ความแม่นยำสองเท่าในกรณีที่จำเป็นและไม่ต้องใช้ความแม่นยำสองเท่า ตัวอย่างเช่นฉันคิดว่าสำหรับการคูณเวกเตอร์เมทริกซ์หรือผลิตภัณฑ์เวกเตอร์ดอทมันอาจเป็นความคิดที่ดีที่จะสะสมผลลัพธ์ในตัวแปรความแม่นยำสองเท่า (เพื่อหลีกเลี่ยงข้อผิดพลาดในการยกเลิก) แต่รายการแต่ละรายการจะถูกคูณด้วยกัน สามารถคูณด้วยความแม่นยำเดียว FPU สมัยใหม่ช่วยให้การแปลงจากความแม่นยำเดี่ยว (ลอย) เป็นความแม่นยำสองเท่า (สองเท่า) และในทางกลับกันได้หรือไม่? หรือการดำเนินการที่มีราคาแพงเหล่านี้?

3
ทำความเข้าใจว่า Numpy ทำ SVD อย่างไร
ฉันใช้วิธีที่ต่างกันในการคำนวณทั้งอันดับของเมทริกซ์และคำตอบของระบบเมทริกซ์ของสมการ ฉันเจอฟังก์ชัน linalg.svd เมื่อเปรียบเทียบกับความพยายามของฉันในการแก้ไขระบบด้วยการกำจัดแบบเกาส์เซียนดูเหมือนว่าจะเร็วขึ้นและแม่นยำยิ่งขึ้น ฉันพยายามเข้าใจว่ามันเป็นไปได้อย่างไร เท่าที่ฉันรู้ฟังก์ชั่น linalg.svd ใช้อัลกอริทึม QR เพื่อคำนวณค่าลักษณะเฉพาะของเมทริกซ์ของฉัน ฉันรู้ว่ามันใช้งานได้อย่างไรในทางคณิตศาสตร์ แต่ฉันไม่รู้ว่า Numpy สามารถจัดการได้อย่างรวดเร็วและไม่สูญเสียความแม่นยำมากนัก ดังนั้นคำถามของฉัน: ฟังก์ชั่น numpy.svd ทำงานอย่างไรและโดยเฉพาะเจาะจงมากขึ้นมันทำงานได้อย่างรวดเร็วและแม่นยำอย่างไร (เทียบกับการกำจัดแบบเกาส์เซียน)

4
C ช้ากว่าฟอร์แทรนในการยิงบรรทัดฐานสเปกตรัม (ใช้ gcc, intel และคอมไพเลอร์อื่น ๆ ) หรือไม่
ข้อสรุปที่นี่: คอมไพเลอร์ของ Fortran นั้นดีกว่ามากแค่ไหน? คือ gfortran และ gcc นั้นรวดเร็วสำหรับโค้ดง่าย ๆ ฉันอยากลองอะไรที่ซับซ้อนกว่านี้ ฉันเอาตัวอย่างการยิงบรรทัดฐานสเปกตรัม ฉันก่อนการคำนวณเมทริกซ์ 2 มิติ A (:, :) แล้วคำนวณเกณฑ์ปกติ (วิธีแก้ปัญหานี้ไม่ได้รับอนุญาตในการยิงที่ฉันคิดว่า) ฉันได้ใช้ Fortran และรุ่น C นี่คือรหัส: https://github.com/certik/spectral_norm รุ่น gfortran ที่เร็วที่สุดคือ spectral_norm2.f90 และ spectral_norm6.f90 (อันหนึ่งใช้ matmul ในตัวและ dot_product ของ Fortran อีกตัวหนึ่งใช้ฟังก์ชันทั้งสองนี้ในรหัส - โดยไม่มีความแตกต่างด้านความเร็ว) รหัส C / C ++ ที่เร็วที่สุดที่ฉันสามารถเขียนได้คือ spectral_norm7.cpp การจับเวลาของ git …
13 fortran  c 

4
จะสร้างโดเมน 3D แบบสุ่มที่แสดงถึงโครงสร้างรากของพืชได้อย่างไร
ฉันต้องการสร้างแบบจำลองการไหลของน้ำจากรากสู่รากของพืช ที่ปลายสุดของรากท่อแตกต่างกันไปจากขนาดมิลลิเมตรถึงเซนติเมตรในเส้นผ่าศูนย์กลางและความยาว เมื่อเราเข้าใกล้ก้านมากขึ้นรากจะยาวและยาวขึ้น ฉันต้องการสร้างโดเมน 3D แบบสุ่มที่แสดงถึงเครือข่ายของรูทที่มีขนาดและความยาวต่างกัน อะไรจะเป็นวิธีที่ดีที่สุดในการสร้างรูปทรงเรขาคณิตนี้

1
มีเครื่องมือที่สามารถสร้างส่วนขยายช่วงเวลาของฟังก์ชัน Fortran (หรือ C) โดยการแยกรหัส Fortran (หรือ C) หรือไม่
กรณีศึกษาในวิทยานิพนธ์ระดับปริญญาเอกของฉันกำหนดว่าฉันต้องมีการขยายรูทีนย่อยของ Fortran ในCHEMKIN-II (ขอโทษสำหรับการเชื่อมโยงมันเป็นสิ่งที่ดีที่สุดที่ฉันสามารถหาได้สำหรับแพ็คเกจที่ไม่ได้จัดจำหน่ายโดย Sandia National Laboratory) CHEMKIN-II เป็นแพ็คเกจทางเคมีที่ใช้ในเคมีการเผาไหม้ เนื่องจากเป็นแพ็คเกจมาตรฐานที่ใช้ในการเผาไหม้ฉันจึงไม่สามารถ (หรือมากกว่านั้นไม่ต้องการ) ใช้แพ็คเกจอื่นที่นั่น เพื่อให้ได้ส่วนขยายช่วงเวลาที่ต้องการฉันใช้เครื่องมือที่พัฒนาขึ้นภายในชื่อDAEPACK. ไบนารีเก่าที่ฉันเคยใช้เพื่อสร้างส่วนขยายช่วงเวลาที่ต้องการของรูทีนย่อย CHEMKIN-II ที่ฉันต้องการในระบบปฏิบัติการ 32- บิต (ด้วยเวอร์ชันของ libstdc ที่สอดคล้องกับ gcc 2.95) เมื่อสองสามปีที่แล้ว ล้าสมัยและจะเป็นอุปสรรคอย่างมากในการใช้งาน (เพราะฉันต้องค้นหาซอฟต์แวร์เวอร์ชั่นอื่น ๆ ที่ใช้มา 32 บิต) ซอร์สโค้ดสำหรับแพ็คเกจนี้ก็เป็นกรรมสิทธิ์ แต่เนื่องจากเดิมพัฒนาขึ้นที่ MIT และฉันทำงานที่ MIT ฉันจึงสามารถ (หลังจากใช้ความพยายามอย่างมาก) ในการรับซอร์สโค้ดสำหรับ DAEPACK เมื่อใช้ซอร์สโค้ดที่ฉันมีฉันสามารถรวบรวม DAEPACK รุ่นที่เข้ากันได้กับ Linux เวอร์ชัน 64 บิตและ libstdc รุ่นที่สอดคล้องกับ gcc 4.xx …

5
ซอฟต์แวร์ทางวิทยาศาสตร์ควรได้รับการปรับให้เหมาะสมเท่าใด
สำหรับแอปพลิเคชันที่ต้องการทรัพยากรการคำนวณที่สำคัญประสิทธิภาพสูงอาจเป็นปัจจัยที่สำคัญเมื่อพูดถึงการให้ผลลัพธ์ทางวิทยาศาสตร์หรือการบรรลุ "การเจาะผ่าน" ในเวลาที่เหมาะสม นักพัฒนาซอฟต์แวร์ควรลงทุนเวลาและความพยายามในการปรับแต่งแอปพลิเคชั่นให้เหมาะสมเท่าไร? เกณฑ์หลักที่ใช้มีอะไรบ้าง?
13 software  hpc 

5
เกี่ยวกับการค้นหาโครงการโอเพนซอร์สเพื่อสนับสนุน
คำถามนี้ถูกถามถึงพันล้านครั้งใน Stackoverflow อย่างไรก็ตามโฟกัสได้รับการเข้ารหัสที่ไม่ใช่ตัวเลขเสมอ ฉันกำลังมองหาโครงการที่มีส่วนร่วมในขอบเขตของการคำนวณเชิงตัวเลขและการคำนวณที่มีประสิทธิภาพสูง ฉันต้องการโครงการขนาดเล็ก แต่ไม่จำเป็น อะไรจะเป็นวิธีที่ดีที่สุดในการมีส่วนร่วมในโครงการโอเพ่นซอร์สที่เกี่ยวข้องกับ SciComp เราจะเริ่มมองหาโครงการที่ไหน? อะไรจะเป็นวิธีที่ดีที่สุดในการเข้าร่วมโครงการดังกล่าว คำขอคุณสมบัติ / ข้อบกพร่อง / เอกสารหรืออื่น ๆ ? ดูที่ ATLAS หรือNixคุณจะเปลี่ยนจาก N00B เป็น active ได้อย่างไร?
13 software 

4
FLOP นับสำหรับฟังก์ชั่นห้องสมุด
เมื่อประเมินจำนวน FLOPs ในฟังก์ชั่นที่เรียบง่ายมักจะสามารถลงไปในการแสดงออกของผู้ประกอบการทางคณิตศาสตร์ขั้นพื้นฐานรับทราบ อย่างไรก็ตามในกรณีของคำแถลงทางคณิตศาสตร์ที่เกี่ยวข้องกับการแบ่งคู่เราไม่สามารถทำสิ่งนี้ได้และคาดว่าจะสามารถเปรียบเทียบกับ FLOP นับได้จากฟังก์ชั่นที่มีการเพิ่มเติมและการคูณเท่านั้น สถานการณ์ยิ่งแย่ลงเมื่อการดำเนินการถูกนำไปใช้ในไลบรารี ดังนั้นจึงจำเป็นที่จะต้องมีแนวคิดที่สมเหตุสมผลเกี่ยวกับประสิทธิภาพของฟังก์ชั่นพิเศษ โดยฟังก์ชั่นพิเศษเราหมายถึงสิ่งที่ชอบ: ประสบการณ์ () sqrt () บาป / cos / สีน้ำตาล () ซึ่งมักจะมีให้โดยไลบรารีระบบ การกำหนดความซับซ้อนของสิ่งเหล่านี้จะทำให้เกิดความสับสนมากยิ่งขึ้นจากข้อเท็จจริงที่ว่าหลายคนปรับตัวได้และมีความซับซ้อนขึ้นอยู่กับอินพุต ตัวอย่างเช่นการใช้งานที่มีเสถียรภาพของตัวเลข() มักจะ rescale แบบปรับตัวและใช้การค้นหา ความประทับใจครั้งแรกของฉันที่นี่คือสิ่งที่ดีที่สุดในกรณีนี้คือตรวจสอบพฤติกรรมโดยเฉลี่ยของฟังก์ชั่น แน่นอนว่าการสนทนาทั้งหมดนี้ขึ้นอยู่กับสถาปัตยกรรมเป็นอย่างมาก สำหรับการสนทนานี้เราสามารถ จำกัด ตัวเราให้เป็นสถาปัตยกรรมที่มีวัตถุประสงค์ทั่วไปแบบทั่วไปและยกเว้นสิ่งที่มีหน่วยฟังก์ชั่นพิเศษ (GPU ฯลฯ ) เราสามารถค้นหาความพยายามที่ค่อนข้างง่ายในการสร้างมาตรฐานเหล่านี้สำหรับสถาปัตยกรรมเฉพาะเพื่อประโยชน์ของระบบและการเปรียบเทียบระบบ แต่ไม่สามารถยอมรับได้หากมีใครสนใจวิธีการและประสิทธิภาพของวิธีการ วิธีการใดในการพิจารณาความซับซ้อนของ FLOP ของฟังก์ชั่นเหล่านี้ถือเป็นที่ยอมรับ มีข้อผิดพลาดที่สำคัญหรือไม่?

2
เราควรใช้วิธีการรวมเวลาแบบใดสำหรับ PDE แบบไฮเปอร์โบลิค
ถ้าเราใช้วิธีการแบบแยกส่วน (แยกเวลาและพื้นที่แยกส่วน) ของ PDE แบบไฮเปอร์โบลิกที่เราได้รับหลังจากการแยกเชิงพื้นที่ด้วยวิธีเชิงตัวเลขที่เราชื่นชอบ (fx. วิธีไฟไนต์ปริมาณ) ไม่สำคัญในทางปฏิบัติ (TVD / เอสเอส / ฯลฯ )? เพิ่มข้อมูลเพิ่มเติมบางอย่าง: ปัญหาความแม่นยำอาจเป็นปัญหาสำหรับปัญหาที่ไม่ราบรื่น เป็นที่ทราบกันดีอยู่แล้วว่า PDEs แบบไม่เชิงเส้นไม่เชิงเส้นสามารถพัฒนาแรงกระแทกในเวลาที่ จำกัด แม้จะมีวิธีแก้ปัญหาเริ่มแรกที่ราบรื่นซึ่งความแม่นยำของกรณีสามารถลดอันดับแรกสำหรับวิธีการเรียงลำดับสูง โดยทั่วไปแล้วการวิเคราะห์เสถียรภาพ ODE จะทำตามการทำให้เป็นเชิงเส้นเพื่อให้ได้ระบบกึ่งเชิงเส้นแบบไม่ต่อเนื่องของ ODE ของรูปแบบ q_t = J q (ด้วยเวกเตอร์การรบกวนของเวกเตอร์ QA) ซึ่งค่าลักษณะเฉพาะของ J จะถูกปรับขนาดภายใน วิธีการก้าว กลยุทธ์ทางเลือกคือการใช้ pseudospectra หรืออาจเป็นวิธีพลังงานสำหรับการวิเคราะห์ความมั่นคง ฉันเข้าใจว่าแรงจูงใจสำหรับวิธีการ TVD / SSP คือการหลีกเลี่ยงการแกว่งไปมาที่เกิดจากวิธีการเลื่อนเวลาซึ่งอาจส่งผลให้เกิดพฤติกรรมที่ไม่เป็นกายภาพ คำถามคือถ้าประสบการณ์แสดงให้เห็นว่าวิธีการก้าวข้ามเวลาแบบนี้จะดีกว่าเมื่อเปรียบเทียบกับเช่นม้างานคลาสสิกเป็นวิธี Runge-Kutta ที่ชัดเจนหรืออื่น ๆ เห็นได้ชัดว่าพวกเขาควรมีคุณสมบัติที่ดีกว่าสำหรับชั้นเรียนของปัญหาที่การแก้ปัญหาอาจแสดงแรงกระแทก เราอาจโต้แย้งว่าเราควรใช้วิธีการเหล่านี้เพื่อการรวมเวลาเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.