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

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

4
วิธีแก้ปัญหาที่ชัดเจนอย่างรวดเร็วสำหรับ ,หมายเลขเงื่อนไขต่ำ
ฉันกำลังมองหาวิธีแก้ปัญหาเชิงเส้น 3x3 อย่างชัดเจน (กล้าพูดอย่างเหมาะสมหรือไม่) ,{3} Ax=bAx=ข\mathbf{A}\mathbf{x} = \mathbf{b}A∈R3×3,b∈R3A∈R3×3,ข∈R3\mathbf{A} \in \mathbf{R}^{3 \times 3}, \mathbf{b} \in \mathbf{R}^{3} Matrixเป็นเรื่องปกติ แต่ใกล้กับ matrix matrix ที่มีจำนวนใกล้เคียงกับ 1 เนื่องจากเป็นเซ็นเซอร์วัดจริงที่มีความแม่นยำประมาณ 5 หลักฉันไม่คิดว่าจะสูญเสียตัวเลขหลายหลักเนื่องจากตัวเลข ปัญหาAA\mathbf{A}bข\mathbf{b} แน่นอนว่าไม่ใช่เรื่องยากที่จะคิดหาวิธีแก้ปัญหาที่ชัดเจนตามวิธีการต่าง ๆ แต่ถ้ามีบางสิ่งที่แสดงให้เห็นว่าเหมาะสมที่สุดในแง่ของการนับ FLOPS นั่นจะเป็นอุดมคติ (หลังจากนั้นปัญหาทั้งหมด จะเหมาะสมกับการลงทะเบียน FP!) (ใช่กิจวัตรประจำวันนี้ถูกเรียกบ่อยครั้งฉันกำจัดผลไม้แขวนต่ำไปแล้วและนี่เป็นรายการต่อไปในรายการทำโปรไฟล์ของฉัน ... )

5
Galerkin ไม่ต่อเนื่องใด ๆ ที่ขนานกันได้จริง ๆ กับ Galerkin ต่อเนื่องหรือไม่
ฉันได้ยินมาเสมอว่าการขนานที่ง่ายเป็นหนึ่งในข้อดีของวิธีการของ DG แต่ฉันไม่เห็นเลยว่าทำไมเหตุผลเหล่านั้นถึงไม่สามารถใช้กับ Galerkin ต่อเนื่องได้

2
โครงสร้างข้อมูลแบบใหม่ใดที่ใช้ใน FEM ที่ปรับตัวได้
ไลบรารี FEM ที่ปรับตัวได้จำนวนมากใช้โครงสร้างข้อมูลตาข่ายที่ทันสมัยกว่าเพื่อจัดการกับการเพิ่ม / ลบโหนด, ขอบ, สามเหลี่ยม, เตตราฮาดราเป็นต้นตัวอย่างเช่นไลบรารีp4estใช้โครงสร้างข้อมูลแปดตัวสำหรับการปรับแต่งการปรับตาข่าย คุณมักจะไม่พบว่ามีแปดที่ใช้สำหรับการคำนวณบนตาข่ายแบบคงที่ การเปลี่ยนแปลงด้านพีชคณิตเชิงเส้นสำหรับ FEM แบบปรับตัวได้คืออะไร? วิธีที่ทื่อที่สุดที่ฉันสามารถนึกได้ก็คือการสร้างเมทริกซ์ระบบใหม่ทั้งหมดอย่างสมบูรณ์เมื่อใดก็ตามที่ตาข่ายถูกขัดหรือหยาบ หากการดัดแปลงตาข่ายเป็นการดำเนินการที่ไม่บ่อยนักเพียงพอค่าใช้จ่ายในการทำเช่นนั้นจะถูกตัดจำหน่ายในที่สุดเมื่อคำนวณส่วนที่เหลือ เราสามารถใช้ประโยชน์จากซอฟต์แวร์พีชคณิตเชิงเส้นแบบกระจาย (PETSc, Trilinos และอื่น ๆ ) ได้อย่างง่ายดายด้วยวิธีการนี้ วิธีการทู่นี้ใช้กันมากที่สุดหรือมีห้องสมุดที่จัดการเพื่อนำมาใช้ใหม่หรือปรับเปลี่ยนเมทริกซ์เก่าในระหว่างการปรับแต่ง? ท้ายที่สุดแล้วส่วนใหญ่ของตาข่ายและเมทริกซ์ที่เกี่ยวข้องจะไม่เปลี่ยนแปลงระหว่างการปรับตัวของตาข่าย

1
การใช้วิธี Jacobi-Davidson สำหรับปัญหาลูกบาศก์ค่าลักษณะเฉพาะ
ฉันมีปัญหาค่า eigenvalue ขนาดใหญ่: (A0+ λA1+λ2A2+λ3A3) x =0(A0+λA1+λ2A2+λ3A3)x=0.\left(\mathbf{A}_0 + \lambda\mathbf{A}_1 + \lambda^2\mathbf{A}_2 + \lambda^3\mathbf{A}_3\right)\mathbf{x} = 0. ฉันสามารถแก้ปัญหานี้ได้โดยการแปลงเป็นปัญหาค่าลักษณะเชิงเส้น แต่มันจะส่งผลให้ระบบ 32323^2 มีขนาดใหญ่: ⎡⎣⎢-A0000ผม000ผม⎤⎦⎥⎡⎣⎢xYZ⎤⎦⎥= λ⎡⎣⎢A1ผม0A20ผมA300⎤⎦⎥⎡⎣⎢xYZ⎤⎦⎥,[−A0000I000I][xyz]=λ[A1A2A3I000I0][xyz],\begin{bmatrix} -\mathbf{A}_0 & 0 & 0 \\ 0 & \mathbf{I} & 0 \\ 0 & 0 & \mathbf{I} \end{bmatrix} \begin{bmatrix} \mathbf{x} \\ \mathbf{y} \\ \mathbf{z} \end{bmatrix} = \lambda \begin{bmatrix} \mathbf{A}_1 …

2
ความพยายามคำนวณของอัลกอริทึม
พิจารณาปัญหาการปรับให้เหมาะสมแบบไม่มีข้อ จำกัด อย่างเข้มงวด O:=minx∈Rnf(x).O:=minx∈Rnf(x).\mathcal{O} := \min_{x \in \mathbb{R}^n} f(x).ให้แทนค่า minima ที่ไม่ซ้ำกันและเป็นการประมาณค่าเริ่มต้นที่กำหนดให้กับเราจะเรียกเวกเตอร์วิธีการแก้ปัญหาอย่างใกล้ชิดของถ้า xoptxoptx_\text{opt}x0x0x_0xopt.xopt.x_\text{opt}.xxxϵ−ϵ−\epsilon-OO\mathcal{O}||x−xopt||2||x0−xopt||2≤ϵ.||x−xopt||2||x0−xopt||2≤ϵ.\begin{equation} \frac{||x - x_{\text{opt}}||_2}{||x_0 - x_\text{opt}||_2} \leq \epsilon. \end{equation} สมมติว่ามีสองอัลกอริธึมวนซ้ำA1A1\mathcal{A}_1และA2A2\mathcal{A}_2เพื่อค้นหาϵ−ϵ−\epsilon- close solution ของOO\mathcal{O}ด้วยคุณสมบัติต่อไปนี้: สำหรับการใด ๆϵ>0,ϵ>0,\epsilon > 0,คำนวณความพยายามทั้งหมดคือความพยายามที่จำเป็นต่อการทำซ้ำ××\timesจำนวนรวมของการทำซ้ำที่จะหาϵ−ϵ−\epsilon-ทางออกที่ใกล้จะเหมือนกันสำหรับทั้งขั้นตอนวิธี ความพยายามซ้ำสำหรับA1A1\mathcal{A}_1คือO(n),O(n),O(n),พูดในขณะที่A2A2\mathcal{A}_2คือO(n2).O(n2).O(n^2). มีสถานการณ์ที่หนึ่งจะชอบหนึ่งอัลกอริทึมมากกว่าอีก? ทำไม?

3
วิธีไฟไนต์เอลิเมนต์และวิธีไฟไนต์เอลิเมนต์แบบขยาย (FEM กับ XFEM)
อะไรคือความแตกต่างที่สำคัญระหว่าง FEM และ XFEM เมื่อใดที่เรา (ไม่) ใช้ XFEM แทนการใช้ FEM และในทางกลับกัน กล่าวอีกนัยหนึ่งเมื่อฉันพบปัญหาใหม่ฉันจะรู้ได้อย่างไรว่าจะใช้หนึ่งในนั้น

10
เป็นไปได้หรือไม่ที่จะปรับแต่งรหัสการรวมเพื่อให้ทำงานได้เร็วขึ้น?
double trap(double func(double), double b, double a, double N) { double j; double s; double h = (b-a)/(N-1.0); //Width of trapezia double func1 = func(a); double func2; for (s=0,j=a;j<b;j+=h){ func2 = func(j+h); s = s + 0.5*(func1+func2)*h; func1 = func2; } return s; } ด้านบนคือรหัส C ++ ของฉันสำหรับการรวมตัวเลข 1D (โดยใช้กฎสี่เหลี่ยมคางหมูแบบขยาย) …

2
ข้อเสนอแนะสำหรับการจัดการการจำลองการทำงาน?
คำถามนี้อาจเป็นหัวข้อนอกเรื่องใน comp-sci หากมีความจำเป็นโปรดแนะนำสถานที่ที่เหมาะสมกับมัน คำถามเกี่ยวกับวิธีการจัดการการจำลองทั้งหมดทำงานได้อย่างมีประสิทธิภาพ ตัวอย่างเช่นการจำลองต้องการการแก้ไขพารามิเตอร์ 2 ตัวซึ่งจะต้องมีการกำหนดในช่วงค่าที่แนะนำ เพื่อหาผลลัพธ์ที่ดีกว่าที่ผลิตโดยคู่ของพารามิเตอร์สองตัว (โดยการเปรียบเทียบผลการจำลองกับข้อมูลการทดลองตัวอย่าง) เราสามารถทำการวิเคราะห์ความอ่อนไหวโดยการกำหนดสามค่าสำหรับแต่ละพารามิเตอร์จากนั้นกำหนดสูตร 9 รัน ก่อนหน้านี้ฉันใช้sedเพื่อเปลี่ยนอินพุตสำหรับการทำงานแต่ละครั้งและติดแท็กการทดสอบแต่ละครั้งโดยการเขียนค่าและชื่อพารามิเตอร์ในโฟลเดอร์ที่เก็บอินพุตและผลลัพธ์ของการทำงานนี้ แต่ฉันพบว่าสิ่งนี้ไม่มีประสิทธิภาพมากเมื่อจำนวนพารามิเตอร์เพิ่มขึ้น (เช่นเข้าถึงชื่อของโฟลเดอร์ในสคริปต์สำหรับการพล็อต) จากนั้นฉันตัดสินใจที่จะใช้หมายเลขแบบง่ายเป็นชื่อโฟลเดอร์และเก็บรายละเอียดโดยสเปรดชีตอื่น ๆ วิธีนี้ก็โอเค แต่ต้องใช้งานลำบาก เช่นเดียวกันกับการเติบโตของการวิ่งมันเป็นเรื่องปกติที่จะทำผิดพลาดเช่นทำการวิ่งอีกครั้งซึ่งได้ทำไปแล้วเมื่อสองสามวันก่อน คุณมีความคิดที่ดีเกี่ยวกับการจัดการการวิ่งเหล่านี้หรือไม่? ฉันคิดว่ามันจะมีความสำคัญอย่างยิ่งสำหรับคนที่ทำการวิเคราะห์ Monte Carlo? ขอบคุณล่วงหน้า!

3
เรียงลำดับของปัญหาที่ SOR เร็วกว่า Gauss-Seidel หรือไม่
มีกฎง่ายๆที่จะบอกว่ามันคุ้มค่าที่จะทำ SOR แทน Gauss-Seidel หรือไม่? (และวิธีที่เป็นไปได้วิธีการประเมินพารามิเตอร์ realxationωω\omega) ฉันหมายถึงแค่มองดูเมทริกซ์หรือความรู้เกี่ยวกับปัญหาเฉพาะเมทริกซ์แทน? ฉันกำลังอ่านคำตอบสำหรับคำถามนี้: มีฮิวริสติกใดบ้างสำหรับการปรับวิธีการผ่อนคลายแบบต่อเนื่อง (SOR) ให้เหมาะสมหรือไม่? แต่มันซับซ้อนเกินไป ฉันไม่เห็นฮิวริสติกแบบง่าย ๆ ว่าจะประมาณรัศมีสเปกตรัมแค่มองที่เมทริกซ์ (หรือปัญหาที่มันแทน) ฉันต้องการสิ่งที่ง่ายกว่ามาก - เพียงไม่กี่ตัวอย่างของเมทริกซ์ (ปัญหา) ที่ SOR มาบรรจบกันเร็วขึ้น ฉันกำลังทดลองกับ SOR สำหรับเมทริกซ์ของกษัตริย์องค์นี้: A = I+ C+ RA=ผม+ค+RA = I + C + R ที่ไหน ผมผมI เมทริกซ์เอกลักษณ์คือ คฉันเจ= cคผมJ=คC_{ij}=c ∀ i , j∀ผม,J \forall i,j และ …

2
ข้อผิดพลาดที่แปลกประหลาดเมื่อแก้ไขสมการปัวซองบนตาข่ายที่ไม่สม่ำเสมอ (1D เท่านั้น) วิธีปริมาตร จำกัด
ฉันพยายามแก้ไขข้อผิดพลาดนี้เมื่อไม่กี่วันที่ผ่านมาฉันสงสัยว่าใครมีคำแนะนำในการดำเนินการต่อ ฉันกำลังแก้สมการปัวซองสำหรับการกระจายประจุแบบขั้นตอน (ปัญหาทั่วไปใน electrostatics / เซมิคอนดักเตอร์ฟิสิกส์) บนตาข่ายปริมาณ จำกัด แบบไม่สม่ำเสมอที่ไม่ทราบค่าจะถูกกำหนดบนศูนย์เซลล์และฟลักซ์บนใบหน้าเซลล์ 0 = (φx)x+ ρ ( x )0=(ϕx)x+ρ(x) 0 = (\phi_x)_x + \rho(x) โปรไฟล์การเรียกเก็บเงิน (คำที่มา) ได้รับจาก ρ ( x ) =⎧⎩⎨- 1 ,1 ,0 ,ถ้า - 1 ≤ x ≤ 0ถ้า 0 ≤ x ≤ 1มิฉะนั้นρ(x)={−1,if −1≤x≤01,if 0≤x≤10,otherwise \rho(x)= \begin{cases} -1,& \text{if …

1
มีรายการจดหมายที่ดีสำหรับ 'วิทยาศาสตร์การคำนวณ' ไหม?
ฉันสงสัยว่ามีรายชื่อผู้รับจดหมายหรือgoogle กลุ่มที่ดีมากสำหรับการคำนวณทางวิทยาศาสตร์ที่เราสามารถพูดคุยคำถามแทนการถามและตอบคำถามเท่านั้น ในความเป็นจริงฉันสนใจการคำนวณแบบขนานและการแก้ปัญหาเชิงตัวเลขของ PDE มากกว่า แต่ฉันไม่รู้ว่าคนในพื้นที่นี้กำลังทำอะไรและอย่างไร ฉันสามารถอ่านเอกสารเพื่อเข้าใจแผนที่ถนนของพื้นที่นี้เท่านั้น โปรดให้ข้อมูลฉันด้วย ขอบคุณ

3
โครงการของฉันสามารถอยู่รอดโดยปราศจากการวางแนววัตถุหรือไม่
ฉันกำลังเขียนแพคเกจ MATLAB ขนาดเล็กซึ่งจะแก้ปัญหาเรื่องตัวเลขในระดับหนึ่ง อัลกอริทึมมี 3 ขั้นตอนและผู้ใช้มี 5 ตัวเลือกสำหรับแต่ละสเตจ ฉันใช้ปัญหาทั้งหมดไปแล้วโดยใช้≈ 20≈20\approx 20ฟังก์ชั่นและ 3 สวิตช์กรณี (หนึ่งสำหรับแต่ละขั้นตอนวิธี) มันใช้งานได้ดี แต่ฉันกำลังพิจารณาที่จะทำสิ่งต่าง ๆ (มีให้เลือกมากกว่า 5 ตัวเลือกและอีกหนึ่งเวที) และสร้างพอร์ต Python (บางคนสนใจ) ฉันสงสัยว่าฉันควรแปลงเป็น OOP framework หรือไม่ซึ่งฉันไม่ดีเลยหรือว่าฉันควรทำตามกรอบขั้นตอนที่ฉันมีหรือไม่ (ซึ่งฉันทำได้ดี) ฉันแน่ใจในโค้ดของโพรซีเดอร์ว่าไม่มีฟังก์ชั่นทำสองสิ่งและมีการทับซ้อนกันน้อยที่สุด (2 เซกเมนต์รหัสแทบไม่เคยทำสิ่งเดียวกัน) โปรดย้ายข้อมูลนี้ไปยัง SO หากคุณคิดว่าเหมาะสมในโดเมนของพวกเขา
9 matlab 

4
การเรียนรู้ Fortran
ฉันสงสัยว่าวิธีที่ดีที่สุดในการเรียนรู้วิธีการเขียนโปรแกรมใน Fortran คืออะไร ฉันได้รับการมองหาหนังสือตัวอย่างที่ดูเหมือนตกลงฉันก็จะไป"Fortran 95/2003 อธิบาย"และ"Fortran สำหรับนักวิทยาศาสตร์และวิศวกร" ฉันไม่รู้ว่าพวกคุณคิดอย่างไรกับสิ่งเหล่านี้? สิ่งที่ฉันสงสัยอีกอย่างคือฉันควรใช้คอมไพเลอร์ใด? ฉันทำงานกับเครื่อง Windows 7 (64- บิต) ฉันหวังว่าพวกคุณสามารถช่วยฉันในนี้! ดังนั้นสำหรับประสบการณ์ของฉันกับการเขียนโปรแกรม: Matlab และเมเปิ้ลใจดีกับการแนะนำครั้งแรกของฉันในโลกแห่งการเขียนโปรแกรม Matlab เป็นโปรแกรมที่ฉันค่อนข้างดีจริง ๆ ฉันได้ทำงานกับลูปและวิธีการรวมเหล่านี้เพื่อสร้างโปรแกรมที่มีประสิทธิภาพมากขึ้น Maple อยู่ในช่วงเริ่มต้นมากขึ้น (ฉันรู้วิธีค้นหาโซลูชันเพื่อการผสานรวมอย่างง่ายเป็นต้น) หนึ่งปีหลังจากนั้นเราได้แนะนำ C ++ ใน Visual Basic อาจารย์ไปที่นี่อย่างรวดเร็วหลังจาก 2 เดือนเราได้คุยพอยน์เตอร์และมรดกแล้ว ฉันสามารถเขียนโปรแกรมง่าย ๆ ในภาษานี้ได้เพียงการทำงานกับชั้นเรียนเป็นสิ่งที่ยังคงเป็นปัญหา แต่ฉันเชื่อว่าเป็นเพียงเรื่องของการปฏิบัติ และอีกหนึ่งปีต่อมาฉันจำเป็นต้องเรียนรู้ Mathematica 8 ซึ่งตอนนี้ฉันก็เริ่มดีขึ้นแล้ว ดังนั้นฉันจึงมีการเขียนโปรแกรมเพิ่มขึ้นเล็กน้อย แต่ฉันจะไม่พูดว่ามันยอดเยี่ยมมาก! เหตุผลที่ฉันต้องการเรียนรู้ Fortran ส่วนใหญ่เป็นเพราะคุณไม่สามารถทำฟิสิกส์เชิงทฤษฎีด้วยตัวเองคุณต้องทดสอบทฤษฎีของคุณและเพื่อที่คุณจะต้องสามารถเขียนโปรแกรมที่อาจทดสอบทฤษฎีเหล่านั้นเป็นตัวเลขได้ ฉันได้ยินมาว่าฟอร์แทรนเป็นภาษาที่ใช้สำหรับคณิตศาสตร์เชิงตัวเลขดังนั้นฉันคิดว่ามันจะมีประโยชน์ในการรู้ภาษานี้ ps: Fortran95 …
9 fortran 

1
มีข้อได้เปรียบเชิงตัวเลขในการแก้เมทริกซ์สมมาตรเมื่อเปรียบเทียบกับเมทริกซ์ที่ไม่มีสมมาตรหรือไม่?
ฉันใช้วิธี จำกัด ผลต่างกับระบบของสมการ 3 คู่ สมการที่สองไม่ได้เป็นคู่อย่างไรก็ตามคู่ที่สามของสมการทั้งสองนั้น ฉันสังเกตว่าการเปลี่ยนลำดับของสมการพูดจาก(x,y,z)(x,y,z)(x, y, z) ถึง (x,z,y)(x,z,y)(x, z, y) เมทริกซ์สัมประสิทธิ์กลายเป็นสมมาตร มีข้อได้เปรียบในการทำเช่นนี้หรือไม่? ตัวอย่างเช่นในแง่ของความมั่นคงหรือประสิทธิภาพ / ความเร็วของการแก้ปัญหา เมทริกซ์นั้นกระจัดกระจายมากหากเป็นสิ่งสำคัญเงื่อนไขที่ไม่เป็นศูนย์จะอยู่ตามแนวเส้นทแยงมุมส่วนกลาง

3
FAS-multigrid ช้ากว่าการแก้ไขข้อบกพร่องเชิงเส้นหรือไม่
ฉันใช้ตัวแก้ไขมัลติ - กริด V-Cycle โดยใช้ทั้งการแก้ไขข้อบกพร่องเชิงเส้น (LDC) และโครงร่างการประมาณแบบเต็ม (FAS) ปัญหาของฉันคือต่อไปนี้: การใช้ LDC ที่เหลือจะลดลงโดยปัจจัย ~ 0.03 ต่อรอบ การปรับใช้ FAS จะรวมเข้ากับปัจจัยเชิงเส้นด้วยเช่นกัน แต่ปัจจัยเพียง 0.58 เท่านั้น ดังนั้น FAS ต้องการประมาณ 20 เท่าของจำนวนรอบ ส่วนใหญ่ของรหัสที่ใช้ร่วมกันความแตกต่างเพียงอย่างเดียวคือการคำนวณขึ้น / ลง, LDC ใช้ ลง:ยูH: = 0 ,ขH: =ผมHชั่วโมง(ขชั่วโมง-Lชั่วโมงยูชั่วโมง)ยูH=0,ขH=ผมชั่วโมงH(ขชั่วโมง-Lชั่วโมงยูชั่วโมง)u_H:=0,\quad b_H:=I_h^H(b_h-L_hu_h) ขึ้น:ยูชั่วโมง: =ยูชั่วโมง+ผมชั่วโมงHยูHยูชั่วโมง=ยูชั่วโมง+ผมHชั่วโมงยูHu_h:=u_h+I_H^hu_H และ FAS ใช้ ลง:ยูH: =ผมHชั่วโมงยูชั่วโมง,ขH: =ผมHชั่วโมงขชั่วโมง+LHผมHชั่วโมงยูชั่วโมง-ผมHชั่วโมงLชั่วโมงยูชั่วโมงยูH=ผมชั่วโมงHยูชั่วโมง,ขH=ผมชั่วโมงHขชั่วโมง+LHผมชั่วโมงHยูชั่วโมง-ผมชั่วโมงHLชั่วโมงยูชั่วโมงu_H:=I_h^Hu_h,\quad b_H:=I_h^Hb_h+L_HI_h^Hu_h-I_h^HL_hu_h ขึ้น:ยูชั่วโมง: =ยูชั่วโมง+ผมชั่วโมงH(ยูH-ผมHชั่วโมงยูชั่วโมง)ยูชั่วโมง=ยูชั่วโมง+ผมHชั่วโมง(ยูH-ผมชั่วโมงHยูชั่วโมง)u_h:=u_h+I_H^h(u_H-I_h^Hu_h) การตั้งค่าการทดสอบของฉันมาจาก "A …
9 multigrid 

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