Mathcenter Forum  

Go Back   Mathcenter Forum > คณิตศาสตร์ทั่วไป > ซอฟต์แวร์คณิตศาสตร์
สมัครสมาชิก คู่มือการใช้ รายชื่อสมาชิก ปฏิทิน ข้อความวันนี้

ตั้งหัวข้อใหม่ Reply
 
เครื่องมือของหัวข้อ ค้นหาในหัวข้อนี้
  #1  
Old 09 กรกฎาคม 2008, 02:08
คุณชายน้อย คุณชายน้อย ไม่อยู่ในระบบ
จอมยุทธ์หน้าหยก
 
วันที่สมัครสมาชิก: 05 กรกฎาคม 2008
ข้อความ: 156
คุณชายน้อย is on a distinguished road
Default Mathematica Programming เรื่อง Graph2D ตอนที่ 1

Mathematica Programming เรื่อง Graph2D ตอนที่ 1

อารัมพบท
ในการคำนวณต่าง ๆ ในโปรแกรม Mathematica ผู้ใช้ต้องคำนึงถึงเซตของ Domain และ Range ของผลลัพธ์ที่ต้องการหาค่าเป็นสำคัญ ค่า Config การคำนวณในโปรแกรม Mathematica มีการคำนวณจาก $\mathbb{C} \rightarrow \mathbb{C} $ เมื่อ $\mathbb{C} $ เป็นจำนวนเชิงซ้อน ทำให้การคำนวณต่าง ๆ ที่อยู่ในเซตของจำนวนจริง $\mathbb{R} $ เกิด Error โดยที่ผู้ใช้ส่วนใหญ่มักจะคิดว่าเป็น Bug ของโปรแกรมหรือเกิดจากความไม่รู้จริงในการใช้โปรแกรม

Mathematica Programming เรื่อง Graph2D ตอนที่ 1
การวาด Graph2D ใน Mathematica เราจำเป็นต้องกำหนด Domain และ Range ใน Source Code เพื่อให้คำนวณจาก $\mathbb{R} \rightarrow \mathbb{R} $ ในคำสั่ง Plot หรือ ImplicitPlot โดยมีคำสั่งในการกำหนด Domain และ Range ที่เป็นจำนวนจริง ดังนี้

RealOnly /: On[RealOnly] := Get[ "Miscellaneous`RealOnly`"];
RealOnly /: Off[RealOnly] := (Unprotect[Power, Solve, Roots]; Clear[Power, Solve, Roots]; Protect[Power, Solve, Roots];Remove["Miscellaneous`RealOnly`Nonreal"]; $Post =. )

เมื่อต้องการเรียกใช้การคำนวณใน R ให้ใช้คำสั่ง On[RealOnly] และเมื่อคำนวณผลลัพธ์ที่ต้องการเสร็จแล้ว ให้คืน Config เดิม ด้วยคำสั่ง Off[RealOnly] ดังตัวอย่างต่อไปนี้

10 กรกฎาคม 2008 00:14 : ข้อความนี้ถูกแก้ไขแล้ว 4 ครั้ง, ครั้งล่าสุดโดยคุณ คุณชายน้อย
เหตุผล: ขออภัย Graph2D Map จาก R->R นะครับ ไม่ใช่ R^2->R
ตอบพร้อมอ้างอิงข้อความนี้
  #2  
Old 14 กันยายน 2008, 01:17
Onasdi's Avatar
Onasdi Onasdi ไม่อยู่ในระบบ
กระบี่ประสานใจ
 
วันที่สมัครสมาชิก: 12 พฤษภาคม 2005
ข้อความ: 760
Onasdi is on a distinguished road
Default

ขอบคุณครับที่ให้ความรู้ เป็นประโยชน์มากครับ พอดีวันนี้พยายามจะวาดกราฟที่มี x1/3 อยู่ด้วย แล้วมันก็ Error ตอนนี้เข้าใจแล้วครับว่าทำไม

แล้วผมก็พบอีกวิธีนึงที่วาดได้เหมือนกัน(สำหรับ y=x1/3) ก็คือใช้ Plot[Abs[x^(1/3)]*x/(Abs[x]), {x, -3, 3}]; ครับ

แล้ววันหลังจะมาอ่านตอนต่อไปต่อนะครับ
ตอบพร้อมอ้างอิงข้อความนี้
  #3  
Old 15 กันยายน 2008, 23:02
คุณชายน้อย คุณชายน้อย ไม่อยู่ในระบบ
จอมยุทธ์หน้าหยก
 
วันที่สมัครสมาชิก: 05 กรกฎาคม 2008
ข้อความ: 156
คุณชายน้อย is on a distinguished road
Default

อ้างอิง:
ข้อความเดิมเขียนโดยคุณ Onasdi View Post
ขอบคุณครับที่ให้ความรู้ เป็นประโยชน์มากครับ พอดีวันนี้พยายามจะวาดกราฟที่มี x1/3 อยู่ด้วย แล้วมันก็ Error ตอนนี้เข้าใจแล้วครับว่าทำไม

แล้วผมก็พบอีกวิธีนึงที่วาดได้เหมือนกัน(สำหรับ y=x1/3) ก็คือใช้ Plot[Abs[x^(1/3)]*x/(Abs[x]), {x, -3, 3}]; ครับ

แล้ววันหลังจะมาอ่านตอนต่อไปต่อนะครับ
เป็นวิธีการแก้ปัญหาโจทย์ที่ดีครับ แต่ขาดการแก้ที่กระบวนการคิด ... ไม่ว่ากันนะครับ ยกตัวอย่างเช่น ถ้าเปลี่ยนโจทย์ใหม่คือ จงวาดกราฟของ
f(x) = $\sqrt[5]{x}$ $\sqrt[3]{2x-1} $ ในกระบวนการแก้ปัญหาโจทย์จะใช้แบบเดิมได้หรือเปล่าหน่า... ลองคิดดูนะครับ
ตอบพร้อมอ้างอิงข้อความนี้
  #4  
Old 16 กันยายน 2008, 18:16
Onasdi's Avatar
Onasdi Onasdi ไม่อยู่ในระบบ
กระบี่ประสานใจ
 
วันที่สมัครสมาชิก: 12 พฤษภาคม 2005
ข้อความ: 760
Onasdi is on a distinguished road
Default

อ้างอิง:
ข้อความเดิมเขียนโดยคุณ คุณชายน้อย View Post
เป็นวิธีการแก้ปัญหาโจทย์ที่ดีครับ แต่ขาดการแก้ที่กระบวนการคิด ... ไม่ว่ากันนะครับ ยกตัวอย่างเช่น ถ้าเปลี่ยนโจทย์ใหม่คือ จงวาดกราฟของ
f(x) = $\sqrt[5]{x}$ $\sqrt[3]{2x-1} $ ในกระบวนการแก้ปัญหาโจทย์จะใช้แบบเดิมได้หรือเปล่าหน่า... ลองคิดดูนะครับ
ทำอย่างนี้ครับ Plot[Abs[x^(1/5)]*x/(Abs[x]) * Abs[(2x-1)^(1/3)]*(2x-1)/(Abs[2x-1]), {x, -3, 3}]
ตอบพร้อมอ้างอิงข้อความนี้
  #5  
Old 17 กันยายน 2008, 01:34
คุณชายน้อย คุณชายน้อย ไม่อยู่ในระบบ
จอมยุทธ์หน้าหยก
 
วันที่สมัครสมาชิก: 05 กรกฎาคม 2008
ข้อความ: 156
คุณชายน้อย is on a distinguished road
Default

อืม... ต้องดูว่าประเด็นคืออะไร ประเด็นไม่ได้อยู่ที่ฟังก์ชันคี่ แต่อยู่ที่กระบวนการ Mapping การทำแบบนี้เป็นการ Map จาก C -> R ซึ่งก็ไม่เป็นไรเพราะถึง Domain เปลี่ยนไป แต่ค่าของ Range ใกล้เคียงกัน เพราะเป็น norm a+bi ไม่เป็นไร ผมยอมแพ้ดีกว่า แต่ถ้าไม่ใช่เป็นการ plot graph อาจจะ Error ตัวอย่าง Solve[x^(2/3)==1,x] คำตอบขาดไป 1 ตัวเพราะอะไร?

ปล. เพื่อความสมบูรณ์ผมให้ Source เพิ่มเติม เผื่อเกิด Idea ใหม่ๆ และผมต้อง oversea aboard อาจจะกลับมาตอบไม่ทันใจ .... ต้องขออภัยไว้ก่อน
ตอบพร้อมอ้างอิงข้อความนี้
  #6  
Old 18 กันยายน 2008, 18:54
Onasdi's Avatar
Onasdi Onasdi ไม่อยู่ในระบบ
กระบี่ประสานใจ
 
วันที่สมัครสมาชิก: 12 พฤษภาคม 2005
ข้อความ: 760
Onasdi is on a distinguished road
Default

สำหรับ Solve[x^(2/3)==1,x] ก็ต้องเปลี่ยนที่ x1/3 ครับ ก็คือ x^(2/3) -> (x^(1/3))^2 ->(Abs[x^(1/3)]*x/Abs[x])^2

Source code ที่ให้มาไม่ค่อยเข้าใจครับ คำสั่งตรงบรรทัดที่มี g อะครับ
ตอบพร้อมอ้างอิงข้อความนี้
  #7  
Old 22 กันยายน 2008, 22:31
คุณชายน้อย คุณชายน้อย ไม่อยู่ในระบบ
จอมยุทธ์หน้าหยก
 
วันที่สมัครสมาชิก: 05 กรกฎาคม 2008
ข้อความ: 156
คุณชายน้อย is on a distinguished road
Default

กลับมาแล้วครับ....
ผมพยายามให้คุณเข้าใจปัญหา ไม่ใช่เปล่ยนแปลงโจทย์ ปัญหาอยู่ที่การ Mapping ในกรณี Plot และส่วน Solve ปัญหาอยู่ที่ Assumption (มันคืออะไร หาได้ที่ help) การแก้โจทย์อาจทำให้ Domain เปลี่ยนแปลงไปและอาจมีปัญหาถ้ามีการคำนวณขั้นสูงขึ้น ตัวอย่างเช่น ในกรณีที่ต้องการ Plot เราอาจเปลี่ยนแปลงโจทย์ได้อย่างที่คุณทำ แต่ก็ต้องมาเขียนคำสั่งเพื่อเปลี่ยนแปลงโจทย์ที่เป็นฟังก์ชันคี่ เช่น x^(1/3) = Abs[x^(1/3)] (x/Abs[x]) โดเมนเปลี่ยนไป สำหรับ Plot ไม่มีปัญหาสำหรับ Piecewise Continuous ส่วนคำสั่งบรรทัด g เป็นการเปลี่ยนพจน์ที่ยกกำลังรากคี่ของฟังก์ชัน f ให้เป็นสิ่งที่คุณต้องการคือ a^b = Abs[a^b] (a/Abs[a])

โดยปกติ เราไม่ค่อยทำการเปลี่ยนแปลงโจทย์ แต่เราจะดู Scope ของปัญหา แล้วแก้ที่ปัญหา การแก้แบบนี้เป็นการแก้ที่ function ถ้าเราต้องการให้เป็นแบบ General เราควรสร้างเป็น Module ดังนี้ Download Source เป็นการสร้าง Module MyPlot เพื่อจะสามารถใช้ Function MyPlot วาดกราฟได้ทุกฟังก์ชันที่ต้องการ แต่ก็ได้เฉพาะ MyPlot เพราะยังมีคำสั่งอีกมากมายเช่น Solve ที่มีปัญหา และอื่น ๆ ... ถ้าไม่แก้ที่ต้นเหตุ เราก็จะต้องเขียน Module ไปเลย ๆ เช่น MySove , My... ซึ่งไม่ใช่หนทางที่ดีเลย ...
ตอบพร้อมอ้างอิงข้อความนี้
  #8  
Old 23 กันยายน 2008, 01:56
Onasdi's Avatar
Onasdi Onasdi ไม่อยู่ในระบบ
กระบี่ประสานใจ
 
วันที่สมัครสมาชิก: 12 พฤษภาคม 2005
ข้อความ: 760
Onasdi is on a distinguished road
Default

เข้าใจแล้วครับ
ตอบพร้อมอ้างอิงข้อความนี้
ตั้งหัวข้อใหม่ Reply


หัวข้อคล้ายคลึงกัน
หัวข้อ ผู้ตั้งหัวข้อ ห้อง คำตอบ ข้อความล่าสุด
มันให้ลงทะเบียน mathematica 6.0 อะครับ GunUltimateID ซอฟต์แวร์คณิตศาสตร์ 3 14 พฤษภาคม 2008 12:04
อยากรู้วิธีทำ mathematica 6.01 ให้เป็นรูปเรขาคณิต maun06 ซอฟต์แวร์คณิตศาสตร์ 1 11 มีนาคม 2008 14:14
Dynamic Programming t.B. ปัญหาคณิตศาสตร์ทั่วไป 4 20 กุมภาพันธ์ 2008 20:55
Combinatorics and Linear Programming ToT คอมบินาทอริก 5 13 กุมภาพันธ์ 2004 20:13


กฎการส่งข้อความ
คุณ ไม่สามารถ ตั้งหัวข้อใหม่ได้
คุณ ไม่สามารถ ตอบหัวข้อได้
คุณ ไม่สามารถ แนบไฟล์และเอกสารได้
คุณ ไม่สามารถ แก้ไขข้อความของคุณเองได้

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
ทางลัดสู่ห้อง


เวลาที่แสดงทั้งหมด เป็นเวลาที่ประเทศไทย (GMT +7) ขณะนี้เป็นเวลา 03:10


Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Modified by Jetsada Karnpracha