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

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

3
การคำนวณซีรีย์ oscillatory เล็กน้อยเพื่อความแม่นยำสูง?
สมมติว่าฉันมีฟังก์ชั่นที่น่าสนใจดังต่อไปนี้: มันมีคุณสมบัติที่ไม่พึงประสงค์บางอย่างเช่นอนุพันธ์อย่างต่อเนื่องไม่เป็นที่หลายเหตุผลของπ ฉันสงสัยว่าไม่มีรูปแบบปิดอยู่ฉ( x ) = ∑k ≥ 1cosk xk2( 2 - cos)k x ).f(x)=∑k≥1cos⁡kxk2(2−cos⁡kx). f(x) = \sum_{k\geq1} \frac{\cos k x}{k^2(2-\cos kx)}. ππ\pi ฉันสามารถคำนวณได้โดยการคำนวณผลรวมบางส่วนและใช้การคาดการณ์ของ Richardson แต่ปัญหาคือมันช้าเกินไปที่จะคำนวณฟังก์ชันให้เป็นจำนวนทศนิยมที่ดี (เช่น 100 น่าจะดี) มีวิธีที่สามารถจัดการกับฟังก์ชั่นนี้ได้ดีขึ้นหรือไม่? นี่คือพล็อตของมีบางสิ่งประดิษฐ์:ฉ'( πx )f′(πx)f'(\pi x)

4
คำแนะนำใด ๆ สำหรับกรอบการทดสอบหน่วยเข้ากันได้กับรหัส / ไลบรารีที่ใช้ MPI
โดยปกติฉันเขียนรหัสซีเรียลและเมื่อฉันฉันเขียนการทดสอบหน่วยด้วยกรอบการทดสอบแบบ xUnit (MATLAB xUnit, PyUnit / nose หรือกรอบการทดสอบ C ++ ของ Google) จากการค้นหาโดยคร่าวๆของ Google ฉันไม่เห็นว่าโค้ดทดสอบหน่วยผู้ปฏิบัติงานที่ใช้ MPI มากน้อยเพียงใด มีวิธีปฏิบัติที่ดีที่สุดสำหรับสิ่งนั้นหรือไม่? เปรียบเทียบกับกลยุทธ์สำหรับการทดสอบหน่วยและการพัฒนาที่ขับเคลื่อนด้วยการทดสอบฉันกำลังมองหาคำตอบที่เกี่ยวข้องกับซอฟต์แวร์ที่ฉันควรใช้สำหรับกรอบการทดสอบ (ถ้ามี) คำตอบอาจเป็น "ม้วนรหัสของคุณเอง" ซึ่ง ตัวอย่างกรณีของรหัสการทดสอบที่กำหนดเองจะเป็นประโยชน์) สิ่งที่ฉันกำลังมองหาเพื่อทดสอบส่วนใหญ่คือการประเมินฟังก์ชั่นทางด้านขวาและกิจวัตรประจำวันของ Jacobian matrix สำหรับเวลาที่จะรวม PDEs แบบกึ่งแยกส่วน ฉันจะใช้ PETSc ดังนั้นถ้ามีอะไรเฉพาะ PETSc ที่จะเป็นประโยชน์นอกเหนือไปจากกรอบการทดสอบทั่วไปมากขึ้น ชี้แจงการแก้ไข: ตัวอย่างจะอยู่ใน${PETSC_DIR}/src/ts/examples/tutorials/ex2.cที่ที่ฉันต้องการทดสอบบางสิ่งเช่นRHSFunction(การประเมินฟังก์ชั่นด้านขวา) และRHSJacobian(การประเมินเมทริกซ์จาโคเบียน) ฉันจะทดสอบกับค่าที่ทราบสำหรับด้านขวาที่ประกอบและเมทริกซ์ Jacobian ที่ประกอบขึ้น ฉันสามารถรับค่าเหล่านี้ในเชิงวิเคราะห์สำหรับอินสแตนซ์ปัญหาง่ายๆ ฟังก์ชั่นเหล่านี้เป็นฟังก์ชั่นเฉพาะแอปพลิเคชันที่จะไม่ใช้งานฟังก์ชั่นระดับแอปพลิเคชันอื่น ๆ แต่พวกเขาสามารถเรียก MPI ถ้าการประกอบเวกเตอร์หรือเมทริกซ์จะทำภายในฟังก์ชัน (เช่นในตัวอย่าง PETSc ที่เชื่อมโยงด้านบน) …

3
มีประโยชน์ในการรวบรวม LAPACK จากแหล่งที่มาเมื่อเทียบกับการติดตั้งแพคเกจที่สร้างไว้ล่วงหน้าจาก Ubuntu หรือไม่
ฉันรู้ว่า ATLAS สามารถเพิ่มประสิทธิภาพตัวเองสำหรับเครื่องที่รวบรวมและทำให้เกิดประโยชน์สูงสุดโดยรวบรวมจากแหล่งที่มา มีประโยชน์ในการรวบรวม LAPACK จากแหล่งที่มา? มันจะง่ายกว่าการติดตั้งแพ็คเกจที่สร้างไว้ล่วงหน้า

5
คำนวณ
ฟังก์ชั่นมีความแปลกประหลาดที่อยู่ใกล้กับx = 0 ความแปลกประหลาดนั้นสามารถยกได้แม้ว่า: สำหรับx = 1 , หนึ่งควรมีf ( x ) = 1 , เนื่องจาก e x = ∑ k = 0 x kf:x↦(ex−1)/xf:x↦(ex−1)/xf \colon x \mapsto (e^x-1)/xx=0x=0x = 0x=1x=1x = 1ฉ( x ) = 1f(x)=1f(x) = 1 และ (ex-1)/x=∑k=1x k - 1อีx= ∑k = 0xkk !ex=∑k=0xkk! e^x = …
13 c++  c 

1
CFD: ลำดับขั้นตอนการส่งผลกระทบต่อการแก้ไขปัญหาของรัฐที่มั่นคงหรือไม่? ถ้าใช่ทำไม
ฉันพยายามที่จะแก้สมการ MHD ในอุดมคติโดยใช้วิธีกึ่งต่อเนื่อง, การสร้างเชิงพื้นที่ ENO และการก้าวข้ามเวลา TVD RK ฉันได้รับวิธีแก้ไขปัญหาของรัฐที่แตกต่างกันด้วยลำดับเวลาที่ต่างกัน ถูกต้องหรือไม่

2
“ เทคนิคปัจจัยร่วม” ในการแปลงเมทริกซ์มีความสำคัญในทางปฏิบัติหรือไม่?
ชื่อเป็นคำถาม เทคนิคนี้เกี่ยวข้องกับการใช้ "เมทริกซ์ของแฟคเตอร์" หรือ "adjugate เมทริกซ์" และให้สูตรที่ชัดเจนสำหรับส่วนประกอบของค่าผกผันของเมทริกซ์จตุรัส มันไม่ใช่เรื่องง่ายที่จะทำด้วยมือสำหรับเมทริกซ์ที่มีขนาดใหญ่กว่าการพูดที่3×33×33\times 3 3 สำหรับn×nn×nn\times nเมทริกซ์จะต้องมีการคำนวณปัจจัยของเมทริกซ์ของตัวเองและการคำนวณn2n2n^2ปัจจัยของ(n−1)×(n−1)(n−1)×(n−1)(n-1)\times(n-1)การฝึกอบรม ดังนั้นฉันเดาว่ามันไม่ได้มีประโยชน์สำหรับแอปพลิเคชัน แต่ฉันต้องการการยืนยัน ฉันไม่ได้ถามเกี่ยวกับความสำคัญทางทฤษฎีของเทคนิคในการพิสูจน์ทฤษฎีบทเกี่ยวกับเมทริกซ์

3
อะไรคือหลักการพื้นฐานที่อยู่เบื้องหลังการสร้างตาข่ายแบบเคลื่อนที่?
ฉันสนใจที่จะใช้ตาข่ายแบบเคลื่อนไหวสำหรับปัญหาการแพร่กระจาย วิธีการเคลื่อนย้ายแบบ Adaptive Moving Meshเป็นตัวอย่างที่ดีของวิธีการนี้สำหรับสมการของเบอร์เกอร์ใน 1D โดยใช้ผลต่างอัน จำกัด ใครบ้างที่จะสามารถนำเสนอตัวอย่างที่ใช้งานได้เกี่ยวกับการแก้สมการการแพร่กระจายแบบ 1D โดยใช้ความแตกต่างอัน จำกัด กับตาข่ายที่กำลังเคลื่อนที่ ตัวอย่างเช่นในรูปแบบอนุรักษ์นิยมสมการคือ ยูเสื้อ= ( a ( x ) u + dยูx)xut=(a(x)u+dux)x u_t = (a(x)u + du_x)_x โดยที่คือความเร็ว (ฟังก์ชันของอวกาศ) เงื่อนไขเริ่มต้นสามารถระบุ (ตัวอย่าง) สปีชีส์การไหลย้ายจากซ้ายไปขวา (เช่นตามแนวท่อ) ที่ซึ่งเงื่อนไขเริ่มต้นมีการไล่ระดับสีที่คมชัดu ( 0 , x )a ( x )a(x)a(x)คุณ( 0 , x )u(0,x)u(0,x) ปัญหาการกระจายตัวของตาข่ายแบบเคลื่อนไหวควรจะแก้ไขได้อย่างไร (อาจเป็นไปได้กับอัลกอริทึมของ De …

4
ชุดทดสอบสำหรับแอปพลิเคชันตัวเลขใน C ++?
เมื่อเร็ว ๆ นี้ฉันได้ผลักดันกลุ่มของฉันให้รวมการทดสอบเพิ่มเติมเมื่อเขียนรหัสของพวกเขา มีข้อบกพร่องที่สำคัญหลายอย่างที่ใช้เวลานานกว่าที่จะพูดมากกว่านั้นเป็นสิ่งจำเป็นเพราะเราไม่มีระบอบการทดสอบที่ดี อย่างไรก็ตามฉันสงสัยว่าการมีเครื่องมือที่เหมาะสมในการทำให้กระบวนการเป็นอัตโนมัติ (หรือช่วยปรับปรุงประสิทธิภาพ) นั้นจะมีประโยชน์อย่างแน่นอน ในทางกลับกันฉันไม่ทราบตัวเลือกต่างๆสำหรับชุดทดสอบ C ++ และวิธีการตัดสินใจระหว่างกัน มีแนวทางสำหรับสิ่งที่ต้องค้นหา - และมีสิ่งใดบ้างที่มุ่งเน้นไปที่แอปพลิเคชันตัวเลขโดยเฉพาะหรือไม่
13 testing 

1
วิธีเฉพาะสำหรับปัญหาค่าลักษณะเฉพาะทั่วไปที่ซับซ้อนแบบสมมาตร
ฉันต้องแก้ปัญหาค่าลักษณะเฉพาะทั่วไปโดยที่AและBมีทั้งสามด้าน, Bเป็นสมมาตรบวกแน่นอนและจริง แต่Aเป็นสมมาตรเชิงซ้อนเท่านั้น (ไม่ใช่ชัดเจนหรือ Hermitian) นอกจากนี้ฉันต้องการ eigendecomposition เต็ม ขณะนี้ฉันเพิ่งเรียกอีเจนซอลเวอร์ทั่วไปของLapack แต่ฉันสงสัยว่ามีวิธีที่ดีกว่าสำหรับปัญหาที่มีโครงสร้างสูงนี้โดยเฉพาะหรือไม่ โดยเฉพาะอย่างยิ่งการมีโค้ดที่ใช้ได้อย่างอิสระ (C ++) จะดีที่สุดAx=λBxAx=λBxAx = \lambda BxAAABBBBBBAAAZGGEV

2
ความสับสนเกี่ยวกับกฎของ Armijo
ฉันมีความสับสนเกี่ยวกับกฎ Armijo ที่ใช้ในการค้นหาบรรทัด ฉันอ่านการติดตามการค้นหาย้อนหลัง แต่ไม่เข้าใจว่ากฎ Armijo นี้เกี่ยวกับอะไร ทุกคนสามารถอธิบายได้ว่ากฎของ Armijo คืออะไร? วิกิพีเดียดูเหมือนจะอธิบายไม่ดี ขอบคุณ

3
ความสับสนเกี่ยวกับปัญหาการตรวจจับแบบบีบอัด
ผมอ่านอ้างอิงบางรวมทั้งนี้ ฉันสับสนว่าการเพิ่มประสิทธิภาพการตรวจจับปัญหาการบีบอัดสร้างและพยายามที่จะแก้ปัญหา ใช่ไหม minimizesubject to∥x∥1Ax=bminimize‖x‖1subject toAx=b\begin{array}{ll} \text{minimize} & \|x\|_1\\ \text{subject to} & Ax=b\end{array} และ / หรือ minimizesubject to∥x∥0Ax=bminimize‖x‖0subject toAx=b\begin{array}{ll} \text{minimize} & \|x\|_0\\ \text{subject to} & Ax=b\end{array} หรือ / และอย่างอื่น?

5
การคำนวณโครงสร้าง sparsity สำหรับเมทริกซ์องค์ประกอบ จำกัด
คำถาม: มีวิธีการใดในการคำนวณโครงสร้าง sparsity ของเมทริกซ์ไฟท์องค์ประกอบที่แม่นยำและมีประสิทธิภาพ ข้อมูล: ฉันกำลังทำงานกับตัวแก้สมการความดัน Poisson โดยใช้วิธีของ Galerkin ที่มีพื้นฐานกำลังสองของลากรองจ์เขียนใน C และใช้ PETSc สำหรับการจัดเก็บเมทริกซ์แบบกระจัดกระจายและกิจวัตร KSP ในการใช้ PETSc อย่างมีประสิทธิภาพฉันจำเป็นต้องจัดสรรหน่วยความจำล่วงหน้าสำหรับเมทริกซ์ความแข็งระดับโลก ขณะนี้ฉันกำลังประกอบ mock เพื่อประเมินจำนวนที่ไม่ใช่ศูนย์ต่อแถวดังต่อไปนี้ (pseudocode) int nnz[global_dim] for E=1 to NUM_ELTS for i=1 to 6 gi = global index of i if node gi is free for j=1 to 6 gj = global …

3
ทำความเข้าใจกับ "อัตราการบรรจบกัน" สำหรับวิธีการวนซ้ำ
ตามวิกิพีเดียอัตราการบรรจบกันแสดงเป็นอัตราส่วนเฉพาะของเวกเตอร์บรรทัดฐาน ฉันพยายามที่จะเข้าใจความแตกต่างระหว่างอัตรา "เชิงเส้น" และ "กำลังสอง" ณ จุดต่าง ๆ ของเวลา (โดยทั่วไป "ตอนเริ่มต้น" ของการวนซ้ำและ "ท้าย") อาจกล่าวได้ว่า: อีk + 1ek+1e_{k+1}xk + 1xk+1x_{k+1}∥ ek∥‖ek‖\|e_k\| กับสมการกำลังสองบรรทัดฐานของข้อผิดพลาดของiteration x_ {k + 1}ล้อมรอบด้วย\ | e_k \ | ^ 2 x k + 1 ‖ e k ‖ 2อีk + 1ek+1e_{k+1}xk + 1xk+1x_{k+1}∥ ek∥2‖ek‖2\|e_k\|^2 การตีความดังกล่าวหมายถึงว่ามีจำนวนน้อย (จำนวนน้อย) วนซ้ำของอัลกอริธึมเชิงเส้นบรรจบเชิงเส้น A1 (การกำหนดค่าเริ่มต้นแบบสุ่มสันนิษฐาน) …

2
กำหนดเงื่อนไขการทำงานร่วมกันสำหรับวิธีไฟไนต์องค์ประกอบผสมในสมการสโตกส์
\newcommand{\v}[1]{\boldsymbol{#1}} สมมติว่าเรามีสมการโมเดล Stokes flow ดังนี้ ที่มีความหนืดν(x)เป็นฟังก์ชั่นสำหรับมาตรฐานองค์ประกอบ จำกัด ผสมบอกว่าเราใช้คู่เสถียรภาพ: Crouzeix-Raviart พื้นที่Vชั่วโมงสำหรับความเร็วUและองค์ประกอบที่ชาญฉลาดอย่างต่อเนื่องพื้นที่Sชั่วโมงสำหรับความดันพี, เรามีรูปแบบที่หลากหลายดังต่อไปนี้:{−div(ν∇u)+∇pdivu=f=0{−div(ν∇u)+∇p=fdivu=0 \tag{1} \left\{ \begin{aligned} -\mathrm{div}(\nu \nabla \v{u}) + \nabla p &= \v{f} \\ \mathrm{div} \v{u} &= 0 \end{aligned} \right.ν(x)ν(x)\nu(x)VhVh\v{V}_huu\v{u}ShShS_hppp L([u,p],[v,q])=∫Ων∇u:∇v−∫Ωqdivu−∫Ωpdivv=∫Ωf⋅v∀v×q∈Vh×ShL([u,p],[v,q])=∫Ων∇u:∇v−∫Ωqdivu−∫Ωpdivv=∫Ωf⋅v∀v×q∈Vh×Sh \mathcal{L}([\v{u},p],[\v{v},q]) = \int_{\Omega} \nu \nabla\v{u}:\nabla \v{v} -\int_{\Omega} q\mathrm{div} \v{u} -\int_{\Omega} p\mathrm{div} \v{v} =\int_{\Omega} \v{f}\cdot \v{v} \quad \forall \v{v}\times q\in \v{V}_h\times …

3
การใช้หน่วยความจำใน fortran เมื่อใช้อาร์เรย์ของชนิดที่ได้รับกับตัวชี้
ในโปรแกรมตัวอย่างนี้ฉันกำลังทำสิ่งเดียวกัน (อย่างน้อยฉันก็คิดอย่างนั้น) ในสองวิธีที่แตกต่างกัน ฉันใช้งานบนพีซีลีนุกซ์และตรวจสอบการใช้งานหน่วยความจำด้วยด้านบน การใช้ gfortran ฉันพบว่าในวิธีแรก (ระหว่าง "1" และ "2") หน่วยความจำที่ใช้คือ 8.2GB ในขณะที่วิธีที่สอง (ระหว่าง "2" และ "3") การใช้หน่วยความจำคือ 3.0GB ด้วยคอมไพเลอร์ของ Intel ความแตกต่างก็ยิ่งใหญ่กว่า: 10GB เทียบกับ 3GB นี่ดูเหมือนจะเป็นการลงโทษที่มากเกินไปสำหรับการใช้พอยน์เตอร์ ทำไมสิ่งนี้ถึงเกิดขึ้น program test implicit none type nodesType integer:: nnodes integer,dimension(:),pointer:: nodes end type nodesType type nodesType2 integer:: nnodes integer,dimension(4):: nodes end type nodesType2 …

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