ผมจะพูดถึงแนวโน้มทั่วไปของบทที่แล้วต่อไป แต่จะเน้นไปที่สำนวนเก่าที่ว่า " garbage in, garbage out" ซึ่งมักย่อว่า gigo แนวคิดคือถ้าคุณใส่ตัวเลขและสมการที่ไม่ถูกต้อง (garbage) เข้าไป คุณก็จะได้ผลลัพธ์ที่ไม่ถูกต้อง (garbage) ออกมา โดยนัยแล้วเรามักจะสันนิษฐานเป็นนัยว่าสิ่งที่ตรงกันข้ามก็เป็นจริง: ถ้าสิ่งที่ใส่เข้าไปแม่นยำ สิ่งที่ออกมาก็ต้องแม่นยำด้วย ผมจะแสดงให้เห็นว่าทั้งสองสมมติฐานนี้สามารถผิดได้
เนื่องจาก simulation จำนวนมากยังคงเกี่ยวข้องกับสมการเชิงอนุพันธ์ เราจึงเริ่มต้นด้วยการพิจารณาสมการเชิงอนุพันธ์อันดับหนึ่งที่ง่ายที่สุดในรูปแบบ
คุณคงจำได้ว่า สนามทิศทาง (direction field) คือการวาดที่แต่ละจุดบนระนาบ xy ซึ่งเป็นส่วนของเส้นตรงที่มีความชันตามสมการเชิงอนุพันธ์ ดังแสดงใน Figure 20.1 ตัวอย่างเช่น สมการเชิงอนุพันธ์
มีสนามทิศทางตามที่แสดงใน Figure 20.2 บนวงกลมที่มีจุดศูนย์กลางร่วมกันแต่ละวง x 2 + y 2 = k ความชันจะเท่ากันเสมอ โดยความชันขึ้นอยู่กับค่าของ k สิ่งเหล่านี้เรียกว่า isoclines
Figure 20.1—สนามทิศทาง (Direction field)
Figure 20.2—สนามทิศทางสำหรับ y' = x 2 + y 2 , y (0) = 1
ลองดูภาพต่อไปนี้ Figure 20.3 ซึ่งเป็นสนามทิศทางของสมการเชิงอนุพันธ์อีกสมการหนึ่ง ทางด้านซ้ายคุณจะเห็นสนามทิศทางที่ diverging (แยกออก) ซึ่งหมายความว่าการเปลี่ยนแปลงเล็กน้อยในค่าเริ่มต้น หรือข้อผิดพลาดเล็กน้อยในการคำนวณ จะทำให้เกิดความแตกต่างครั้งใหญ่ในค่าตรงกลางของ trajectory แต่ทางด้านขวามือสนามทิศทางจะ converging (ลู่เข้า) หมายความว่าความแตกต่างใหญ่ในตอนกลางจะนำไปสู่ความแตกต่างเล็กน้อยทางด้านขวา ในตัวอย่างเดียวนี้คุณจะเห็นว่าทั้งข้อผิดพลาดเล็กสามารถกลายเป็นใหญ่ได้ และข้อผิดพลาดใหญ่ก็สามารถกลายเป็นเล็กได้ และยิ่งไปกว่านั้น ข้อผิดพลาดเล็กสามารถกลายเป็นใหญ่แล้วกลับมาเป็นเล็กอีกครั้ง ดังนั้นความแม่นยำของผลเฉลยจึงขึ้นอยู่กับว่าคุณกำลังพูดถึงตรงไหน ไม่ใช่ความแม่นยำสัมบูรณ์โดยรวม ฟังก์ชันที่อยู่เบื้องหลังทั้งหมดนี้คือ
ซึ่งสมการเชิงอนุพันธ์ของฟังก์ชันนี้ เมื่อทำการ differentiate (หาอนุพันธ์) จะได้
Figure 20.3—สนามทิศทางสำหรับ y' = –2 xy
ในความคิดของคุณ คุณคงนึกภาพ "tube" (ท่อ) ที่ล้อมรอบผลเฉลยที่ "true, exact solution" ของสมการ และเห็นว่าท่อนี้ขยายตัวก่อนแล้วค่อยหดตัว ซึ่งใช้ได้ดีในสองมิติ แต่เมื่อผมมีระบบของสมการเชิงอนุพันธ์จำนวน n สมการ เช่น 28 สมการในปัญหา Navy intercept ที่กล่าวถึงก่อนหน้านี้ ท่อเหล่านี้ที่ล้อมรอบผลเฉลยที่แท้จริงก็ไม่ได้เป็นอย่างที่คุณคิดอีกต่อไป รูปสี่วงกลมในสองมิติ ที่นำไปสู่ paradox ใน n มิติเมื่อมีสิบมิติ ดังที่กล่าวใน Chapter 9 แสดงให้เห็นว่าการจินตนาการเช่นนี้อาจทำให้เข้าใจผิดได้มากเพียงใด ซึ่งนี่เป็นอีกมุมมองหนึ่งของสิ่งที่ผมพูดในบทก่อนหน้าเกี่ยวกับปัญหา stable และ unstable แต่ครั้งนี้ผมจะเฉพาะเจาะจงมากขึ้นโดยใช้สมการเชิงอนุพันธ์ในการอธิบาย
เราจะแก้สมการเชิงอนุพันธ์เชิงตัวเลขได้อย่างไร? เริ่มต้นด้วยสมการเชิงอนุพันธ์สามัญเชิงเส้นอันดับหนึ่งเพียงสมการเดียว เราจินตนาการถึงสนามทิศทาง ปัญหาของเราคือจากค่าเริ่มต้นที่เรามี เราต้องการไปยังจุดถัดไปที่อยู่ใกล้เคียง ถ้าเรานำความชันเฉพาะจุดจากสมการเชิงอนุพันธ์แล้วก้าวไปข้างหน้าเล็กน้อยตามเส้นสัมผัส เราจะเกิดข้อผิดพลาดเพียงเล็กน้อยเท่านั้น ดังแสดงใน Figure 20.4 เมื่อใช้จุดนั้นเราก็ไปยังจุดถัดไป แต่ดังที่คุณเห็นจากรูป เราจะค่อยๆ เบี่ยงเบนจากเส้นโค้งที่แท้จริง เพราะเราใช้ "ความชันที่เป็นอยู่" ตลอดเวลา ไม่ใช่ความชันทั่วไปในช่วงนั้น เพื่อหลีกเลี่ยงปัญหานี้ เราจะ "predict" ค่า ใช้ค่านั้นเพื่อประเมินความชัน ณ จุดนั้น (โดยใช้สมการเชิงอนุพันธ์) จากนั้นใช้ความชันเฉลี่ยของทั้งสองปลายเพื่อประมาณความชันเฉลี่ยที่จะใช้สำหรับช่วงนั้น ดังแสดงใน Figure 20.5 จากนั้น เมื่อใช้ความชันเฉลี่ยนี้ เราก็ก้าวไปข้างหน้าอีกครั้ง คราวนี้ใช้สูตร "corrector" ถ้าค่าที่ predict และ correct อยู่ "ใกล้" กัน เราก็ถือว่าแม่นยำเพียงพอ แต่ถ้าอยู่ห่างกันมาก เราก็ต้องลดขนาดขั้นลง ถ้าความแตกต่างน้อยเกินไป เราก็ควรเพิ่มขนาดขั้น ดังนั้น วิธีการ predictor-corrector แบบดั้งเดิมจึงมีกลไกอัตโนมัติในการตรวจสอบข้อผิดพลาดทีละขั้น—แต่ข้อผิดพลาดทีละขั้นนี้ ไม่ใช่ข้อผิดพลาดสะสมทั้งหมด อย่างแน่นอน! ข้อผิดพลาดสะสมขึ้นอยู่กับ convergence หรือ divergence ของสนามทิศทางอย่างชัดเจน
Figure 20.4—วิธีคร่าวๆ (Crude method)
Figure 20.5—Predictor–Corrector (การทำนาย–การแก้ไข)
เราใช้เส้นตรงธรรมดาทั้งสำหรับการ predict และ correct การใช้พหุนามดีกรีสูงนั้นประหยัดและแม่นยำกว่ามาก โดยทั่วไปแล้วหมายถึงพหุนามดีกรีสี่ประมาณ (Milne, Adams-Bashforth, Hamming, ฯลฯ) ดังนั้นเราจึงต้องใช้ค่าของฟังก์ชันและอนุพันธ์เก่าๆ หลายค่าเพื่อ predict ค่าถัดไป จากนั้นใช้ค่านี้ในสมการเชิงอนุพันธ์เพื่อประมาณความชันใหม่ และด้วยความชันนี้ร่วมกับค่าฟังก์ชันและความชันเก่า เราก็ correct ค่า เมื่อคิดสักครู่คุณจะเห็นว่า corrector ก็คือ recursive digital filter โดยที่ข้อมูลนำเข้าคืออนุพันธ์ และค่าที่ส่งออกคือตำแหน่ง ความเสถียรและทุกสิ่งที่เราพูดถึงไปนั้นเกี่ยวข้องกัน ดังที่กล่าวไว้ก่อนหน้านี้ มี feedback เพิ่มเติมผ่านค่าที่ predict จากสมการเชิงอนุพันธ์ ซึ่งเข้าไปในความชันที่ถูก correct แต่ทั้งสองอย่างก็แค่การแก้สมการผลต่าง (difference equation)—recursive digital filters ก็เป็นแค่สูตรนี้เท่านั้น ไม่มีอะไรซับซ้อนกว่านั้น พวกมันไม่ใช่แค่ transfer functions อย่างที่คุณอาจเข้าใจจากวิชา digital filters ตรงไปตรงมาก็คือคุณกำลังคำนวณตัวเลขที่มาจากสมการผลต่าง อย่างไรก็ตาม มีความแตกต่างอยู่ตรงที่ filter จะประมวลผลด้วยสูตรเชิงเส้นอย่างเคร่งครัด แต่ในสมการเชิงอนุพันธ์นั้นมีความไม่เป็นเชิงเส้น (nonlinearity) ที่เกิดจากการประเมินเทอมอนุพันธ์ ดังนั้นมันจึงไม่เหมือนกับ digital filter ทุกประการ
ถ้าคุณมีสมการเชิงอนุพันธ์ n สมการ คุณจะต้องจัดการกับเวกเตอร์ที่มี n องค์ประกอบ คุณ predict แต่ละองค์ประกอบไปข้างหน้า ประเมินอนุพันธ์แต่ละตัวจากทั้งหมด n ตัว correct ค่าที่ predict แต่ละค่า และสุดท้ายก็ก้าวเดิน หรือปฏิเสธถ้าข้อผิดพลาดใหญ่เกินไปตามเกณฑ์ที่คุณคิดว่าวัดข้อผิดพลาดเฉพาะจุดได้อย่างเหมาะสม คุณมักจะคิดถึงข้อผิดพลาดเล็กๆ เป็น "tube" (ท่อ) ที่ล้อมรอบ trajectory ที่คำนวณได้จริง แต่คุณต้องจำอีกครั้งถึง four-circle paradox: ในมิติสูง "tubes" ไม่ได้เป็นอย่างที่คุณต้องการให้เป็นเลย
ทีนี้ขอให้ผมชี้ให้เห็นความแตกต่างที่สำคัญระหว่างสองแนวทาง ได้แก่ numerical analysis และ filter theory วิธีการดั้งเดิมของ numerical analysis และยังคงเป็นวิธีเดียวที่คุณจะพบในตำราที่ยอมรับกัน ใช้พหุนามในการประมาณฟังก์ชัน แต่ recursive filter ใช้ความถี่ (frequencies) เป็นพื้นฐานในการประเมินสูตร! นี่เป็นสิ่งที่แตกต่างกันอย่างสิ้นเชิง!
เพื่อให้เห็นความแตกต่างนี้ สมมติว่าเราจะสร้าง simulator สำหรับมนุษย์ลงจอดบนดาวอังคาร สูตรดั้งเดิมจะเน้นที่รูปร่างของ trajectory ในรูปของพหุนามเฉพาะจุด และเส้นทางจะมีความไม่ต่อเนื่องเล็กน้อยในความเร่งเมื่อเราเคลื่อนที่จากช่วงหนึ่งไปยังอีกช่วงหนึ่ง ในแนวทางที่ใช้ความถี่ เราจะเน้นที่การทำให้ความถี่ถูกต้อง และปล่อยให้ตำแหน่งจริงเป็นไปตามนั้น ตามอุดมคติแล้ว trajectories ทั้งสองควรเหมือนกัน แต่ในทางปฏิบัติแล้วอาจแตกต่างกันมาก
คุณต้องการคำตอบแบบไหน? ยิ่งคุณคิดมากเท่าไหร่ คุณก็ยิ่ง realize มากขึ้นว่านักบินในเครื่องฝึกบินต้องการได้รับ "ความรู้สึก" (feel) ของยานลงจอด และน่าจะหมายถึง frequency response ของ simulator ควรให้ความรู้สึกที่ถูกต้องแก่นักบิน ถ้าตำแหน่งคลาดเคลื่อนไปเล็กน้อย feedback control ระหว่างการลงจอดก็สามารถชดเชยได้ แต่ถ้าความรู้สึกไม่ถูกต้องในการบินจริง นักบินก็จะกังวลกับประสบการณ์ใหม่ที่ไม่มีใน simulator ผมคิดมาโดยตลอดว่า simulator ควรเตรียมนักบินให้พร้อมสำหรับประสบการณ์จริงให้ดีที่สุดเท่าที่เราทำได้ (เราไม่สามารถปลอมแปลงแรงโน้มถ่วงต่ำของดาวอังคารได้นานนัก) เพื่อที่พวกเขาจะรู้สึกสบายใจเมื่อเหตุการณ์จริงเกิดขึ้น หลังจากได้ประสบการณ์นั้นหลายครั้งในเครื่องฝึก อนิจจา เรารู้น้อยเกินไปเกี่ยวกับสิ่งที่นักบิน "รู้สึก" (สัมผัสได้) นักบินรู้สึกเฉพาะ Fourier real frequencies หรือบางทีพวกเขาอาจรู้สึกถึง decaying Laplace complex frequencies ด้วย (หรือเราควรใช้ wavelets?) นักบินที่แตกต่างกันรู้สึกในสิ่งเดียวกันหรือไม่? เราจำเป็นต้องรู้มากกว่าที่เรารู้อยู่ในปัจจุบันเกี่ยวกับเกณฑ์การออกแบบที่สำคัญนี้
สิ่งที่กล่าวมาคือความขัดแย้งมาตรฐานระหว่างแนวทางของนักคณิตศาสตร์และวิศวกร แต่ละฝ่ายมีเป้าหมายที่แตกต่างกันในการแก้สมการเชิงอนุพันธ์ (และในปัญหาอื่นๆ อีกมากมาย) ดังนั้นพวกเขาจึงได้ผลลัพธ์ที่แตกต่างกันจากการคำนวณ ถ้าคุณมีส่วนร่วมใน simulation คุณจะเห็นว่ามีสิ่งที่ซ่อนเร้นอยู่มากมาย ซึ่งสำคัญในทางปฏิบัติ แต่นักคณิตศาสตร์มักไม่ตระหนักถึง และพวกเขาจะปฏิเสธว่าผลกระทบเหล่านี้มีความสำคัญ แต่เมื่อดู trajectories สองเส้นที่ผมวาดคร่าวๆ ดังแสดงใน Figure 20.6 เส้นโค้งด้านบนมีความแม่นยำในตำแหน่ง แต่มุมต่างๆ จะให้ "ความรู้สึก" (feel) ที่แตกต่างจากความเป็นจริงมาก ส่วนเส้นโค้งที่สองจะผิดพลาดมากกว่าในตำแหน่ง แต่ถูกต้องมากกว่าในแง่ของ "ความรู้สึก" คุณจึงเห็นอีกครั้งว่าทำไมผมถึงเชื่อว่าคนที่มีความเข้าใจในปัญหาอย่างลึกซึ้งจะต้องเจาะลึกเข้าไปในวิธีการแก้ปัญหา และไม่ยอมรับวิธีการแก้ปัญหาแบบดั้งเดิม
Figure 20.6—Trajectories โดยใช้การประมาณที่แตกต่างกัน
ทีนี้ผมจะเปลี่ยนไปเล่าเรื่องเกี่ยวกับช่วงแรกๆ ของการทดสอบขีปนาวุธนำวิถี Nike ณ ตอนนั้นพวกเขากำลังทดสอบภาคสนามที่ White Sands ในสิ่งที่เรียกว่า "การทดสอบเสาโทรศัพท์" (telephone pole tests) ซึ่งเป็นการยิงที่ขีปนาวุธต้องบินตาม trajectory ที่กำหนดไว้ล่วงหน้า และในช่วงสุดท้ายก็ระเบิด เพื่อให้ทั้งลำไม่ตกลงนอกพื้นที่ทดสอบและก่อความเสียหายใหญ่หลวง แต่ให้ชิ้นส่วนตกลงมาอย่างนิ่มนวลในพื้นที่ทดสอบ ซึ่งน่าจะก่อให้เกิดความเสียหายน้อยกว่า วัตถุประสงค์ของการทดสอบคือเพื่อให้ได้การวัด drag, lift และคุณสมบัติอื่นๆ ที่สมจริงตามฟังก์ชันของความสูงและความเร็ว เพื่อใช้ในการสรุปรายละเอียดการออกแบบ รวมถึงการปรับปรุงการออกแบบ
ผมพบเพื่อนของผมกลับมาที่ Labs เดินไปมาในห้องโถงด้วยสีหน้าไม่มีความสุขเลย ทำไมล่ะ? เพราะการทดสอบยิงประมาณหกครั้ง สองครั้งแรกแตกสลายกลางอากาศ และไม่มีใครรู้สาเหตุ ความล่าช้าหมายถึงข้อมูลที่ต้องเก็บเพื่อให้เราไปสู่ขั้นตอนต่อไปของการออกแบบนั้นไม่พร้อมใช้งาน ดังนั้นทั้งโปรเจกต์จึงมีปัญหาใหญ่ ผมบอกเขาว่าถ้าเขาให้สมการเชิงอนุพันธ์ที่อธิบายการบินมา ผมจะให้ผู้หญิงคนหนึ่งมาคำนวณผลเฉลยด้วยมือ (คอมพิวเตอร์ขนาดใหญ่ยังไม่พร้อมใช้งานในช่วงปลายทศวรรษ 1940) ประมาณหนึ่งสัปดาห์ต่อมาพวกเขาก็ส่งสมการอันดับหนึ่งมาเจ็ดสมการ และผู้หญิงคนนั้นก็พร้อมที่จะเริ่ม แต่เงื่อนไขเริ่มต้นก่อนที่ปัญหาจะเกิดขึ้นคืออะไร? (ในสมัยนั้นผมไม่มีประสิทธิภาพการคำนวณที่จะทำทั้ง trajectory ได้อย่างรวดเร็ว) พวกเขาไม่รู้! ข้อมูล telemetry ไม่ชัดเจนในช่วงก่อนเกิดความล้มเหลว ผมไม่แปลกใจ และก็ไม่กังวลมากนัก ดังนั้นเราจึงใช้ค่าประมาณของความสูง ความชัน ความเร็ว มุมโจมตี ฯลฯ หนึ่งค่าสำหรับตัวแปรทั้งเจ็ดของ trajectory หนึ่งเงื่อนไขต่อหนึ่งสมการ ดังนั้นผมจึงมี garbage in แต่ผมได้ตระหนักก่อนหน้านี้แล้วว่าธรรมชาติของการทดสอบภาคสนามที่กำลังจำลองนั้น การเบี่ยงเบนเล็กน้อยจาก trajectory ที่กำหนดจะถูกแก้ไขโดยอัตโนมัติด้วยระบบนำวิถี! ผมกำลังจัดการกับสนามทิศทางที่ convergent อย่างแรง
เราพบว่าทั้ง pitch และ yaw มีเสถียรภาพ แต่เมื่อแต่ละอย่างเริ่มคงที่ มันก็โยนพลังงานไปให้อีกอย่างมากขึ้น ดังนั้นนอกจากจะมีการแกว่งเชิงเสถียรภาพแบบดั้งเดิมใน pitch และ yaw แล้ว เนื่องจากการหมุนของขีปนาวุธรอบแกนตามยาว ยังมีการถ่ายเทพลังงานที่เพิ่มขึ้นอย่างเป็นคาบระหว่างทั้งสองอีกด้วย เมื่อแสดงเส้นโค้งจากคอมพิวเตอร์แม้เพียงช่วงสั้นๆ ของ trajectory ทุกคนก็ realize ทันทีว่าพวกเขาลืมเรื่อง cross-connection stability และรู้วิธีแก้ไข เมื่อเรามีผลเฉลยแล้ว พวกเขาก็สามารถอ่านข้อมูล telemetry ที่ปนเปื้อนจากการทดสอบ และตรวจสอบว่าคาบของการถ่ายเทพลังงานนั้นถูกต้องโดยประมาณ—หมายความว่าพวกเขาได้ให้สมการเชิงอนุพันธ์ที่ถูกต้องสำหรับการคำนวณ ผมมีส่วนช่วยเพียงเล็กน้อย นอกจากคอยให้ผู้หญิงคนนั้นทำงานกับเครื่องคำนวณตั้งโต๊ะอย่างซื่อสัตย์และต่อเนื่อง การมีส่วนร่วมที่แท้จริงของผมคือ: (1) การตระหนักว่าเราสามารถจำลองสิ่งที่เกิดขึ้นได้ ซึ่งปัจจุบันเป็นเรื่องปกติในอุบัติเหตุทุกประเภท แต่ในตอนนั้นเป็นสิ่งใหม่ และ (2) การรับรู้ว่ามีสนามทิศทางที่ convergent ดังนั้นเงื่อนไขเริ่มต้นจึงไม่จำเป็นต้องรู้อย่างแม่นยำ
เหตุผลที่ผมเล่าเรื่องนี้ให้คุณฟังก็เพื่อแสดงว่า gigo ไม่จำเป็นต้องถูกเสมอไป อีกตัวอย่างหนึ่งมาจากประสบการณ์ช่วงแรกๆ ของผมที่ Los Alamos เกี่ยวกับ bomb simulation ผมค่อยๆ ตระหนักว่าเบื้องหลังการคำนวณนั้นมีข้อมูลที่ค่อนข้างไม่แม่นยำสำหรับการคำนวณ สมการสถานะ (equation of state) ซึ่งเกี่ยวข้องกับความสัมพันธ์ระหว่างความดันกับความหนาแน่น (และอุณหภูมิ ซึ่งผมจะไม่พูดถึงในตอนนี้) ข้อมูลจากห้องปฏิบัติการความดันสูง จากค่าประมาณจากแผ่นดินไหว จากค่าประมาณจากความหนาแน่นของแกนกลางดาวฤกษ์ และสุดท้ายจากทฤษฎี asymptotic ของความดันอนันต์ ถูกพล็อตเป็นชุดจุดบนกระดาษกราฟขนาดใหญ่แผ่นหนึ่ง ดังแสดงใน Figure 20.7 จากนั้นใช้ French curves ขนาดใหญ่เพื่อวาดเส้นโค้งเชื่อมต่อจุดที่กระจายกันอย่างบางเบา เราจึงอ่านค่าจากเส้นโค้งนี้ถึง 3 1/3 ตำแหน่งทศนิยม ซึ่งหมายความว่าเราเดาค่า 5 หรือ 0 ในตำแหน่งที่สี่ เราใช้ตัวเลขเหล่านั้นเพื่อสร้างตารางย่อยที่มีทศนิยมห้าตำแหน่ง และในบางจุดของตารางถึงหกตำแหน่ง ซึ่งกลายเป็นข้อมูลทางการสำหรับการคำนวณจริงที่เรารัน ในเวลานั้น ดังที่ผมพูดไปก่อนหน้านี้ ผมเป็นเหมือน janitor ด้านการคำนวณ และหน้าที่ของผมคือทำให้ทุกอย่างดำเนินต่อไปเพื่อให้นักฟิสิกส์มีอิสระในการทำงานของพวกเขา
Figure 20.7—สมการสถานะ (Equation of state)
เมื่อสิ้นสุดสงคราม ผมอยู่ต่อที่ Los Alamos อีกหกเดือน และสาเหตุหนึ่งคือผมอยากรู้ว่าทำไมข้อมูลที่ไม่แม่นยำเช่นนั้นถึงสามารถนำไปสู่การทำนายที่แม่นยำสำหรับการออกแบบขั้นสุดท้ายได้ ในที่สุด เมื่อมีเวลาคิดยาวนาน ผมก็พบคำตอบ ในการคำนวณเราใช้ second differences อย่างมีประสิทธิภาพ first differences ให้แรงที่กระทำต่อ shell แต่ละอันในด้านหนึ่ง และ differences จาก shell ที่อยู่ติดกันทั้งสองด้านให้แรงลัพธ์ที่เคลื่อน shell เราต้องใช้ shell ที่บางมาก ดังนั้นเราจึงหาผลต่างของตัวเลขที่ใกล้กันมาก และนี่คือสาเหตุที่ต้องใช้ตัวเลขหลายหลัก แต่การตรวจสอบเพิ่มเติมแสดงให้เห็นว่าเมื่อ "gadget" ทำงาน shell แต่ละอันจะขึ้นไปตามเส้นโค้งและอาจลงมาบางส่วนอีกครั้ง ดังนั้นข้อผิดพลาดเฉพาะจุดใดๆ ในสมการสถานะก็จะถูกเฉลี่ยออกไปโดยประมาณตลอดประวัติของมัน สิ่งที่สำคัญที่ต้องได้จากสมการสถานะคือความโค้ง (curvature) และดังที่กล่าวไปแล้ว แม้แต่ความโค้งก็ต้องถูกต้องโดยเฉลี่ยเท่านั้น ดังนั้น garbage in แต่ก็ได้ผลลัพธ์ที่แม่นยำออกมา!
Figure 20.8—Feedback ของ H.S. Black
ตัวอย่างเหล่านี้แสดงสิ่งที่กล่าวไว้อย่างคร่าวๆ ก่อนหน้านี้: ถ้ามี feedback ในปัญหาสำหรับตัวเลขที่ใช้ ตัวเลขเหล่านั้นก็ไม่จำเป็นต้องรู้อย่างแม่นยำเสมอไป เช่นเดียวกับ insight ที่ยอดเยี่ยมของ H.S. Black เกี่ยวกับวิธีการสร้าง feedback amplifiers Figure 20.8 ตราบใดที่ gain สูงมาก มีเพียง resistor ตัวเดียวใน feedback loop เท่านั้นที่ต้องเลือกอย่างแม่นยำ ชิ้นส่วนอื่นๆ ทั้งหมดอาจมีความแม่นยำต่ำได้ จาก Figure 20.8 คุณจะได้สมการ
เราจะเห็นว่าความไม่แน่นอนเกือบทั้งหมดอยู่ใน resistor ตัวเดียวที่มีค่า 1/10 และ gain ของ amplifier (–10 –9 ) ไม่จำเป็นต้องแม่นยำ ดังนั้น feedback ของ H.S. Black ทำให้เราสามารถสร้างสิ่งต่างๆ ได้อย่างแม่นยำจากชิ้นส่วนที่ส่วนใหญ่ไม่แม่นยำ
คุณคงเห็นแล้วว่าทำไมผมถึงไม่สามารถให้สูตรสำเร็จรูปที่สวยงามสำหรับทุกสถานการณ์ได้: มันขึ้นอยู่กับว่าปริมาณแต่ละอย่างผ่านกระบวนการคำนวณทั้งหมดอย่างไร การคำนวณทั้งหมดต้องถูกเข้าใจในภาพรวม ตัวเลขที่ไม่แม่นยำผ่านสถานการณ์ feedback ซึ่งข้อผิดพลาดของพวกมันจะถูกชดเชย หรือพวกมันอยู่ในที่โล่งแจ้งโดยไม่มีการป้องกันจาก feedback? คำว่า "สำคัญยิ่ง" (vitally) เพราะมันสำคัญยิ่งต่อการคำนวณที่ต้องทำให้ตัวเลขเหล่านั้นแม่นยำ ถ้าพวกมันไม่ได้อยู่ในตำแหน่งที่มี feedback
เมื่อเข้าใจข้อเท็จจริงนี้แล้ว มันส่งผลต่อการออกแบบ! การออกแบบที่ดีช่วยปกป้องคุณจากความต้องการชิ้นส่วนที่แม่นยำสูงจำนวนมากเกินไปในระบบ แต่หลักการออกแบบเช่นนี้ยังคงไม่เป็นที่เข้าใจดีนักจนถึงทุกวันนี้ และจำเป็นต้องได้รับการวิจัยอย่างกว้างขวาง ไม่ใช่ว่านักออกแบบที่ดีไม่เข้าใจสิ่งนี้โดยสัญชาตญาณ เพียงแต่มันไม่ใช่เรื่องง่ายที่จะถูกรวมเข้าไปในวิธีการออกแบบที่คุณถูกสอนในโรงเรียน เรายังคงต้องการสมองที่เฉียบแหลมแม้จะมีเครื่องมือคำนวณทั้งหมดที่เราพัฒนาขึ้น แต่สมองที่ดีที่สุดคือคนที่สามารถนำหลักการนี้เข้าไปในวิธีการออกแบบที่ถูกสอน เพื่อให้มันพร้อมใช้งานโดยอัตโนมัติสำหรับสมองที่ด้อยกว่า!
ทีนี้ผมจะดูอีกตัวอย่างหนึ่ง และหลักการที่ทำให้ผมสามารถหาผลเฉลยของปัญหาสำคัญได้ ผมได้รับสมการเชิงอนุพันธ์
คุณจะเห็นทันทีว่าเงื่อนไขที่อนันต์ (condition at infinity) ก็คือการทำให้ด้านขวาของสมการเชิงอนุพันธ์เท่ากับ 0 ดังแสดงใน Figure 20.9
Figure 20.9—สมการ y" = sinh y – kx
แต่ลองพิจารณาเรื่องความเสถียร ถ้า y ณ จุด x ที่ไกลออกไปมีค่าใหญ่เกินไปเล็กน้อย sinh y ก็จะใหญ่เกินไปมาก อนุพันธ์อันดับสองก็จะเป็นบวกมาก และเส้นโค้งก็จะพุ่งขึ้นไปสู่บวกอนันต์ ในทำนองเดียวกัน ถ้า y เล็กเกินไป เส้นโค้งก็จะพุ่งลงไปสู่ลบอนันต์ และไม่สำคัญว่าคุณจะไปทางไหน จากซ้ายไปขวาหรือขวาไปซ้าย ในอดีตผมเคยใช้เทคนิคที่ชัดเจนเมื่อเจอสนามทิศทางที่ divergent นั่นคือการอินทิเกรตในทิศทางตรงกันข้าม และได้ผลเฉลยที่แม่นยำ แต่ในปัญหาข้างต้น เหมือนกับคุณกำลังเดินบนสันทราย (crest of a sand dune) และเมื่อเท้าทั้งสองข้างอยู่คนละด้านของสันทรายแล้ว คุณก็จะลื่นไถลลงไปอย่างหลีกเลี่ยงไม่ได้
คุณคงพอจะเชื่อว่าถึงแม้ผมจะสามารถหาการกระจายแบบ power series ที่ใช้ได้ และการประมาณแบบไม่ใช้ power series ที่ดีกว่ารอบจุดกำเนิด แต่ผมก็ยังมีปัญหาอยู่ดีเมื่อเดินไปตามเส้นโค้งผลเฉลยไกลพอสมควร โดยเฉพาะสำหรับ k ที่มีค่ามาก การวิเคราะห์ทั้งหมดที่ผมหรือเพื่อนๆ สามารถสร้างได้นั้นไม่เพียงพอ ดังนั้นผมจึงไปหาผู้เสนอปัญหา และเริ่มต้นด้วยการคัดค้านเงื่อนไขที่อนันต์ แต่ปรากฏว่าระยะทางถูกวัดในหน่วยชั้นโมเลกุล และ (ในสมัยนั้น) transistor ที่สมจริงใดๆ ก็จะมีจำนวนชั้นเป็นอนันต์อย่างมีประสิทธิภาพ ผมจึงคัดค้านตัวสมการเอง มันจะแทนความเป็นจริงได้อย่างไร? พวกเขาชนะอีกครั้ง ดังนั้นผมจึงต้องถอยกลับไปที่ห้องทำงานและคิด
มันเป็นปัญหาสำคัญในการออกแบบและทำความเข้าใจ transistor ที่กำลังถูกพัฒนาอยู่ในขณะนั้น ผมเคยอ้างเสมอว่าถ้าปัญหาสำคัญและถูกตั้งขึ้นอย่างถูกต้อง ผมจะสามารถหาผลเฉลยบางอย่างได้ ดังนั้นผมจึงต้องหาผลเฉลยให้ได้ ผมไม่มีทางหนีถ้าผมยังต้องการรักษาความภูมิใจของตัวเองไว้
ผมใช้เวลาหลายวันในการครุ่นคิดก่อนที่จะ realize ว่าความไม่เสถียรนั้นเองคือเบาะแสของวิธีการที่จะใช้ ผมจะติดตามส่วนหนึ่งของผลเฉลย โดยใช้ differential analyzer ที่ผมมีในขณะนั้น และถ้าผลเฉลยพุ่งขึ้นไป แสดงว่าผมเดาความชันที่สอดคล้องสูงเกินไปเล็กน้อย และถ้ามันพุ่งลง แสดงว่าผมเดาต่ำเกินไปเล็กน้อย ดังนั้นทีละส่วนผมจึงเดินบนสันทราย และทุกครั้งที่ผลเฉลยลื่นไถลไปทางใดทางหนึ่ง ผมก็รู้ว่าต้องทำอย่างไรเพื่อกลับเข้าสู่เส้นทาง ใช่แล้ว การมีความภูมิใจในความสามารถที่จะส่งมอบสิ่งที่จำเป็นนั้นเป็นประโยชน์อย่างมากในการได้ผลลัพธ์สำคัญภายใต้สภาวะที่ยากลำบาก มันคงเป็นเรื่องง่ายมากที่จะปัดปัญหาทิ้งว่าแก้ไม่ได้ ตั้งคำถามผิด หรือข้อแก้ตัวใดๆ ที่คุณอยากบอกตัวเอง แต่ผมยังคงเชื่อว่าปัญหาสำคัญที่ถูกตั้งขึ้นอย่างถูกต้องสามารถใช้ดึงความรู้ที่มีประโยชน์ซึ่งจำเป็นออกมาได้ ปัญหา space charge หลายปัญหาที่ผมคำนวณแสดงให้เห็นความไม่เสถียรที่ยากลำบากแบบเดียวกันในทั้งสองทิศทาง
ผมต้องแนะนำแนวคิดของการทดสอบ Rorschach สำหรับเรื่องต่อไป ซึ่งเป็นที่นิยมในวัยเด็กของผม หยดหมึกถูกวางบนแผ่นกระดาษ มันถูกอัดบนรอยพับ และเมื่อเปิดออกคุณจะได้รอยเปื้อนที่สมมาตรซึ่งมีรูปร่างแบบสุ่มโดยพื้นฐาน ชุดของรอยเปื้อนเหล่านี้จะถูกแสดงให้ผู้ถูกทดสอบดู และพวกเขาจะถูกถามให้รายงานสิ่งที่พวกเขาเห็น คำตอบของพวกเขาถูกใช้เพื่อวิเคราะห์ "บุคลิกภาพ" ของบุคคลนั้น แน่นอนว่าสิ่งที่บุคคลรายงานเป็นเพียงจินตนาการของพวกเขา เนื่องจากรอยเปื้อนนั้นมีรูปร่างแบบสุ่มโดยพื้นฐาน มันเหมือนกับการดูเมฆบนท้องฟ้าและพูดคุยว่ารูปร่างของมันคล้ายอะไร เป็นจินตนาการของคุณไม่ใช่ความเป็นจริงที่คุณกำลังพูดถึง และในแง่นี้ มันก็เปิดเผยบางอย่างเกี่ยวกับตัวคุณ ไม่ใช่เกี่ยวกับเมฆ ผมเชื่อว่าวิธีการใช้รอยหมึกนี้ไม่ได้ใช้งานอีกแล้ว
มาถึงเรื่องต่อไปกัน เพื่อนนักจิตวิทยาที่ Bell Telephone Laboratories เคยสร้างเครื่องจักรที่มีสวิตช์ประมาณ 12 ตัว และไฟสีแดงกับสีเขียวหนึ่งดวง คุณตั้งสวิตช์ กดปุ่ม แล้วคุณจะได้ไฟสีแดงหรือสีเขียว หลังจากคนแรกลอง 20 ครั้ง พวกเขาก็เขียนทฤษฎีเกี่ยวกับวิธีทำให้ไฟสีเขียวติด ทฤษฎีนั้นถูกส่งต่อให้เหยื่อรายถัดไป และพวกเขาก็ลอง 20 ครั้งและเขียนทฤษฎีของตัวเอง และดำเนินต่อไปเรื่อยๆ อย่างไม่มีที่สิ้นสุด วัตถุประสงค์ที่แจ้งไว้ของการทดสอบคือเพื่อศึกษาว่าทฤษฎีมีวิวัฒนาการอย่างไร
แต่เพื่อนของผม ซึ่งเป็นคนแบบนั้น ได้เชื่อมต่อไฟเข้ากับแหล่งกำเนิดแบบสุ่ม (random source)! วันหนึ่งเขาพูดกับผมว่าไม่มีใครในทุกการทดสอบ (และพวกเขาล้วนเป็นนักวิทยาศาสตร์ชั้นสูงของ Bell Telephone Laboratories) ที่เคยบอกว่าไม่มี message ผมรีบตอบเขาทันทีว่าไม่มีสักคนที่เป็น statistician หรือ information theorist ซึ่งเป็นคนสองกลุ่มที่คุ้นเคยกับความสุ่ม (randomness) เป็นอย่างดี การตรวจสอบก็ยืนยันว่าผมพูดถูก!
นี่คือคำวิจารณ์ที่น่าเศร้าต่อการศึกษาของคุณ คุณถูกสอนอย่างดีว่าทฤษฎีหนึ่งถูกแทนที่ด้วยอีกทฤษฎีหนึ่งอย่างไร แต่คุณแทบไม่เคยถูกสอนให้แทนที่ทฤษฎีที่สวยงามด้วยความสุ่ม (randomness) เลย! และนี่คือสิ่งที่จำเป็น: ความสามารถที่จะบอกว่าทฤษฎีที่คุณเพิ่งอ่านนั้นไม่ดี และไม่มีรูปแบบที่แน่ชัดในข้อมูล มีเพียงความสุ่มเท่านั้น
ผมต้องย้ำในจุดนี้ statisticians ถามตัวเองเป็นประจำว่า "สิ่งที่ฉันเห็นมีจริง หรือเป็นแค่ random noise?" พวกเขามีการทดสอบเพื่อพยายามตอบคำถามเหล่านี้ คำตอบของพวกเขาไม่ใช่ใช่หรือไม่ใช่ แต่เป็นใช่หรือไม่ใช่ที่มีความเชื่อมั่น (confidence) ระดับหนึ่งเท่านั้น ขีดจำกัดความเชื่อมั่น 90% (90% confidence limit) หมายความว่าโดยทั่วไปแล้วในการลองสิบครั้ง คุณจะตัดสินใจผิดประมาณหนึ่งครั้ง ถ้าสมมติฐานอื่นๆ ทั้งหมดถูกต้อง! ไม่ว่าคุณจะปฏิเสธสิ่งที่เป็นจริง (type 1 error) หรือคุณล้มเหลวในการปฏิเสธสิ่งที่เป็นเท็จ (type 2 error) จำเป็นต้องมีข้อมูลมากขึ้นเพื่อให้ได้ขีดจำกัดความเชื่อมั่น 95% และในปัจจุบันข้อมูลมักมีราคาแพงมากในการรวบรวม การได้ข้อมูลเพิ่มขึ้นก็ใช้เวลาเช่นกัน ดังนั้นการตัดสินใจจึงถูกเลื่อนออกไปอีก—เป็นกลอุบายที่ชอบใช้ของคนที่มีอำนาจซึ่งไม่ต้องการรับผิดชอบในตำแหน่งของตน พวกเขามักพูดว่า "หาข้อมูลเพิ่ม"
ทีนี้ผมขอเสนออย่างจริงจังว่า simulation จำนวนมากก็ไม่ต่างอะไรจาก การทดสอบ Rorschach ผมขออ้างอิงผู้เชี่ยวชาญด้านทฤษฎีการตัดสินใจทางการจัดการที่มีชื่อเสียง Jay Forrester: "จากพฤติกรรมของระบบ ความสงสัยจะเกิดขึ้นซึ่งจะนำไปสู่การทบทวนสมมติฐานดั้งเดิม จากกระบวนการทำงานไปมาระหว่างสมมติฐานเกี่ยวกับส่วนต่างๆ และพฤติกรรมที่สังเกตได้ของภาพรวม เราจะปรับปรุงความเข้าใจของเราเกี่ยวกับโครงสร้างและพลวัตของระบบ หนังสือเล่มนี้เป็นผลลัพธ์จากการตรวจสอบและแก้ไขหลายรอบโดยผู้เขียน"
คนภายนอกจะแยกแยะสิ่งนี้ออกจากการทดสอบ Rorschach ได้อย่างไร? เขาแค่พบสิ่งที่เขาอยากพบ หรือเขาเข้าถึง "ความเป็นจริง" ได้? เสียดายที่ simulation จำนวนมากมีองค์ประกอบแบบนี้อยู่มาก คือการปรับแต่งสิ่งต่างๆ เพื่อให้ได้สิ่งที่ต้องการ มันเป็นเส้นทางที่ง่ายเกินกว่าจะเดินตาม ด้วยเหตุนี้วิทยาศาสตร์ดั้งเดิมจึงมีกลไกป้องกันจำนวนมาก ซึ่งในปัจจุบันมักถูกมองข้ามไปเฉยๆ
คุณคิดว่าคุณทำสิ่งต่างๆ ได้อย่างปลอดภัย และคุณรู้ดีกว่าเหรอ? ลองพิจารณาการทดลองแบบ double-blind ที่มีชื่อเสียงซึ่งเป็นเรื่องปกติในทางการแพทย์ แพทย์พบว่าถ้าผู้ป่วยคิดว่ากำลังได้รับการรักษาใหม่ พวกเขาก็ตอบสนองด้วยสุขภาพที่ดีขึ้น และผู้ที่คิดว่าตนอยู่ในกลุ่มควบคุม (control group) ก็รู้สึกว่าไม่ได้รับการรักษาและไม่ดีขึ้น จากนั้นแพทย์จึงสุ่มการรักษาและให้ยาหลอก (placebo) แก่ผู้ป่วยบางคน เพื่อให้ผู้ป่วยไม่สามารถตอบสนองและหลอกหมอได้ แต่ที่น่าตกใจคือแพทย์ยังพบว่าตัวแพทย์เอง ที่รู้ว่าใครได้รับการรักษาและใครไม่ได้รับ ก็พบการปรับปรุงในจุดที่พวกเขาคาดหวังและไม่พบในจุดที่พวกเขาไม่คาดหวัง เป็นทางเลือกสุดท้าย แพทย์ได้ยอมรับการทดลองแบบ double-blind อย่างกว้างขวาง—จนกว่าข้อมูลทั้งหมดจะเข้ามา ทั้งผู้ป่วยและแพทย์ต่างไม่รู้ว่าใครได้รับการรักษาและใครไม่ได้รับ จากนั้นนักสถิติจึงเปิดซองปิดผนึกและการวิเคราะห์จึงจะดำเนินการ แพทย์ที่ต้องการความซื่อสัตย์ กลับพบว่าพวกเขาไม่สามารถซื่อสัตย์ได้! คุณทำ simulation ได้ดีกว่าขนาดที่คุณสามารถไว้ใจได้ว่าจะไม่พบสิ่งที่คุณอยากพบ? การหลอกตัวเอง (self-delusion) เป็นลักษณะที่พบบ่อยมากในมนุษย์
ผมเริ่ม Chapter 19 ด้วยปัญหาที่ว่าทำไมใครๆ ถึงควรเชื่อใน simulation ที่ถูกทำขึ้น ตอนนี้คุณคงเห็นปัญหาชัดเจนขึ้นแล้ว มันไม่ใช่เรื่องง่ายที่จะตอบ นอกจากคุณจะใช้ความระมัดระวังมากกว่าที่ทำกันโดยทั่วไปมาก จำไว้ว่าคุณอาจจะต้องอยู่ในฝั่งรับของ simulation จำนวนมากเพื่อตัดสินคำถามมากมายที่จะเกิดขึ้นในอนาคตที่เต็มไปด้วยเทคโนโลยีของคุณ ไม่มีวิธีอื่นนอกจาก simulation ที่จะตอบคำถาม "What if…?" ใน Chapter 18 ผมกล่าวว่าการตัดสินใจต้องถูกทำขึ้นและไม่สามารถเลื่อนออกไปตลอดกาลถ้าองค์กรไม่ต้องการที่จะสะเปะสะปะและล่องลอยไปอย่างไร้จุดหมาย—และผมกำลังสมมติว่าคุณจะเป็นหนึ่งในคนที่ต้องทำการเลือกเหล่านั้น Simulation เป็นสิ่งจำเป็นในการตอบ "What if…?" แต่มันเต็มไปด้วยอันตรายและไม่ควรถูกเชื่อถือเพียงเพราะว่าเครื่องจักรขนาดใหญ่และเวลามากมายถูกใช้เพื่อให้ได้หน้าที่พิมพ์อย่างสวยงามหรือภาพสีบน oscilloscope ถ้าคุณเป็นคนที่ต้องตัดสินใจขั้นสุดท้าย ในความหมายที่แท้จริงแล้วคุณเป็นผู้รับผิดชอบ การตัดสินใจของคณะกรรมการ ซึ่งมักจะกระจายความรับผิดชอบ ไม่ค่อยจะดีที่สุดในทางปฏิบัติ—ส่วนใหญ่แล้วมันเป็นการประนีประนอมที่ไม่มีคุณธรรมของเส้นทางใดๆ และมักจะจบลงที่ความธรรมดา ประสบการณ์สอนผมว่าปกติแล้วเจ้านายที่เด็ดขาดดีกว่าเจ้านายที่เลื่อนลอย—คุณรู้ว่าคุณอยู่จุดไหนและสามารถทำงานที่ต้องทำให้สำเร็จต่อไปได้!
คำถาม "What if…?" จะเกิดขึ้นบ่อยครั้งในอนาคตของคุณ ดังนั้นจึงจำเป็นที่คุณต้องเชี่ยวชาญแนวคิดและความเป็นไปได้ของ simulations และพร้อมที่จะตั้งคำถามกับผลลัพธ์ และเจาะลึกในรายละเอียดเมื่อจำเป็น