สวัสดี...ครับ.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
การเคลื่อนที่.
Advertisements

การพิสูจน์ทางคณิตศาสตร์
แปลคำศัพท์สำคัญ Chapter 2 หัวข้อ 2. 1 – 2
ทฤษฎีบทลิมิต (Limit Theorem).
ลิมิตและความต่อเนื่อง
ลำดับลู่เข้า และลำดับลู่ออก
บทที่ 3 ลำดับและอนุกรม (Sequences and Series)
(Some Extension of Limit Concept)
ความต่อเนื่อง (Continuity)
การดำเนินการของลำดับ
ลำดับทางเดียว (Monotonic Sequences)
DSP 4 The z-transform การแปลงแซด
นางสาวกิติยา จันทรุกขา นางสาวอรุณโรจน์ ชูสกุล
กลุ่มสาระการเรียนรู้ศิลปะ
ลิมิตที่อนันต์และ ลิมิตค่าอนันต์
Engineering Problem Solving Program by Using Finite Element Method
ขอต้อนรับเข้าสู่ สาระที่ 3 เรขาคณิต. ขอต้อนรับเข้าสู่ สาระที่ 3 เรขาคณิต.
Chapter 1 โครงสร้างข้อมูลและอัลกอริธึมส์
Ordering and Liveness Analysis ลำดับและการวิเคราะห์บอกความ เป็นอยู่หรือความตาย.
ตัวอย่าง วัตถุก้อนหนึ่ง เคลื่อนที่แนวตรงจาก A ไป B และ C ตามลำดับ ดังรูป 4 m A B 3 m 1 อัตราเร็วเฉลี่ยช่วง A ไป B เป็นเท่าใด.
บทเรียนคอมพิวเตอร์ช่วยสอน (CAI)
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
ภาควิชาวิศวกรรมคอมพิวเตอร์ มิถุนายน ๒๕๕๒
Power Series Fundamentals of AMCS.
TWO-DIMENSIONAL GEOMETRIC
DSP 4 The z-transform การแปลงแซด
บทที่ 2 หลักการแก้ปัญหา
ลำดับจำกัดและลำดับอนันต์
ความสัมพันธ์ ความสัมพันธ์ เป็นเซตของคู่อันดับ
ความสัมพันธ์ ความสัมพันธ์ เป็นเซตของคู่อันดับ
หน่วยที่ 1 หลักการทำโครงงานคอมพิวเตอร์
Application of Graph Theory
หน่วยที่ 8 อนุพันธ์ย่อย (partial derivative).
Use Case Diagram.
ระบบอนุภาค.
การออกแบบโปรแกรมอย่างมีโครงสร้าง Structured Design
การจัดแสงสำหรับงานโทรทัศน์
การแปลงภาพสีเทาให้เป็นภาพขาวดำ
ความรู้พื้นฐานเกี่ยวกับการวิจัย
อสมการ (Inequalities)
ฟิสิกส์ เรื่อง แสง จัดทำโดย นาย ปณิธาน กาญจนถวัลย์ ม.4/3 เลขที่ 12
โปรแกรมคำนวณค่าไซน์ (Sine)
ความสัมพันธ์เวียนบังเกิด
คณิตศาสตร์คอมพิวเตอร์
คุณสมบัติการหารลงตัว
ค33211 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 5
จำนวนเต็มกับการหารลงตัว
สัปดาห์ที่ 7 การแปลงลาปลาซ The Laplace Transform.
การวิเคราะห์วงจรโดยใช้ฟูริเยร์
การออกแบบโปรแกรม ขั้นตอนการแก้ปัญหา การนิยามปัญหา (Problem definition)
การเลือกและปรับรูปทรงวัตถุ การเลือกและปรับรูปทรงวัตถุ
นางสาวอารมณ์ อินทร์ภูเมศร์
นางสาวอารมณ์ อินทร์ภูเมศร์
เรื่อง สมาร์ทคิดกับคณิตศาสตร์
วิธีเรียงสับเปลี่ยนและวิธีจัดหมู่
วงรี ( Ellipse).
หลักการเขียนโปรแกรม ( )
แบบฝึกหัด จงหาคำตอบที่ดีที่สุด หรือหาค่ากำไรสูงสุด จาก
Recursive Method.
การแก้ปัญหาโปรแกรม (Flowchart)
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หลักการเขียนโปรแกรม ( )
องค์ประกอบศิลป์ : รูปร่าง และรูปทรง
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
โรงเรียนวังไกลกังวล หัวหิน
บทที่ 1 จำนวนเชิงซ้อน.
โครงสร้างข้อมูลแบบ สแตก (stack)
การแบ่งแยกและเอาชนะ Divide & Conquer
องค์ประกอบศิลป์ : รูปร่าง และรูปทรง
ค31212 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 2
ใบสำเนางานนำเสนอ:

สวัสดี...ครับ

สัมมนา เรื่อง Filled Julia Set เสนอ อาจารย์ พัชรี เลิศวิจิตรศิลป์ จัดทำโดย นาย พจศิษฏ์ ปัดภัย 42041004 อาจารย์ที่ปรึกษา ผศ. ประวัติ พัฒนิบูลย์

Filled Julia Set

แนะนำ งานศิลปะส่วนใหญ่มักเริ่มมาจากรูปทรงเรขาคณิตพื้นฐาน เช่น เส้นตรง วงกลม วงรี รูปหลายเหลียม ภาคตัดกรวย ฯลฯ หรือแม้แต่ในธรรมชาติเองก็ตามก็ยังมีรูปทรงทางเรขาคณิต เช่น การโคจรรอบดวงอาทิตย์ของโลกเป็นรูปวงรีที่สวยงาม แต่มีอีกหลาย ๆสิ่งในธรรมชาติที่ซับซ้อนและไม่เป็นระเบียบ ซึ่งไม่สามารถใช้รูปทรงเรขาคณิตที่เราคุ้นเคยได้ เช่น รูปภูเขา ต้นไม้ สัตว์ ความซับซ้อนของทางเดินเลือดในร่างกายของมนุษย์ รวมทั้งโครงสร้างของระบบประสาท ดังนั้น Fractal จึงมามีบทบาทสำคัญในการสร้างรูปที่มีความซับซ้อน และสามารถประยุกต์นำไปใช้ประโยชน์ในทางคอมพิวเตอร์ได้ เช่น คอมพิวเตอร์กราฟิก

Fractal คือ วัตถุหรือสิ่งที่ถูกมองทางเรขาคณิตซึ่งมีการเปลี่ยนแปลงทั้งขนาดและทิศทางอยู่ตลอดเวลาโดยมีการเปลี่ยนแปลงในลักษณะเดิมซ้ำ ๆ กันไปเรื่อย ๆ ตัวอย่าง Fractal ในธรรมชาติ เช่น เส้นใยประสาทในสมอง เนื้อเยื้อประสาท บรอคโคลี ต้นไม้ ทางเดินเลือดในร่างกายของมนุษย์ ฯลฯ ซึ่งมีการเปลี่ยนแปลงในลักษณะเดิมซ้ำ ๆ กันไปเรื่อย ๆ

Iteration กำหนดให้ F เป็นฟังก์ชัน เลือก x0 เป็นค่าเริ่มต้นแทนลงใน F แล้วได้ผลลัพธ์คือ x1 แล้วนำ x1 แทนลงใน F ทำซ้ำไป เรื่อย ๆ แสดงได้ดังนี้ F(x0) = x1 F(x1) = F(F(x0)) = x2 F(x2) = F(F(F(x0))) = x3 ….. F(xn-1) = F(…( F( x0)…) = xn

เราแทนการทำซ้ำ n ครั้ง ด้วย F n(x0) และเรียกว่า iterat อันดับที่ n ของ F เช่น F(F( x0)) = F2(x0) เรียกว่า iterat อันดับที่ 2 ของ F ตัวอย่าง กำหนดให้ F(x) = x2 + 1 จะได้ F2(x) = (x2 + 1)2 + 1 F3(x) = ((x2 + 1)2 + 1)2 + 1 ….

Orbit นิยาม กำหนดให้ x0 เป็นจำนวนจริง Orbit ของ x0 ภายใต้ F คือ ลำดับของจุด x0 , x1 , x2 , x3 , … , xn , … โดยที่ x1 = F(x0) x2 = F 2(x0) … xn = F n(x0) และเรียกจุด x0 ว่า Seed of the Orbit

ตัวอย่าง กำหนดให้ F(x) = เมื่อเลือก x0 = 256 เป็นจุดเริ่มต้น จะได้ Orbit ของ x0 คือ x0 = 256 x1 = = 16 x2 = = 4 x3 = = 2 x4 = = 1.41 …..

Fixed Point ในกรณีที่ทำซ้ำไปเรื่อย ๆ ปรากฏว่าได้ค่าเท่าเดิมเราจะเรียกค่านั้นว่า Fixed Point กล่าวคือ ที่ F(x0) = x0 ซึ่งจะได้ว่า F2(x0) = F3(x0) = …. = Fn(x0) = x0

กำหนดให้ F(x) = sin x เมื่อเริ่มต้นที่ x0 = 0 ตัวอย่าง กำหนดให้ F(x) = sin x เมื่อเริ่มต้นที่ x0 = 0 จะได้ F(x0) = F2(x0) = …. = Fn(x0) = sin 0 = 0 เพราะฉะนั้น 0 คือ fixed point ของ F(x) = sin x ฟังก์ชันหนึ่งอาจมี fixed point ได้หลายจุด ขึ้นอยู่กับการ เลือก x0 เช่น 0,1,-1 เป็น fixed point ของ F(x) = x3 และ 0,1 เป็น fixed point ของ F(x) = x2

จากการศึกษาพบว่าพฤติกรรมที่เป็นไปได้ของ Orbit ของ x0 คือ 1) Orbit จะลู่เข้าสู่ fixed point หรือ เป็นคาบ 2) Orbit จะลู่ออกสู่ อนันต์ (infinity) 3) Orbit อาจอยู่ในช่วงใดช่วงหนึ่ง หรืออาจกล่าวได้ว่า Orbit มีขอบเขต

Complex Dynamics ในทำนองเดียวกันหากพิจารณาในฟังก์ชันจำนวน เชิงซ้อน Orbit ของ z0 คือ ลำดับ z0, F( z0), F 2( z0), …., Fn( z0),…. เมื่อ z0 คือ จำนวนเชิงซ้อน

Julia Set (Gaston Julia) เป็นการศึกษาถึงการส่งของ ฟังก์ชันที่มีการทำซ้ำ ๆ (Iteration) บนระนาบเชิงซ้อน ในเบื้องต้นเราพิจารณาฟังก์ชัน Quadratic โดยเขียนแทนด้วย Qc(z) = z2 + c เมื่อ z คือ จำนวนเชิงซ้อน c คือ จำนวนเชิงซ้อนคงที่

Q 0(z) = z2 คือ z0 = reiθ Q0 (z0) = z1 = r2 ei(2θ) ถ้าเขียน z ในรูป z = reiθ จะได้ Orbit ของ z0 ภายใต้ Q 0(z) = z2 คือ z0 = reiθ Q0 (z0) = z1 = r2 ei(2θ) Q02(z0) = z2 = r4 ei(4θ) Q03(z0) = z3 = r8 ei(8θ) …. Q0n(z0) = zn =

เมื่อ |z| > 1 จะได้ว่า Q0n(z) → ∞ เมื่อ n → ∞ จาก r = |z| เมื่อ |z| > 1 จะได้ว่า Q0n(z) → ∞ เมื่อ n → ∞ |z| < 1 จะได้ว่า Q0n(z) → 0 เมื่อ n → ∞ |z| = 1 จะได้ วงกลมรัศมี 1 หน่วย

นิยาม Orbit ของ z ภายใต้ Q c(z) จะมีขอบเขต (bounded) ถ้ามี K ที่ทำให้ |Qcn(z)| < K ทุก n นิยาม Filled Julia Set ของ Qc (z) คือ เซตของจุดซึ่ง Orbits มีขอบเขต แทนด้วย Kc และ Julia Set ของ Qc(z) คือ ขอบเขตของ Filled Julia Set แทนด้วย Jc

ในการจะหา Filled Julia Set ตามนิยามเราต้อง ตรวจสอบดูว่า Orbit ของ z ใดมีขอบเขตคือต้องตรวจสอบดูว่า |Qcn(z)| → ∞ เมื่อ n → ∞ ทฤษฎีบท ถ้า |z| ≥ |c| > 2 แล้ว | Qcn(z)| → ∞ เมื่อ n → ∞

พิสูจน์ โดยอสมการอิงสามเหลี่ยม |Qc (z)| ≥ |z|2 - |c| ≥ |z|2 - |z| (จาก |z| ≥ |c| ) = |z|(|z| - 1) จาก |z| > 2 จะมี λ > 0 ที่ซึ่ง |z| - 1 > 1 + λ ดังนั้น |Qc(z)| > (1 + λ)|z| |Qcn(z)| > (1 + λ)n|z| ดังนั้น Orbits ของ z ลู่ออกสู่อนันต์

การคำนวณ Filled Julia Set แนวคิด เราจะอาศัยหลักการตามทฤษฎีข้างต้นคือจะแบ่งพื้นที่บนระนาบออกเป็นตารางจุดเล็ก ๆ แล้วตรวจดูว่าจุดในตารางนั้นมี Orbits ที่ลู่ออกสู่อนันต์หรือไม่ ถ้าไม่มีก็จะให้ตารางจุดนั้นเป็นสีดำ โดยการทำซ้ำ( Iteration) ตามที่กำหนด และภายใต้เงื่องไข |Qcn(z)| < 2 เพราะถ้าค่า |z| ≥ |c| > 2 แล้ว จะลู่ออกสู่อนันต์ตามทฤษฎี

โปรแกรมการคำนวณ Filled Julia Set โปรแกรมที่แสดงต่อไปนี้เขียนขึ้นโดยใช้ mathematica โดยเริ่มจากฟังก์ชัน quadratic แล้วประยุกต์ไปเป็น ฟังก์ชัน sin z ,cos z และ ฟังก์ชัน exponential

ฟังก์ชัน quadratic Qc(z) = z2 + c Orbitcheckqu [z_,c_,iters_] :=(s=z; i=1; While [i≤iters&&Abs[s]<2,i++;s=s^2+c]; If [i==iters+1,{Re[z],Im[z]}#&/@{1,-1},{}]) FilledJuliaqu[c_,{meshx_,meshy_},{x0_,x1_}, {y0_,y1_}, iters_]:= Show[ Graphics[{PointSize[0.002], Map[Point, Flatten[Outer[orbitcheckqu[#1+I#2,N[c],iters]&, Range[x0,x1,(x1-x0)/meshx], Range[y0,y1,(y1-y0)/meshy]],2]]}], AspectRatio → Automatic ,PlotRange → All ]

C = - 0.12256117 + 0.74486177I FilledJuliaqu[c,{500,500},{-1.31,0.52},{0,1.11},30]

C = - 0.11 + 0.86I FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},30]

C = - 1.32 FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50]

C = - 0.5 + 0.57I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

C = - 0.360284 + 0.100376I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50]; C = - 0.32 + 0.043I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50]; C = - 0.390541 – 0.586788I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50]; C = - 0.3 + 0.4I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},30]; C = - 0.75 + 0.1I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},30];

FilledJuliaqu[c,{400,400},{-1.5,1.5},{-1.5,1.5},40]; C = - 0.75 + 0.1I; FilledJuliaqu[c,{400,400},{-1.5,1.5},{-1.5,1.5},40];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50]; C = - 0.7382 + 0.0827I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},90]; C = - 0.75 + 0.1I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},90];

FilledJuliaqu[c,{500,500},{-.5,1.5},{1.5,1.5},30];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50]; C = 0.27334 + 0.00742I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50]; C = - 0.2 + 0.75I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50]; C = - 0.1194 + 0.6289I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50]; C = 0.25 + 0.52I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50]; C = 0.377 – 0.248I; FilledJuliaqu[c,{500,500},{-1.5,1.5},{-1.5,1.5},50];

ฟังก์ชัน cos z Fc(z) = (c) cos z Orbitcheckcos [z_,c_,iters_] :=(s=z; i=1; While [i≤iters&&Abs[s]<50,i++;s=c*cos[s]]; If [i==iters+1,{Re[z],Im[z]}#&/@{1,-1},{}]) FilledJuliacos[c_,{meshx_,meshy_},{x0_,x1_}, {y0_,y1_},iters_]:= Show[ Graphics[{PointSize[0.002], Map[Point, Flatten[Outer[orbitcheckqu[#1+I#2,N[c],iters]&, Range[x0,x1,(x1-x0)/meshx], Range[y0,y1,(y1-y0)/meshy]],2]]}], AspectRatio → Automatic,PlotRange → All ]

FilledJuliacos[c,{1050,1050},{-3,3},{-3,3},60];

ฟังก์ชัน sin z Fc(z) = (c) sin z Orbitchecksin [z_,c_,iters_] :=(s=z; i=1; While [i≤iters&&Abs[s]<50,i++;s=c*sin[s]]; If [i==iters+1,{Re[z],Im[z]}#&/@{1,-1},{}]) FilledJuliasin[c_,{meshx_,meshy_},{x0_,x1_}, {y0_,y1_},iters_]:= Show[ Graphics[{PointSize[0.002], Map[Point, Flatten[Outer[orbitcheckqu[#1+I#2,N[c],iters]&, Range[x0,x1,(x1-x0)/meshx], Range[y0,y1,(y1-y0)/meshy]],2]]}], AspectRatio → Automatic,PlotRange → All ]

FilledJuliasin[c,{600,600},{-1.5,1.5},{-1.5,1.5},50]; C = 1 + 0.2I; FilledJuliasin[c,{600,600},{-1.5,1.5},{-1.5,1.5},50];

FilledJuliasin[c,{500,500},{-3,3},{-5,5},50]; C = 1 + 0.1I; FilledJuliasin[c,{500,500},{-3,3},{-5,5},50];

FilledJuliasin[c,{400,400},{-3,3},{-3,3},30]; C = 0.61 + 0.81I; FilledJuliasin[c,{400,400},{-3,3},{-3,3},30];

FilledJuliasin[c,{400,400},{-3,3},{-3,3},50]; C = 0.61 + 0.81I; FilledJuliasin[c,{400,400},{-3,3},{-3,3},50];

FilledJuliasin[c,{400,400},{-3,3},{-3,3},100]; C = 0.61 + 0.81I; FilledJuliasin[c,{400,400},{-3,3},{-3,3},100];

FilledJuliasin[c,{1000,1000},{-3,3},{-5,5},100]; C = 0.61 + 0.81I; FilledJuliasin[c,{1000,1000},{-3,3},{-5,5},100];

ฟังก์ชัน exponential Fc(z) = (c) ez orbitcheckep[z_,c_,iters_] :=(s=z; i=1; While[i≤iters&&Abs[s]<50,i++;s=c*Exp[s]]; If [i==iters+1,{Re[z],Im[z]}#&/@{1,-1},{}]) FilledJuliaep[c_,{meshx_,meshy_},{x0_,x1_}, {y0_,y1_},iters_]:= Show[ Graphics[{PointSize[0.002], Map[Point, Flatten[Outer[orbitcheckqu[#1+I#2,N[c],iters]&, Range[x0,x1,(x1-x0)/meshx], Range[y0,y1,(y1-y0)/meshy]],2]]}], AspectRatio → Automatic,PlotRange → All ]

C=-2.5+1.5I FilledJuliaep[c,{1000,1000},{-3,3},{-2,2},50];

สวัสดี