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

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

1
รูปแบบตัวเลขที่เป็นไปได้สำหรับสมการการแพร่กับคำที่ไม่เป็นเชิงเส้นคืออะไร?
สำหรับบางโดเมนนูนง่ายใน 2D, เรามีบางU ( x )ความพึงพอใจของสมการต่อไปนี้: - d ฉันโวลต์ ( ∇ ยู) + คยูn = ฉ บาง Dirichlet และ / หรือนอยมันน์ขอบเขตเงื่อนไข เพื่อความรู้ของฉันการใช้วิธีการของนิวตันในพื้นที่องค์ประกอบ จำกัด จะเป็นวิธีที่ตรงไปตรงมาในการแก้สมการเชิงตัวเลขΩΩ\Omegaคุณ( x )ยู(x)u(x)- d i v ( A ∇ u ) + c un= f-dผมโวลต์(A∇ยู)+คยูn=ฉ -\mathrm{div}(A\nabla u)+cu^n = f คำถามของฉันคือ: (1) มีทฤษฎี Sobolev สำหรับความเป็นอยู่ที่ดีของการกำหนดความแปรปรวนที่สอดคล้องกันของสมการนี้โดยสมมติว่าเงื่อนไขขอบเขต Dirichlet เป็นศูนย์หรือไม่? ถ้าเป็นเช่นนั้น …

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

6
ความแตกต่างแน่นอนบนโดเมนที่มีขอบเขตไม่สม่ำเสมอ
ใครช่วยฉันค้นหาหนังสือเกี่ยวกับวิธีแก้ปัญหาเชิงตัวเลข (วิธี จำกัด และวิธี Crank – Nicolson) ของ Poisson และสมการการแพร่รวมถึงตัวอย่างในเรขาคณิตที่ผิดปกติเช่นโดเมนที่ประกอบด้วยพื้นที่ระหว่างสี่เหลี่ยมผืนผ้าและวงกลม (โดยเฉพาะหนังสือหรือลิงค์ ในตัวอย่างรหัส MATLAB ในกรณีนี้)

2
วิธีทำงานกับพอยน์เตอร์ฟังก์ชั่นใน Fortran ในโปรแกรมวิทยาศาสตร์
นี่คือการใช้งานทั่วไปของตัวชี้ฟังก์ชันใน C. ฉันต้องการทำสิ่งที่คล้ายกันใน Fortran ฉันมีความคิดบางอย่าง แต่ฉันต้องการที่จะรู้ว่ามีวิธีที่ยอมรับได้หรือไม่ พอยน์เตอร์ของฟังก์ชั่นและบริบทที่ผ่านเข้ามาโดยผู้ใช้จะถูกเก็บไว้จากนั้นเรียกในภายหลัง typedef PetscErrorCode (*TSIFunction)(TS,PetscReal,Vec,Vec,Vec,void*); PetscErrorCode TSSetIFunction(TS ts,Vec res,TSIFunction f,void *ctx); ฟังก์ชั่นของผู้ใช้จะถูกเรียกคืนโดยใช้บริบทของพวกเขาในเวลาต่อมา ใน PETSc พวกเขายังใช้ประโยชน์จากตารางตัวชี้ฟังก์ชัน -> ทุกอย่างเป็นปลั๊กอินดังนั้นผู้ใช้สามารถลงทะเบียนการใช้งานของตัวเองและพวกเขาเป็นชั้นหนึ่ง #define PCGAMG "gamg" PCRegisterDynamic(PCGAMG ,path,"PCCreate_GAMG",PCCreate_GAMG); สิ่งนี้ลงทะเบียนรูทีนการสร้างใน "FList" จากนั้น PCSetFromOptions () จะเสนอความสามารถในการเลือกวิธีนี้เมื่อเทียบกับตัวเลือกอื่น ๆ หากระบบรองรับการโหลดแบบไดนามิกคุณสามารถข้ามการพึ่งพาเวลาคอมไพล์ในสัญลักษณ์ PCCreate_GAMG และเพิ่งผ่าน NULL จากนั้นสัญลักษณ์จะถูกค้นหาในไลบรารีที่แบ่งใช้ในขณะใช้งาน โปรดทราบว่าหนึ่งขั้นตอนนี้เกินกว่า "โรงงาน" มันเป็นสิ่งที่ตรงกันข้ามกับอุปกรณ์ควบคุมที่คล้ายกับสิ่งที่ Martin Fowler เรียกว่า "service locator" หมายเหตุ: สิ่งนี้เกิดขึ้นในการติดต่อส่วนตัวของฉันกับเจดบราวน์ที่ซึ่งเขาถามคำถามนี้ให้ฉัน ฉันตัดสินใจที่จะ …
11 petsc  fortran 

5
มันจะดีกว่าที่จะมีสมาธิในการศึกษาคณิตศาสตร์หรือการคำนวณ?
พร้อมกันกับการวิจัยของฉันเกี่ยวกับวิธี Subspace ของ Krylov ฉันมีตัวเลือกในการสำรวจคณิตศาสตร์เบื้องหลัง HPC ล่วงหน้าหรือทฤษฎีการคำนวณ (ฮาร์ดแวร์, OS, คอมไพเลอร์ ฯลฯ ) ขณะนี้ฉันรู้ว่าทั้งสองพอที่จะเพียงแค่ได้รับโดย ตัวอย่างเช่นฉันรู้วิธีหาสมการสำหรับ CG และพื้นฐานของวิธีการวนซ้ำ แต่ฉันไม่รู้เรื่องรายละเอียดและสิ่งที่ซับซ้อนกว่าเช่น Preconditioners และ Convergence ในทำนองเดียวกันฉันรู้พื้นฐานของวิธีไฟไนต์เอลิเมนต์ (รูปแบบที่อ่อนแอรูปแบบที่ไม่อ่อนแอสิ่งต่าง ๆ เช่นโคโดเมนและ Galerkin และอื่น ๆ ) แต่จะไม่ทราบความลึกของมัน ในส่วนของการคำนวณฉันรู้วิธีการเขียนโค้ดอย่างจริงจังในภาษาที่เป็นไปได้ทั้งหมดและสามารถใช้ OpenMP และ MPI ได้ดีพอสมควร ฉันไม่เข้าใจฮาร์ดแวร์และแคชทั้งหมดได้ดี คำถามของฉันคือสิ่งที่เราควรมุ่งเน้น: คณิตศาสตร์หรือการคำนวณ? พวกเขาแยกกันไม่ออกใน HPC หรือไม่ มันแนะนำให้หนึ่งเรียนรู้เกี่ยวกับหนึ่งและไม่อื่น ๆ แก้ไข: ฉันกำลังเรียนวิชาเอกวิศวกรรมเครื่องกล (ซึ่งฉันเสียใจ) และมีหลักสูตรด้านวิศวกรรมและการคำนวณมากมาย (ของเหลวการถ่ายเทความร้อนและอื่น ๆ ) ฉันจะเข้าร่วมบัณฑิตวิทยาลัยสำหรับ …

1
วิธีการกำหนดเมทริกซ์มวล lumped ใน FEM
เมื่อการแก้ปัญหา PDE ขึ้นอยู่กับเวลาโดยใช้วิธีไฟไนต์เอลิเมนต์เช่นสมการความร้อนถ้าเราใช้การเลื่อนเวลาอย่างชัดเจนดังนั้นเราต้องแก้ระบบเชิงเส้นเนื่องจากเมทริกซ์มวล ตัวอย่างเช่นถ้าเรายึดติดกับตัวอย่างสมการความร้อน ∂ยู∂เสื้อ= c ∇2ยู∂u∂t=c∇2u\frac{\partial{u}}{\partial{t}} = c\nabla{}^{2}u จากนั้นใช้ forward euler ที่เราได้รับ M( คุณn + 1- คุณndเสื้อ) = - c KยูnM(un+1−undt)=−cKunM(\frac{u^{n+1}-u^{n}}{dt}) = -cKu^{n} และแม้ว่าเราจะใช้รูปแบบการก้าวข้ามเวลาที่ชัดเจนเรายังต้องแก้ระบบเชิงเส้น เห็นได้ชัดว่าเป็นปัญหาที่สำคัญเนื่องจากข้อได้เปรียบหลักของการใช้รูปแบบที่ชัดเจนคือไม่จำเป็นต้องแก้ระบบเชิงเส้น ฉันได้อ่านแล้วว่าวิธีทั่วไปในการแก้ไขปัญหานี้คือแทนที่จะใช้เมทริกซ์มวล "ที่มีก้อน" ซึ่งเปลี่ยนเมทริกซ์มวล (สม่ำเสมอ?) เป็นเมทริกซ์แนวทแยงและทำให้การผกผันเล็กน้อย เมื่อทำการค้นหาด้วยกูเกิ้ล แต่ฉันก็ยังไม่แน่ใจทั้งหมดว่าวิธีการสร้างมวลเมทริกซ์ก้อน ตัวอย่างเช่นดูที่เขากระดาษการทดลองเชิงตัวเลขในก้อนมวลสำหรับอุปกรณ์ข้อแนะนำการแพร่กระจายโดย Edson Wendland Harry และ Edmar Schulz พวกเขาสร้างเมทริกซ์มวลของพวกเขาด้วยการสรุปค่าสัมประสิทธิ์ทั้งหมดลงในแนวทแยงมุม ตัวอย่างเช่นหากเมทริกซ์มวลที่สอดคล้องกันดั้งเดิมของเราคือ: ⎛⎝⎜⎜⎜4212242112422124⎞⎠⎟⎟⎟(4212242112422124)\begin{pmatrix} 4 & 2 & 1 & 2 …

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

2
คำนวณ SVD ที่ถูกตัดทอนหนึ่งค่า / เวกเตอร์หนึ่งตัวในแต่ละครั้ง
มีอัลกอริทึม SVD ที่ถูกตัดทอนที่คำนวณค่าเอกพจน์ทีละหนึ่งหรือไม่ ปัญหาของฉัน: ผมอยากจะคำนวณแรกค่าเอกพจน์ (และเวกเตอร์เอกพจน์) ของขนาดใหญ่ที่หนาแน่นเมทริกซ์แต่ผมไม่ทราบว่าสิ่งที่มีค่าที่เหมาะสมของจะเป็น มีขนาดใหญ่ดังนั้นด้วยเหตุผลด้านประสิทธิภาพฉันไม่อยากประเมิน SVD แบบเต็มเพียงเพื่อตัดทอน SV ที่เล็กที่สุดหลังจากนั้นM k MkkkMMMkkkMMM เป็นการดีที่จะมีวิธีคำนวณค่าเอกพจน์ลำดับจากมากที่สุด ( ) ถึงน้อยที่สุด ( ) ด้วยวิธีนี้ฉันสามารถหยุดการคำนวณหลังจากคำนวณค่าเอกพจน์ th หากต่ำกว่าเกณฑ์σ 1 σ n k σ k / σ 1σ1, σ2, ...σ1,σ2,...\sigma_1, \sigma_2,\ldotsσ1σ1\sigma_1σnσn\sigma_nkkkσk/ σ1σk/σ1\sigma_k/\sigma_1 มีอัลกอริทึมดังกล่าวอยู่หรือไม่ (โดยเฉพาะอย่างยิ่งเมื่อใช้ Python) ใน googling ของฉันฉันพบเฉพาะฟังก์ชัน SVD ที่ถูกตัดทอนซึ่งใช้ k เป็นพารามิเตอร์ดังนั้นบังคับให้คุณคาดเดาว่าเป็นนิรนัย

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

2
โคตรลาดและโคตรลาดคอนจูเกต
สำหรับโครงการฉันต้องใช้สองวิธีนี้และเปรียบเทียบวิธีที่พวกเขาทำงานกับฟังก์ชั่นที่แตกต่างกัน ดูเหมือนว่าวิธีการไล่ระดับสีแบบคอนจูเกตนั้นหมายถึงการแก้ระบบสมการเชิงเส้นของ Ax=bAx=b A\mathbf{x} = \mathbf{b} โดยที่AAAคือเมทริกซ์แบบ n - by - n ที่สมมาตร, บวกแน่นอนและเป็นจริง ในทางกลับกันเมื่อฉันอ่านเกี่ยวกับการไล่ระดับสีฉันเห็นตัวอย่างของฟังก์ชัน Rosenbrockซึ่งก็คือ f(x1,x2)=(1−x1)2+100(x2−x21)2f(x1,x2)=(1−x1)2+100(x2−x12)2 f(x_1,x_2) = (1-x_1)^2+100(x_2-x_1^2)^2 อย่างที่ฉันเห็นฉันไม่สามารถแก้ปัญหานี้ด้วยวิธีการไล่ระดับสีแบบคอนจูเกต หรือฉันจะพลาดบางสิ่งบางอย่าง?

1
การนำการแปรปรวนการขนส่งที่เหมาะสมที่สุดใน Matlab
ฉันกำลังใช้กระดาษ " การขนส่งมวลชนที่เหมาะสมที่สุดสำหรับการลงทะเบียนและแปรปรวน " เป้าหมายของฉันคือการทำให้มันออนไลน์เพราะฉันไม่สามารถหารหัสขนส่งมวลชนแบบ eulerian ออนไลน์ได้และสิ่งนี้น่าสนใจอย่างน้อยสำหรับชุมชนการวิจัยในการประมวลผลภาพ กระดาษที่สามารถสรุปได้ดังนี้: - หาแผนที่เริ่มต้นuuuใช้ 1D จ้อ histogram พร้อม x และ y พิกัด - แก้ปัญหาสำหรับจุดคงที่ของut=1μ0Du∇⊥△−1div(u⊥)ut=1μ0Du∇⊥△−1div(u⊥)u_t = \frac{1}{\mu_0} Du \nabla^\perp\triangle^{-1}div(u^\perp)u⊥u⊥u^\perp△−1△−1\triangle^{-1}DuDuDudt&lt;min|1μ0∇⊥△−1div(u⊥)|dt&lt;min|1μ0∇⊥△−1div(u⊥)|dt<\min|\frac{1}{\mu_0}\nabla^\perp\triangle^{-1}div(u^\perp)| สำหรับการจำลองเชิงตัวเลข (ดำเนินการในตารางปกติ) พวกเขาระบุว่าใช้poicalcของmatlabสำหรับการแก้สมการปัวซองพวกเขาใช้ความแตกต่างที่มีศูนย์กลาง จำกัด สำหรับอนุพันธ์เชิงพื้นที่ยกเว้นDuDuDuซึ่งคำนวณโดยใช้แบบ upwind การใช้รหัสของฉันพลังงานการทำงานและขดของการทำแผนที่ลดลงอย่างเหมาะสมสำหรับการทำซ้ำสองสามครั้ง (จากไม่กี่สิบถึงสองสามพันขึ้นอยู่กับขั้นตอนเวลา) แต่หลังจากนั้นการจำลองจะระเบิดขึ้น: พลังงานจะเพิ่มขึ้นถึง NAN ในการวนซ้ำน้อยมาก ฉันลองคำสั่งซื้อหลายรายการสำหรับความแตกต่างและการผสานรวม (สามารถแทนที่คำสั่งที่สูงกว่าเพื่อ cumptrapz ได้ที่นี่ ) และแผนการแก้ไขที่แตกต่างกัน แต่ฉันได้รับปัญหาเดียวกันเสมอ (แม้ในภาพที่ราบรื่นมาก ทุกคนจะสนใจดูรหัสและ / หรือปัญหาทางทฤษฎีที่ฉันกำลังเผชิญอยู่หรือไม่ รหัสค่อนข้างสั้น รหัสที่มีฟังก์ชั่นการดีบัก ฟังก์ชั่นการลงทะเบียน …

1
มีทางลัดสำหรับระบบที่เป็นตัวเลขโดยประมาณของสมการเชิงอนุพันธ์สามัญเมื่อเป็นแบบอัตโนมัติหรือไม่?
อัลกอริทึมที่มีอยู่สำหรับการแก้ปัญหา ODE จะจัดการกับฟังก์ชันที่Y∈Rn แต่ในระบบกายภาพหลายระบบสมการเชิงอนุพันธ์จะเป็นอิสระดังนั้นdydYdเสื้อ= f( y, t )dydt=f(y,t)\frac{dy}{dt} = f(y, t)y∈Rny∈Rny \in \mathbb R^n,y∈Rnโดยที่t ถูกปล่อยออกมา ด้วยข้อสมมติฐานที่ทำให้เข้าใจง่ายนี้จะเห็นการปรับปรุงอะไรบ้างในวิธีการเชิงตัวเลขที่มีอยู่ ตัวอย่างเช่นถ้าn=1ปัญหาจะเปลี่ยนเป็นt=∫dydydt=f(y)dydt=f(y)\frac{dy}{dt} = f(y)y∈Rny∈Rny \in \mathbb R^ntttn=1n=1n=1และเราเปลี่ยนเป็นอัลกอริธึมที่แตกต่างอย่างสิ้นเชิงสำหรับการรวมอินทิกรัลหนึ่งมิติ สำหรับn&gt;1การปรับปรุงเป็นไปได้สูงสุดคือการลดมิติของปีโดย 1 เพราะกรณีนี้ขึ้นกับเวลาที่สามารถจำลองโดยการผนวกทีจะYเปลี่ยนโดเมนของYจากRnเพื่อRn+1t=∫dyf(y)t=∫dyf(y)t = \int \frac{dy}{f(y)}n&gt;1n&gt;1n>1yyytttyyyyyyRnRn\mathbb R^nRn+1Rn+1\mathbb R^{n+1}
10 ode  numerics 

1
ปัญหาเบนช์มาร์กสำหรับอัลกอริทึมการเรียงลำดับใหม่ของค่าเฉพาะ
ทุกคนจริงเมทริกซ์สามารถลดลงในฟอร์ม Schur จริงT = U T Uใช้มุมฉาก similiary เปลี่ยนU เมทริกซ์Tนี่คือรูปแบบกึ่งสามเหลี่ยมโดยมี 1 คูณ 1 หรือ 2 คูณ 2 บล็อกบนเส้นทแยงมุมหลัก แต่ละบล็อก 1 ต่อ 1 สอดคล้องกับค่าลักษณะเฉพาะที่แท้จริงของAและแต่ละบล็อก 2 ต่อ 2 สอดคล้องกับคู่ค่าลักษณะเชิงสังยุคที่ซับซ้อนของAAAAT= UTUT=UTAUT = U^T A UยูUUTTTAAAAAA ปัญหาการจัดเรียงใหม่ eigenvalue ประกอบด้วยการหาฉากการเปลี่ยนแปลงความคล้ายคลึงกันดังกล่าวว่าการเลือกค่าลักษณะเฉพาะของผู้ใช้ปรากฏตามเส้นทแยงมุมของมุมซ้ายบนของS = V T T VVVVAAAS=VTTVS=VTTVS = V^T T V ใน LAPACK รูทีนความแม่นยำสองเท่าที่เกี่ยวข้องที่เรียกว่า DTRSEN Daniel Kressner …

1
มีกรอบการทดสอบสำหรับการพัฒนาซอฟต์แวร์เชิงตัวเลขหรือไม่
ฉันพบว่าการเขียนโปรแกรมวิทยาศาสตร์ทางคอมพิวเตอร์ของฉันจำนวนมากมีข้อกำหนดการทดสอบที่ไม่ครอบคลุมโดยกรอบการทดสอบมาตรฐาน: การทดสอบเวลาคำนวณ เพื่อให้แน่ใจว่าอัลกอริทึมจะไม่ช้าลง ฉันสามารถทำสิ่งต่าง ๆ ได้เช่นกัน assureSmallerEqual(RuntimeWrapper(algorithm),53)แต่ฉันต้องการลดขีด จำกัด 53 วินาทีอย่างต่อเนื่องเนื่องจากฉันกำลังทำงานกับอัลกอริทึมassureSmallerEqual(RuntimeWrapper(algorithm),'previousbest+noisetolerance') การทดสอบประสิทธิภาพ เพื่อให้แน่ใจว่าอัลกอริทึมที่ก่อนหน้านี้พบว่าการประมาณค่าที่ดีสำหรับโซลูชันการวิเคราะห์ยังคงหาวิธีการแก้ปัญหาที่อย่างน้อยดีหรือดีกว่า อีกครั้งนี่อาจเป็นแบบจำลองโดยการทดสอบการรวมมาตรฐาน แต่ฉันต้องการความอดทนที่จะลดขนาดลงอย่างต่อเนื่องเนื่องจากอัลกอริทึมดีขึ้นและดีขึ้น คิดว่าการแทนที่assureAlmostEqual(foo(),1,places=3)โดยassureAlmostEqual(foo(),1,places='previousbest') การทดสอบข้อกำหนดทางกายภาพ เพื่อให้แน่ใจว่าอัลกอริธึมไม่ต้องการหน่วยความจำ / พื้นที่ฮาร์ดดิสก์เพิ่มเติม คล้ายกันมากกับ 1 การทดสอบความต้องการที่เป็นนามธรรม เพื่อให้แน่ใจว่าอัลกอริทึมที่ทำงานได้ดีกับการประมาณกำลังสองไม่จำเป็นต้องใช้การประมาณแบบลูกบาศก์หรืออัลกอริทึมที่ทำงานได้ดีในขั้นตอนที่ 0.1 ไม่จำเป็นต้องมีเสถียรภาพ 0.01 ในทันที อีกครั้งสิ่งเหล่านี้อาจถูกจำลองโดยการทดสอบการรวมมาตรฐาน แต่เป้าหมายคือการจำว่าพารามิเตอร์ความต้องการที่เล็กที่สุดนั้นบรรลุเป้าหมายที่แน่นอนดังนั้นสิ่งนี้จะต้องมีการอัปเดตด้วยตนเองจำนวนมาก ตัวอย่างเช่นหากfoo(10)ก่อนหน้านี้ไม่มีข้อยกเว้นฉันต้องการให้เฟรมเวิร์กตรวจสอบว่าfoo(10)ยังใช้งานได้และลองfoo(9)ตอนนี้ใช้งานได้ (ในกรณีนี้การทดสอบในอนาคตทั้งหมดจะfoo(9)ยังคงใช้ได้) หนึ่งอาจโต้แย้งว่าสิ่งที่ฉันขอไม่ได้อธิบายการทดสอบในแง่ของการทดสอบหน่วย / บูรณาการตั้งแต่ runtimes ที่เพิ่มขึ้นเช่นอาจเป็นที่ยอมรับในทางกลับกันสำหรับการปรับปรุงอื่น ๆ อย่างไรก็ตามในทางปฏิบัติฉันรู้ว่าฉันจะประหยัดเวลาในการดีบักได้มากถ้าฉันมีฟังก์ชั่นการทดสอบด้านบนเพราะใน 95% ของข้อกำหนดกรณีและประสิทธิภาพลดลงเพราะข้อผิดพลาดที่ฉันแนะนำ แน่นอนฉันรู้ว่ามีข้อบกพร่องมากมายที่ฉันพบ (หลังจากเสียเวลามากในการตรวจสอบรหัสของฉัน) ด้วยห้องสมุดซอฟต์แวร์เชิงตัวเลขภายนอกสามารถหลีกเลี่ยงได้เล็กน้อยหากการทดสอบข้างต้นถูกนำไปใช้อย่างจริงจัง PS คำถามที่มีชื่อคล้ายกัน/programming/34982863/framework-for-regression-testing-of-numerical-codeไม่ซ้ำกันเนื่องจากอธิบายการทำงานที่ทำได้ง่ายขึ้นด้วยกรอบการทดสอบการถดถอยมาตรฐาน คำถามกลยุทธ์สำหรับการทดสอบหน่วยและการพัฒนาขับเคลื่อนทดสอบขอกลยุทธ์เมื่อเทียบกับกรอบที่ช่วยในการดำเนินการพวกเขา (และกลยุทธ์ที่ขอ / ที่ให้ไว้ในคำตอบนั้นแตกต่างจากสิ่งที่ฉันอธิบายที่นี่ในความคิดของฉัน)
10 testing 

1
สมการโลคัล DG, วิธีการตีความฟังก์ชั่นการทดสอบค่าเฉลี่ย
ในกระดาษhttp://www.sciencedirect.com/science/article/pii/S0045782509003521 , สมการองค์ประกอบท้องถิ่น HDG อธิบายไว้ในหน้า 584 สมการ (4) โดยมีสมการหนึ่งที่ใช้แบบฟอร์มต่อไปนี้ −(uh,∇q)K=−⟨u^h⋅n,q−q¯⟩∂K−(uh,∇q)K=−⟨u^h⋅n,q−q¯⟩∂K-(u_h,\nabla q)_K = -\left\langle\hat{u}_h \cdot n, q - \bar{q}\right\rangle_{\partial K} ซึ่งเป็นการประมาณความแปรปรวนของสมการต่อเนื่องพร้อมฟังก์ชันการทดสอบที่มีค่าสเกลาร์ในพื้นที่ที่เหมาะสมคิว∇⋅u=0∇⋅u=0\nabla \cdot u = 0qqq กระดาษกำหนดQq¯=1|∂K|∫∂Kqq¯=1|∂K|∫∂Kq\bar{q} = \frac{1}{|\partial K|} \int_{\partial K} q สิ่งนี้ตีความได้อย่างไรในแง่ขององค์ประกอบ จำกัด ? จากความเข้าใจของเราคูณทั้งสองข้างด้วยฟังก์ชั่นการทดสอบและพยายามที่จะหาทางออกที่น่าพอใจสมการสำหรับทางเลือกที่เป็นไปได้ทั้งหมดของคิวเป็นไปได้อย่างไรที่จะปรับเปลี่ยนพื้นที่ทดสอบในลักษณะนี้คิวqqqqqq กระดาษยังระบุด้วยว่าสิ่งนี้มีความจำเป็นในการบังคับใช้ข้อมูลเฉพาะ ฉันเห็นด้วยกับข้อความนี้ แต่ฟังก์ชั่นทดสอบจะนำไปใช้ในโค้ดได้อย่างไร? ฉันควรใช้ฟังก์ชั่นพื้นฐานบนองค์ประกอบและลบค่าเฉลี่ยเมื่อประกอบระบบเชิงเส้นในองค์ประกอบQ- ˉ Q⟨u^h⋅n,q−q¯⟩∂K=0⟨u^h⋅n,q−q¯⟩∂K=0\left\langle\hat{u}_h\cdot n, q - \bar{q}\right\rangle_{\partial K} = 0q−q¯q−q¯q - \bar{q}

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