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

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

4
Fortuna หรือ Mersenne Twister เป็นที่นิยมในฐานะอัลกอริทึม RNG หรือไม่?
คำตอบที่ผ่านมากล่าวถึงการใช้งานของFortunaหรือMersenne Twisterจำนวนสุ่มปั่นไฟ ( RNGs ) เพื่อเมล็ดจำลอง Monte Carlo ฉันไม่เคยได้ยิน Fortuna มาก่อนดังนั้นฉันจึงค้นหามัน - ดูเหมือนว่ามันมีไว้สำหรับการใช้งานการเข้ารหัสลับเป็นหลัก ปัจจุบันฉันใช้ Mersenne Twister ในรหัสการผลิตเพื่อเริ่มต้นอัลกอริทึม K-Means (Fortuna หรือ Mersenne Twister) ใดที่ถือว่าดีที่สุดสำหรับแอปพลิเคชัน "การสร้างอัลกอริทึม" (เช่นการเพาะเมล็ด Monte Carlo และ K-Means) หรือมันคือ "toss up" - เช่นใช้สะดวกที่สุด จากจุดที่ฉันกำลังนั่ง "ดีที่สุด" ควรให้ตัวเลขสุ่มคุณภาพสูงทำงานได้อย่างรวดเร็วและ (อาจ) มีพื้นที่หน่วยความจำเหลือน้อย ของเหล่านี้คุณภาพน่าจะเป็นสิ่งสำคัญที่สุดสำหรับเราส่วนใหญ่

6
วิธีเริ่มต้นใช้งาน OpenFOAM สำหรับ CFD
ฉันกำลังดูการใช้ OpenFOAM สำหรับการแก้ปัญหาการไหลภายในพื้นฐานใน CFD อะไรคือวิธีที่ดีที่สุดในการเริ่มต้นและทุกคนโปรดชี้ฉันไปที่การอ้างอิงออนไลน์ที่ดีเพื่อไปกับคำถามใด ๆ ที่ฉันอาจมีเมื่อฉันดำน้ำใน? ฉันได้ยินมาว่ามันค่อนข้างเฉพาะตอนนี้และฟังก์ชั่นการแก้ปัญหาจำนวนมากไม่ได้รับการบันทึกไว้อย่างดี เห็นได้ชัดว่าเอกสารที่มาพร้อมกับแพ็คเกจนั้นเป็นการเริ่มต้น แต่มีการอ้างอิงของบุคคลที่สาม (เช่นวิกิ OpenFOAM) หรือไม่

6
ฉันจะเขียนโค้ดผู้ไม่เชื่อเรื่องพระเจ้าได้อย่างไร
ฉันมักจะพบว่าตัวเองกำลังเขียนโค้ดที่คล้ายกันมากสำหรับรุ่นหนึ่งสองและสามมิติของการดำเนินการ / อัลกอริทึมที่กำหนด การบำรุงรักษาเวอร์ชันเหล่านี้ทั้งหมดอาจกลายเป็นเรื่องน่าเบื่อ การสร้างโค้ดอย่างง่ายนั้นใช้งานได้ดี แต่ดูเหมือนว่าจะต้องมีวิธีที่ดีกว่า มีวิธีที่ค่อนข้างง่ายในการเขียนการดำเนินการเพียงครั้งเดียวและมีการพูดคุยกับมิติที่สูงขึ้นหรือต่ำลงหรือไม่? ตัวอย่างที่ชัดเจนประการหนึ่งคือสมมติว่าฉันต้องการคำนวณการไล่ระดับสีของสนามความเร็วในอวกาศ ในสามมิติลูป Fortran จะมีลักษณะดังนี้: do k = 1, n do j = 1, n do i = 1, n phi(i,j,k) = ddx(i)*u(i,j,k) + ddx(j)*v(i,j,k) + ddx(k)*w(i,j,k) end do end do end do โดยที่ddxarray นั้นถูกกำหนดอย่างเหมาะสม (เราสามารถทำได้ด้วยการคูณเมทริกซ์) โค้ดสำหรับโฟลว์สองมิตินั้นเกือบจะเหมือนกันทุกประการยกเว้น: มิติที่สามถูกดร็อปจากลูปดัชนีและจำนวนของคอมโพเนนต์ มีวิธีที่ดีกว่าในการแสดงสิ่งนี้หรือไม่? อีกตัวอย่างคือ: สมมติว่าฉันมีความเร็วของของไหลที่กำหนดจุด - ฉลาดในตารางสามมิติ เพื่อสอดแทรกความเร็วไปยังตำแหน่งตามอำเภอใจ …

1
การอัพเดทในแนวทแยงของเมทริกซ์แน่นอนบวกที่เป็นสมมาตร
เป็น n × nสมมาตรบวกแน่นอน (SPD) เมทริกซ์เบาบาง Gเป็นเมทริกซ์ทแยงมุมเบาบาง nมีขนาดใหญ่ ( n > 10,000) และจำนวนที่ไม่ใช่ศูนย์ใน Gโดยปกติคือ 100 ~ 1,000AAAn×nn×nn \times nGGGnnnnnnGGG ได้รับการแยกตัวประกอบในรูปแบบ cholesky เป็น L D L TAAALDLTLDLTLDL^T T วิธีการปรับปรุงและDได้อย่างมีประสิทธิภาพเมื่อกลายเป็น+ G ?LLLDDDAAAA+GA+GA+G

3
ฉันควรใช้แนวทางใดเมื่อค้นหาวิธีการกำหนดเงื่อนไขเบื้องต้นที่ดีสำหรับปัญหาเฉพาะ
สำหรับการแก้ปัญหาของระบบเชิงเส้นขนาดใหญ่โดยใช้วิธีวนซ้ำมันมักจะน่าสนใจที่จะแนะนำการปรับสภาพล่วงหน้าเช่นแก้แทนโดยที่ถูกใช้ที่นี่สำหรับการปรับสภาพซ้ายของระบบ . โดยทั่วไปแล้วเราควรมีและให้พื้นฐานสำหรับการแก้ปัญหาที่มีประสิทธิภาพ (มากขึ้น) หรือลดทรัพยากรการคำนวณ (เช่นที่เก็บข้อมูลหน่วยความจำ) เปรียบเทียบกับโซลูชันของระบบดั้งเดิม ( เช่นเมื่อ ) อย่างไรก็ตามเราควรใช้แนวทางใดในการเลือกผู้ตั้งเงื่อนไขล่วงหน้า ผู้ฝึกหัดทำสิ่งนี้อย่างไรสำหรับปัญหาเฉพาะของพวกเขาM - 1 ( A x = b ) M M - 1 ≈ A - 1 M = AA x = bAx=bAx=bM- 1( A x = b )M−1(Ax=b)M^{-1}(Ax=b)MMMM- 1≈- 1M−1≈A−1M^{-1}\approx A^{-1}M= AM=AM=A

2
หลอกเวลาคืออะไร?
ในขณะที่อ่านวรรณกรรมบางอย่างเกี่ยวกับนักแก้ปัญหา PDE ฉันเจอคำหลอกหลอกเวลาในวันนี้ ดูเหมือนว่าจะเป็นคำทั่วไป แต่ฉันล้มเหลวในการค้นหาคำจำกัดความที่ดีหรือบทความเบื้องต้นสำหรับมัน ดังนั้น: หลอกเวลาหลอกคืออะไรและมักจะใช้อย่างไร

1
เหตุใด Octrees จึงใช้สำหรับการสลายตัวของ Multipole space
ในการใช้งานส่วนใหญ่ (ทั้งหมด?) ของวิธีการ Multipole อย่างรวดเร็ว (FMM), แปดจะใช้ในการย่อยสลายโดเมนที่เกี่ยวข้อง ในทางทฤษฎี octrees จะให้ขอบเขตปริมาตรอย่างง่ายซึ่งมีประโยชน์สำหรับการพิสูจน์รันไทม์ O (n) ของ FMM นอกเหนือจากเหตุผลทางทฤษฎีนี้จะมีประโยชน์ในการใช้ Octree มากกว่าโครงสร้างต้นไม้หรือโครงสร้างข้อมูลทั้งสามแบบ? การกำหนดรายการการโต้ตอบอาจทำได้ง่ายกว่าด้วย octree เนื่องจากเซลล์จะทราบเพื่อนบ้านที่อยู่ใกล้เคียง อย่างไรก็ตามรายการปฏิสัมพันธ์ไม่จำเป็นใช้ traversal ต้นไม้แบบไดนามิกมากขึ้นเช่นแบบ Dual ต้นไม้ข้าม อีกทางเลือกหนึ่งจะเป็นต้นไม้ kd ข้อเสียทางทฤษฎีข้อหนึ่งที่เป็นไปได้คือการก่อสร้างนั้นต้องการการดำเนินการหาค่ามัธยฐานแพง อย่างไรก็ตามมีหลายรุ่นของ kd-trees ที่ไม่จำเป็นต้องค้นหาค่ามัธยฐานในระหว่างการก่อสร้างแม้ว่าจะมีการแบ่งพื้นที่ที่มีประสิทธิภาพน้อยกว่าก็ตาม การใช้งานอย่างชาญฉลาดต้นไม้ kd นั้นง่ายมาก ทางเลือกมากยิ่งรุนแรงมากขึ้นอาจจะเป็นR-ต้นไม้ ดังนั้นคำถามของฉันคืออะไรเกี่ยวกับ Octrees ที่ทำให้พวกเขาเป็นทางเลือกที่ดีที่สุดสำหรับ FMM
18 algorithms 

3
การแก้ปัญหาการเพิ่มประสิทธิภาพที่ไม่เชิงเส้นแบบไม่มีข้อ จำกัด บน GPU
ฉันกำลังพยายามแก้ปัญหาการเพิ่มประสิทธิภาพแบบไม่เชิงเส้นที่ไม่มีข้อ จำกัด บน GPU (CUDA) ฟังก์ชันวัตถุประสงค์เป็นฟังก์ชันที่ไม่เชิงเส้นอย่างราบรื่นและการไล่ระดับสีนั้นค่อนข้างถูกในการคำนวณเชิงวิเคราะห์ดังนั้นฉันไม่จำเป็นต้องกังวลกับการประมาณเชิงตัวเลข ฉันต้องการที่จะแก้ปัญหานี้โดยส่วนใหญ่ fp32 maths ops (ด้วยเหตุผลต่าง ๆ ) ดังนั้นวิธีการเพิ่มประสิทธิภาพแบบไม่เชิงเส้นที่มีประสิทธิภาพมากขึ้นเมื่อเทียบกับข้อผิดพลาดในการปัดเศษขึ้นในขณะที่มีประสิทธิภาพที่ดี? (เช่นคอนจูเกตการไล่ระดับสี / เสมือนนิวตัน / ภูมิภาคที่เชื่อถือได้) มีใครเคยลองใช้ BFGS บน GPU ด้วยผลลัพธ์ที่ดีหรือไม่? BTW, Hessian ถ้าจำเป็นมีขนาดค่อนข้างเล็กในกรณีของฉัน (โดยทั่วไป <64x64) แต่ฉันต้องแก้ปัญหาการเพิ่มประสิทธิภาพขนาดเล็กหลายพันรายการพร้อมกันนี้

1
เวฟเล็ตสามารถนำไปใช้กับ PDE ได้อย่างไร?
ฉันต้องการเรียนรู้วิธีการใช้วิธีการเวฟเล็ตกับ PDE แต่น่าเสียดายที่ฉันไม่รู้จักแหล่งข้อมูลที่ดีในการเรียนรู้เกี่ยวกับหัวข้อนี้ ดูเหมือนว่าการนำเวฟเล็ตจำนวนมากมุ่งเน้นไปที่ทฤษฎีการสอดแทรกเช่นการรวบรวมสัญญาณโดยการซ้อนทับของเวฟเล็ตจำนวนน้อยโดยเฉพาะ บางครั้งจะมีการพูดถึงแอปพลิเคชัน PDE ฉันสนใจบทความสรุปที่ดีสำหรับผู้ที่เคยเห็น WFT แต่ไม่มีความรู้เพิ่มเติมในหัวข้อนั้น บทสรุปที่ดีก็น่าสนใจเช่นกันแน่นอนถ้าคุณคิดว่าสามารถทำได้ ฉันสนใจเป็นพิเศษในการสร้างความประทับใจว่าคำถามประเภทใดที่ปรากฏโดยทั่วไป ยกตัวอย่างเช่นฉันรู้ว่าองค์ประกอบ จำกัด โดยทั่วไปจะใช้กับ PDE บนโดเมนที่มีขอบเขต Lipschitz ซึ่งเป็นคำถามทั่วไปในการเลือกพื้นที่ ansatz (การทำตาม, ไม่สอดคล้อง, เรขาคณิตและ combinatorics) วิธีการที่ทฤษฎีคอนเวอร์เจนซ์จัดตั้งขึ้น ( จริงๆแล้วทฤษฎี Galerkin ไม่ควรแตกต่างกันมากนักสำหรับเวฟเล็ต) และฉันมีสัญชาตญาณบางอย่างที่สิ่งทางคณิตศาสตร์เป็นไปได้ในการนำไปใช้ มุมมองของนกบนเวฟเล็ตสำหรับ PDE จะเป็นประโยชน์มากสำหรับฉัน
18 pde  wavelet 

2
รูปสี่เหลี่ยมที่ไม่มีโครงสร้างตาข่าย?
อัลกอริธึมที่ดีที่สุด (ความสามารถในการปรับขยายและประสิทธิภาพ) ในการสร้าง quad mesh ที่ไม่มีโครงสร้างใน 2D คืออะไร? ฉันจะหา quad-generator ที่ไม่มีโครงสร้างได้ดีจากที่ไหน? (แนะนำโอเพนซอร์ซ)

1
การยกเลิกภัยพิบัติใน Logum
ฉันพยายามใช้ฟังก์ชันต่อไปนี้ในทศนิยมที่มีความแม่นยำสองเท่าและมีข้อผิดพลาดสัมพัทธ์ต่ำ: l o g s u m (x,y) = บันทึก( ประสบการณ์( x ) + exp( y) )logsum(x,y)=log⁡(exp⁡(x)+exp⁡(y))\mathrm{logsum}(x,y) = \log(\exp(x) + \exp(y)) สิ่งนี้ถูกใช้อย่างกว้างขวางในแอปพลิเคชันทางสถิติเพื่อเพิ่มความน่าจะเป็นหรือความหนาแน่นของความน่าจะเป็นที่แสดงในพื้นที่บันทึก แน่นอนว่าหรือสามารถโอเวอร์โฟลว์หรืออันเดอร์โฟล์วได้ง่ายซึ่งอาจจะไม่ดีเพราะพื้นที่บันทึกถูกใช้เพื่อหลีกเลี่ยงการมีอันเดอร์โฟล์ในตอนแรก นี่เป็นวิธีแก้ปัญหาทั่วไป:exp ( y )ประสบการณ์( x )exp⁡(x)\exp(x)ประสบการณ์( y)exp⁡(y)\exp(y) l o g s u m (x,y) = x + l o g 1 p ( exp( y- x ) …

4
วิธีการใดสามารถมั่นใจได้ว่าปริมาณทางกายภาพยังคงเป็นบวกตลอดการจำลอง PDE
ปริมาณทางกายภาพเช่นความดันความหนาแน่นพลังงานอุณหภูมิและความเข้มข้นควรเป็นค่าบวกเสมอ แต่วิธีการเชิงตัวเลขบางครั้งก็คำนวณค่าลบในระหว่างกระบวนการแก้ปัญหา สิ่งนี้ไม่เป็นไรเพราะสมการจะคำนวณค่าที่ซับซ้อนหรือไม่มีที่สิ้นสุด วิธีการเชิงตัวเลขใดที่สามารถใช้เพื่อรับประกันว่าปริมาณเหล่านี้ยังคงเป็นบวก วิธีใดที่มีประสิทธิภาพมากที่สุด

4
มีห้องสมุดเอนกประสงค์สำหรับการปรับตารางตาข่ายแบบปรับโครงสร้างหรือไม่?
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ Adaptive mesh refinement (AMR) เป็นเทคนิคที่ใช้กันทั่วไปในการจัดการกับปัญหาของสเกลอวกาศที่หลากหลายในการแก้ปัญหาเชิงตัวเลขของ PDE มีไลบรารีวัตถุประสงค์ทั่วไปสำหรับ AMR บนกริดที่มีโครงสร้างอย่างไร เป็นการดีที่ฉันต้องการบางสิ่งบางอย่างในจิตวิญญาณของ PETSc ที่ห้องสมุดจัดการเพียงตาข่ายแบบปรับตัวและฉันให้ฟิสิกส์และการแยกส่วน (ความแตกต่าง / ปริมาณ / องค์ประกอบ) ห้องสมุดที่เหมาะจะเป็น แบบแยกส่วน : ไม่บอกว่าฉันจะเขียนรหัสหรือโครงสร้างข้อมูลของฉันมากเกินไป ทั่วไป : ไม่สนใจว่าฉันใช้การแยกประเภทแบบใด มีประสิทธิภาพ : ไม่เสียค่าใช้จ่ายมากเกินไป ขนานและปรับขนาดได้สูง ไลบรารีที่เหมาะสมกับชุดย่อยของเกณฑ์เหล่านี้จะยังคงเป็นที่สนใจ ภาคผนวก : ฉันรู้ว่าแพ็คเกจ AMR ที่กว้างขวางของDonna Calhounแต่ฉันไม่รู้ว่าอันไหน (ถ้ามี) ที่ตรงกับเกณฑ์ด้านบน ดังนั้นฉันจึงสนใจที่จะได้ยินจากผู้ที่มีประสบการณ์จริงกับแพ็คเกจเพิ่มเติมหนึ่งหรือ (ยังดีกว่า) แพ็คเกจเกี่ยวกับวิธีที่พวกเขาวัดค่าในเงื่อนไขเหล่านั้น

2
F2Py กับอาร์เรย์รูปร่างที่จัดสรรและสันนิษฐาน
ฉันต้องการใช้f2pyกับ Fortran ที่ทันสมัย โดยเฉพาะอย่างยิ่งฉันพยายามทำให้ตัวอย่างพื้นฐานต่อไปนี้ทำงาน นี่คือตัวอย่างที่มีประโยชน์น้อยที่สุดที่ฉันสามารถสร้างได้ ! alloc_test.f90 subroutine f(x, z) implicit none ! Argument Declarations ! real*8, intent(in) :: x(:) real*8, intent(out) :: z(:) ! Variable Declarations ! real*8, allocatable :: y(:) integer :: n ! Variable Initializations ! n = size(x) allocate(y(n)) ! Statements ! y(:) = 1.0 z …
18 python  fortran 

5
การพัฒนาซอฟต์แวร์คำนวณทางวิทยาศาสตร์แบบขนาน
ฉันต้องการพัฒนาซอฟต์แวร์การคำนวณทางวิทยาศาสตร์แบบขนานตั้งแต่เริ่มต้น ฉันต้องการความคิดเกี่ยวกับภาษาที่จะเริ่มต้น โปรแกรมนี้เกี่ยวข้องกับการอ่าน / เขียนข้อมูลไปยังไฟล์ txt และทำการคำนวณอย่างหนักพร้อม ๆ กันโดยมี factorizations LU จำนวนมากและการใช้ตัวแก้ปัญหาเชิงเส้นแบบกระจัดกระจาย ทางเลือกที่ฉันคิดคือ Fortran 2003/2008 กับ OpenMP หรือ co-array, C ++ กับ openmp cilk + หรือ TBB, python ข้อเสนอแนะอื่น ๆ เอกสารยินดีต้อนรับ! ฉันรู้ดีมาก C, Fortran และ Java (ตามลำดับ) ฉันได้ทำสคริปต์บางอย่างในหลาม แต่เป็นสิ่งพื้นฐาน ฉันรู้ว่าฟอร์แทรนนั้นเร็วมาก แต่ยากที่จะรักษาและขนานกัน C ++ บอกว่าช้าถ้าคุณใช้ไลบรารี่ภายนอกและอื่น ๆ ฉันชอบไพ ธ อน แต่เป็นเรื่องจริงไหมที่จะเขียนซอฟต์แวร์ระดับอุตสาหกรรมเต็มรูปแบบ? ซอฟต์แวร์ต้องสามารถจัดการข้อมูลจำนวนมากและมีประสิทธิภาพด้วยการคำนวณทางวิทยาศาสตร์ …

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