การเขียนโปรแกรมใน MATLAB ตัวดำเนินการอัลกอริทึม ตัวดำเนินการ Matlab ตัวดำเนินการ Loop ในขณะที่ตัวอย่างใน Matlab

สาขาวิชา : เทคโนโลยีสารสนเทศ

การเขียนโปรแกรมในแมทแล็บ


ผู้ประกอบการแมทแล็บ

· คำสั่งวนรอบ

วงจรสำหรับ

ไวยากรณ์

สำหรับ count=start:step:final

คำสั่ง MATLAB

คำอธิบาย

นับ - ตัวแปรวนซ้ำ,

start – ค่าเริ่มต้น

สุดท้าย – ค่าสุดท้าย

ขั้นตอน - ขั้นตอนที่การนับเพิ่มขึ้นในแต่ละรายการที่ตามมาในลูป

การวนซ้ำจะสิ้นสุดลงทันทีที่ค่าการนับมากกว่าค่าสุดท้าย

ตัวอย่าง

ปล่อยให้จำเป็นต้องได้รับตระกูลของเส้นโค้งสำหรับ x€ ซึ่งระบุโดยฟังก์ชันขึ้นอยู่กับพารามิเตอร์

y (x, a) = e -ax บาป x,

สำหรับพารามิเตอร์ค่าตั้งแต่ -0.1 ถึง 0.1 ด้านล่างนี้คือรายการไฟล์โปรแกรมสำหรับแสดงกลุ่มเส้นโค้ง

รายการโปรแกรม

เอ็กซ์ = ;

สำหรับ = -0.1:0.02:0.1

y = ประสบการณ์ (-a*x).*sin(x);

จากการรันโปรแกรม หน้าต่างกราฟิกจะปรากฏขึ้นพร้อมกลุ่มเส้นโค้งที่ต้องการ

วงจรในขณะที่

ไวยากรณ์

ในขณะที่สภาพวนซ้ำ

คำสั่ง MATLAB

คำอธิบาย

การวนซ้ำจะทำงานตราบเท่าที่เงื่อนไขการวนซ้ำเป็นจริง ในการตั้งค่าเงื่อนไขการดำเนินการแบบวนซ้ำ อนุญาตให้ดำเนินการเชิงสัมพันธ์ต่อไปนี้:

การตั้งค่าเงื่อนไขที่ซับซ้อนมากขึ้นทำได้โดยใช้ตัวดำเนินการเชิงตรรกะ ตัวดำเนินการเชิงตรรกะได้รับในตารางต่อไปนี้


ตัวอย่าง

ผู้ประกอบการสาขา

ตัวดำเนินการแบบมีเงื่อนไขถ้า

ไวยากรณ์

ถ้าเงื่อนไข

คำสั่ง MATLAB

คำอธิบาย

หากเงื่อนไขเป็นจริง คำสั่ง MATLAB ที่อยู่ระหว่าง if และ end จะถูกดำเนินการ และหากเงื่อนไขไม่เป็นความจริง คำสั่งที่อยู่หลังจุดสิ้นสุดจะถูกดำเนินการ

ตัวอย่าง

ตัวดำเนินการแบบมีเงื่อนไขอย่างอื่น

ไวยากรณ์

ถ้าเงื่อนไข1

มิฉะนั้นเงื่อนไขที่ 2

………………………

มิฉะนั้นเงื่อนไข

คำอธิบาย

ขึ้นอยู่กับการปฏิบัติตามเงื่อนไขเฉพาะ สาขาที่เกี่ยวข้องของโปรแกรมจะทำงาน หากเงื่อนไขทั้งหมดเป็นเท็จ คำสั่งที่วางหลังจากนั้นจะถูกดำเนินการ

ตัวอย่าง

ผู้ดำเนินการสวิตช์

ไวยากรณ์

สลับตัวแปร

มูลค่ากรณี1

มูลค่ากรณีที่ 2

……………………

กรณีความหมาย


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

ตัวอย่าง

การหยุดชะงักของวงจร สถานการณ์พิเศษ

ผู้ดำเนินการหยุดพัก

ไวยากรณ์

ตัวดำเนินการแบ่งใช้เพื่อจัดระเบียบการคำนวณแบบวน: สำหรับ...สิ้นสุด ในขณะที่...สิ้นสุด เมื่อตรงตามเงื่อนไข

ถ้าเงื่อนไข

คำสั่งแบ่งจะสิ้นสุดการวนซ้ำ (สำหรับหรือในขณะที่) และคำสั่งที่อยู่ในบรรทัดต่อไปนี้จะถูกดำเนินการ ในกรณีของลูปซ้อนกัน ให้แยกออกจากลูปด้านใน

การจัดการข้อยกเว้น ผู้ดำเนินการพยายามจับ

ไวยากรณ์

คำแถลงที่มีการประหารชีวิต

อาจนำไปสู่ข้อผิดพลาด

คำสั่งที่จะดำเนินการ

เมื่อเกิดข้อผิดพลาดในบล็อก

ระหว่างพยายามและจับ

คำอธิบาย

โครงสร้าง try...catch ช่วยให้คุณสามารถหลีกเลี่ยงสถานการณ์ข้อยกเว้น (ข้อผิดพลาดที่นำไปสู่การยุติโปรแกรม เช่น การเข้าถึงไฟล์ที่ไม่มีอยู่จริง) และดำเนินการบางอย่างหากเกิดขึ้น

ตัวอย่าง

ฟังก์ชั่นการบริการ

แสดงส่งออกข้อความหรือค่าของตัวแปรไปยังหน้าต่างคำสั่ง

ป้อนข้อมูล– ร้องขออินพุตจากแป้นพิมพ์ ใช้เมื่อสร้างแอปพลิเคชันด้วยอินเทอร์เฟซบรรทัดคำสั่ง

ประเมินผลดำเนินการเนื้อหาของสตริงหรือตัวแปรสตริง เช่น คำสั่ง MATLAB

ชัดเจน– ลบตัวแปรสภาพแวดล้อมการทำงาน

กับแอลซี– ล้างหน้าต่างคำสั่ง

มากกว่า ข้อมูลโดยละเอียดคุณสามารถเรียนรู้เกี่ยวกับฟังก์ชันเหล่านี้และฟังก์ชันอื่นๆ ได้โดยการเรียกใช้ บรรทัดคำสั่ง

ช่วยfunction_name


มอบหมายงานห้องปฏิบัติการ

จำนวนตัวเลือกการมอบหมายงานเฉพาะเจาะจงจะถูกกำหนดโดยครู

ภารกิจที่ 1

งานนี้เกี่ยวข้องกับการหาพหุนามการประมาณค่าพีชคณิตระดับ n สำหรับชุดข้อมูลบางชุด: พีเอ็น(x) .

วัตถุประสงค์ของงาน:

มีความจำเป็นต้องสร้างโปรแกรมสำหรับคำนวณค่าสัมประสิทธิ์ของพหุนามการประมาณค่าพีชคณิต พีเอ็น(x)= 0 + 1 x+ … + ไม่มี.

แนวทาง:

0 1 2 3

เอ็กซ์ฉัน

1,2 1,4 1,6 1,8
8,3893 8,6251 8,9286 8,9703

ราคาต่อรอง 0 , 1 , …, หนึ่งถูกกำหนดจากการแก้ระบบสมการ:

ที่นี่ n– ลำดับพหุนามการประมาณค่า

n+1 – จำนวนคู่คะแนนที่กำหนด ( x, ),

0 , 1 ,… หนึ่ง– ค่าสัมประสิทธิ์ที่ต้องการของพหุนาม พีเอ็น(x)= 0 + 1 x+ … + ไม่มี).

ข้อกำหนดของโปรแกรม

· กำหนดขอบเขตของส่วน ซึ่งมีการสร้างพหุนามการประมาณค่าไว้ พี(เอ็กซ์)

· ชุด n– จำนวนส่วนของการประมาณค่า (หรือที่เท่ากันคือระดับของพหุนาม)

บันทึก: x0, xn, nเข้ามาจากแป้นพิมพ์

· เพื่อให้ได้ข้อมูลเบื้องต้น (x, ย)(จำนวนคู่แต้ม (x ฉัน y ฉัน)ซึ่งสร้างพหุนามการประมาณค่าไว้ พี(เอ็กซ์)n1=n+1) จัดเตรียม:

ü เข้าสู่โหนดที่ตั้งแบบสุ่ม x ผม, ผม=0, nจากแป้นพิมพ์

ü การคำนวณโหนด x ผม , ผม=0, n,สอดคล้องกับการจัดเรียงข้อโต้แย้งแบบเดียวกัน xบนส่วน

ü ในย่อหน้า 1.2 ค่า ใช่ ฉัน , i=0, nไม่ว่าจะป้อนจากแป้นพิมพ์ (หากไม่ทราบฟังก์ชันต้นทาง) หรือคำนวณจากฟังก์ชันที่กำหนด ฉ(x)- นิพจน์ที่กำหนดฟังก์ชันจะถูกป้อนจากแป้นพิมพ์ และต้องเป็นไปตามกฎสำหรับการเขียนนิพจน์ใน MATLAB

ü การป้อนข้อมูล ( x ฉัน, y ฉัน, i=0, n) จากไฟล์

· แก้ระบบสมการเพื่อกำหนดค่าสัมประสิทธิ์ของพหุนาม P(x)

· สร้างกราฟของฟังก์ชันตารางดั้งเดิมและพหุนาม P(x)

· หากข้อมูลต้นฉบับถูกกำหนดเป็นฟังก์ชัน f(x) ให้พล็อตข้อผิดพลาดในการประมาณค่า /f(x) – P(x)/ คำนวณค่าสัมบูรณ์สูงสุดของข้อผิดพลาดการแก้ไขในช่วงเวลาที่กำหนด


ภารกิจที่ 2

การแก้ไขเส้นโค้ง

วัตถุประสงค์ของงาน:

จำเป็นต้องสร้างโปรแกรมสำหรับคำนวณค่าสัมประสิทธิ์และสร้างฟังก์ชัน spline S(x) ซึ่ง "ติดกัน" จากชิ้นส่วนของพหุนามลำดับที่ 3 S ฉัน(x), ซึ่งมีรูปแบบการบันทึกพิเศษ:

ฟังก์ชั่นเอส ฉัน(x) กำหนดไว้ในเซ็กเมนต์

ข้อกำหนดของโปรแกรม

เมื่อปฏิบัติงานนี้ คุณต้อง:

· กำหนดขอบเขตของเซ็กเมนต์ที่สร้างฟังก์ชัน spline S(x)

· เซต n – จำนวนของเซกเมนต์การประมาณค่า ซึ่งแต่ละเซกเมนต์มีการสร้างพหุนามลูกบาศก์ Si(x)

· หมายเหตุ: ป้อน x0, xn, n จากแป้นพิมพ์

· จัดระเบียบอินพุตของข้อมูลเริ่มต้น (x, y) (จำนวนคู่ของจุด (xi, yi) ที่ใช้สร้างฟังก์ชัน spline S(x), n1=n+1) โดยให้:

ü การป้อนโหนดที่ตั้งแบบสุ่ม xi, i=0, n จากแป้นพิมพ์

ü การคำนวณโหนด xi, i=0, n ซึ่งสอดคล้องกับตำแหน่งที่สม่ำเสมอของอาร์กิวเมนต์ x บนเซ็กเมนต์

ü ในย่อหน้า 1,2 ค่าของ yi, i=0, n จะถูกป้อนจากแป้นพิมพ์ (หากไม่ทราบฟังก์ชันดั้งเดิม) หรือคำนวณจากฟังก์ชันที่กำหนด f(x) นิพจน์ที่กำหนดฟังก์ชันจะถูกป้อนจากแป้นพิมพ์ และต้องเป็นไปตามกฎสำหรับการเขียนนิพจน์ใน MATLAB

ü ข้อมูลเข้า (xi, yi, i=0, n) จากไฟล์

ü S1""(x0)=0, S3""(x3)=0

ü S1"(x0)=ฉ "(x0), S3"(x3)=ฉ "(x3)

ü S1""(x0)=ฉ "(x0), S3""(x0)=ฉ "(x3)

· เพื่อกำหนดค่าสัมประสิทธิ์ของเส้นโค้งลูกบาศก์ธรรมชาติ (เงื่อนไขขอบเขต 1) จำเป็นต้องแก้ระบบสมการต่อไปนี้:

สัมประสิทธิ์ σ 0 =0,σ n =0

· สร้างกราฟของฟังก์ชันดั้งเดิมและฟังก์ชันเส้นโค้งสำหรับเงื่อนไขขอบเขตทั้งสามประเภท

· สร้างกราฟของฟังก์ชันข้อผิดพลาดการแก้ไขเส้นโค้ง f(x) – S(x) สำหรับเงื่อนไขขอบเขตทั้งสามประเภท

บันทึก:

ใน แพ็คเกจ MATLABดัชนีมิติเดียวและ อาร์เรย์สองมิติเริ่มจาก 1 ไม่ใช่ 0 ให้คำนึงถึงสิ่งนี้เมื่อเขียนโปรแกรม


ภารกิจที่ 3

การประมาณฟังก์ชันโดยใช้วิธีกำลังสองน้อยที่สุด (LSM)

งานนี้เกี่ยวข้องกับการหาฟังก์ชันการประมาณ (พหุนามของดีกรี m) สำหรับชุดข้อมูลบางชุดที่สร้างขึ้นโดยวิธีกำลังสองน้อยที่สุด (LSM)

วัตถุประสงค์ของงาน:

จำเป็นต้องสร้างโปรแกรมสำหรับค้นหาสัมประสิทธิ์ของพหุนาม φ (x)= 0 + 1 * x+… หนึ่ง * x มวิธีกำลังสองน้อยที่สุด

สมมติว่ามีชุดข้อมูลดังต่อไปนี้:

เอ็กซ์ฉัน

1,2 1,4 1,6 1,8 2,0 2,2 2,4 2,6 2,8 3,0
8,3893 8,6251 8,9286 8,9703 9,1731 9,1784 8,8424 8,7145 8,3077 7,9611

การค้นหาค่าสัมประสิทธิ์ที่จำเป็นดำเนินการดังนี้:

ที่ไหน n – จำนวนคะแนน ( x, ),

– ระดับของพหุนามที่ต้องการ

0 , 1 , …, เช้า – ค่าสัมประสิทธิ์ที่ต้องการ ( φ ( x )= 0 + 1 x + … + ม x ม ).

ข้อกำหนดของโปรแกรม

เมื่อปฏิบัติงานนี้ คุณต้อง:

· กำหนดขอบเขตของเซ็กเมนต์ที่สร้างฟังก์ชันการประมาณ φ(x)=a0+a1*x+… an * xm

· ตั้งค่า m – ดีกรีของพหุนาม

· หมายเหตุ: ป้อน x1, xn, m จากแป้นพิมพ์

· หากต้องการรับข้อมูลเริ่มต้น (x, y) ซึ่งเป็นฟังก์ชันการประมาณ φ(x)=a0+a1*x+… an* x m ถูกสร้างขึ้น ให้จัดเตรียม:

ü การป้อนโหนดที่ตั้งแบบสุ่ม xi, i=1, n จากแป้นพิมพ์

ü การคำนวณโหนด xi, i=1, n ซึ่งสอดคล้องกับตำแหน่งที่สม่ำเสมอของอาร์กิวเมนต์ x บนเซ็กเมนต์

ü ในย่อหน้า 1,2 ค่าของ yi, i=1, n จะถูกป้อนจากแป้นพิมพ์ (หากไม่ทราบฟังก์ชันดั้งเดิม) หรือคำนวณจากฟังก์ชันที่กำหนด f(x) นิพจน์ที่กำหนดฟังก์ชันจะถูกป้อนจากแป้นพิมพ์ และต้องเป็นไปตามกฎสำหรับการเขียนนิพจน์ใน MATLAB

ü ข้อมูลเข้า (xi, yi, i=1, n) จากไฟล์

· แก้ระบบสมการเพื่อกำหนดค่าสัมประสิทธิ์ของพหุนาม φ(x)

· สร้างกราฟของฟังก์ชันตารางดั้งเดิมและพหุนาม φ(x)

· ถ้าข้อมูลต้นฉบับถูกกำหนดเป็นฟังก์ชัน f(x) ให้พล็อตค่าข้อผิดพลาดการประมาณค่า /f(x) – φ(x)/ คำนวณค่าสัมบูรณ์สูงสุดของข้อผิดพลาดการแก้ไขในช่วงเวลาที่กำหนด

เมื่อดำเนินการจุดสุดท้ายในส่วนนั้น ใช้เวลาอย่างน้อย 500 คะแนนในการคำนวณ


ข้อกำหนดสำหรับงานห้องปฏิบัติการ

รายงานจะต้องมี:

1. คำชี้แจงของปัญหา

2. ข้อความโปรแกรม

3. ผลการทดสอบ

หมายเหตุ: จะต้องระบุข้อความของโปรแกรมพร้อมกับความคิดเห็น


1. Anufriev I.E. คู่มือการสอนด้วยตนเอง Matlab 5.3/6.x – เซนต์ปีเตอร์สเบิร์ก: BHV-Petersburg, 2003 – 736 หน้า: ป่วย

2. วี.พี. Dyakonov MATLAB 6.5 SPI/7 + Simulink 5/6 ในวิชาคณิตศาสตร์และการสร้างแบบจำลอง ซีรีส์ "ห้องสมุดมืออาชีพ" – อ.: SOLON-Press, 2548. – 576 หน้า: ป่วย

3. Anufriev I.E., Smirnov A.B., Smirnova E.N. MathLab 7. – เซนต์ปีเตอร์สเบิร์ก: BHV-Petersburg, 2005. – 1104 หน้า: ป่วย

บ่อยครั้งเมื่อจัดระเบียบลูป คุณจะต้องวนซ้ำผ่านค่าตัวนับในช่วงของค่าที่กำหนดและตามขั้นตอนการเปลี่ยนแปลงที่กำหนด ตัวอย่างเช่น หากต้องการวนซ้ำองค์ประกอบของเวกเตอร์ (อาร์เรย์) คุณต้องจัดระเบียบตัวนับจาก 1 ถึง N ด้วยขั้นตอนที่ 1 โดยที่ N คือจำนวนองค์ประกอบของเวกเตอร์ ในการคำนวณผลรวมของอนุกรม จะมีการระบุตัวนับจาก a ถึง b ด้วยขั้นตอนขั้นตอนการเปลี่ยนแปลงที่ต้องการ และอื่นๆ เนื่องจากความจริงที่ว่างานดังกล่าวมักพบในการฝึกเขียนโปรแกรม จึงมีการเสนอตัวดำเนินการ for loop สำหรับการนำไปใช้งาน ซึ่งทำให้การนำลูปไปใช้กับตัวนับง่ายขึ้นและมองเห็นได้ชัดเจนยิ่งขึ้น

ไวยากรณ์ของตัวดำเนินการ for loop เป็นดังนี้:

สำหรับ<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
จบ

พิจารณาผลงาน ของรอบนี้ใช้ตัวอย่างการใช้อัลกอริธึมเพื่อค้นหาค่าสูงสุดขององค์ประกอบในเวกเตอร์:

ฟังก์ชั่น search_max
ก = ;
ม = ก(1); % ค่าสูงสุดในปัจจุบัน
สำหรับ i=1:length(a) % วนซ้ำตั้งแต่ 1 ถึงจุดสิ้นสุดของเวกเตอร์ c
% ในขั้นที่ 1 (ค่าเริ่มต้น)
ถ้าม< a(i) % если a(i) >ม.
ม = ก(ฉัน); % จากนั้น ม. = ก(i)
จบ
% สิ้นสุด จุดสิ้นสุดของ for loop
กระจาย(m);

ในตัวอย่างนี้ สำหรับวงตั้งค่าตัวนับ i และเปลี่ยนค่าจาก 1 เป็น 10 ในขั้นตอนที่ 1 โปรดทราบว่าหากไม่ได้ระบุขนาดขั้นตอนไว้อย่างชัดเจน จะใช้ค่าเริ่มต้นเป็น 1

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

คิวฟังก์ชัน
ก = ;
disp (ก);
สำหรับ i=length(a):-1:2 % วนจาก 10 ถึง 2 โดยมีขั้นตอน -1
ก(i)=ก(i-1); % เลื่อนองค์ประกอบของเวกเตอร์ a
% สิ้นสุด จุดสิ้นสุดของ for loop
disp (ก);

ผลลัพธ์ของโปรแกรม

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

ตัวอย่างด้านบนแสดงให้เห็นว่า ในการใช้ลูปกับตัวนับจากค่าที่มากกว่าไปหาค่าที่น้อยกว่า คุณจะต้องระบุขั้นตอนอย่างชัดเจน ในกรณีนี้คือ -1 หากไม่ดำเนินการวนซ้ำจะหยุดทันทีและโปรแกรมจะทำงานไม่ถูกต้อง

โดยสรุป มาดูการทำงานของตัวดำเนินการ for loop โดยใช้ตัวอย่างการสร้างแบบจำลองลำดับสุ่มด้วยกฎแห่งการเปลี่ยนแปลง

โดยที่ค่าสัมประสิทธิ์จาก -1 ถึง 1; - ตัวแปรสุ่มปกติที่ไม่มีความคาดหวังและความแปรปรวนทางคณิตศาสตร์เป็นศูนย์

,

ความแปรปรวนของแบบจำลองอยู่ที่ไหน กระบวนการสุ่ม- ในกรณีนี้ ตัวอย่างแรกจะถูกจำลองเป็นตัวแปรสุ่มปกติโดยไม่มีความคาดหวังและความแปรปรวนทางคณิตศาสตร์เป็นศูนย์ โปรแกรมการสร้างแบบจำลองมีลักษณะดังนี้:

ฟังก์ชั่นการสร้างแบบจำลอง_x
ร = 0.95; % ค่าสัมประสิทธิ์แบบจำลอง
ยังไม่มีข้อความ = 100; % จำนวนจุดจำลอง
อดีต = 100; % ความแปรปรวนของกระบวนการ
และ = อดีต*(1-r^2); % ความแปรปรวนของการบวกแบบสุ่ม
x = ศูนย์(N,1); % เริ่มต้นเวกเตอร์ x
x(1) = sqrt(อดีต)*randn; % การจำลองตัวอย่างที่ 1
สำหรับ i=2:N % วงรอบจาก 2 ถึง N
x(i)=r*x(i-1)+sqrt(et)*randn; การสร้างแบบจำลอง % SP
% สิ้นสุด จุดสิ้นสุดของลูป
โครงเรื่อง(x); % แสดง SP เป็นกราฟ

เมื่อรันโปรแกรมนี้ การดำเนินการของลำดับสุ่มจำลองจะปรากฏขึ้น

ข้าว. 2.1. ผลลัพธ์ของการสร้างแบบจำลองลำดับสุ่ม

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

x(1) = sqrt(อดีต)*randn;

จากนั้น for ลูปจะถูกนำไปใช้กับตัวนับ i จาก 2 ถึง N ด้วยขั้นตอนที่ 1 ภายในลูป ตัวอย่าง N-1 ที่เหลือของกระบวนการสุ่มจะถูกจำลองตามสูตรข้างต้น บรรทัดสุดท้ายของโปรแกรมประกอบด้วยฟังก์ชัน plot() ซึ่งแสดงลำดับจำลองบนหน้าจอในรูปแบบของกราฟ การทำงานกับการแสดงกราฟบนหน้าจอจะกล่าวถึงรายละเอียดเพิ่มเติมในบทถัดไป

คำสั่งแบบวนซ้ำ ใน MATLAB การดำเนินการซ้ำๆ สามารถทำได้โดยใช้คำสั่ง for และ while การใช้ for ที่ง่ายที่สุดมีดังนี้:

สำหรับ count = start: ขั้นตอน: คำสั่ง MATLAB สุดท้าย สิ้นสุดที่นี่ การนับเป็นตัวแปรวนซ้ำ n เริ่มต้น สุดท้าย – มูลค่าจริงเริ่มต้นและสุดท้าย n step – สเต็ปจากชุดของจำนวนจริง (ค่าเริ่มต้นคือ 1 สามารถละเว้นได้) วงจรจะสิ้นสุดลงเมื่อมันกลายเป็นขั้นสุดท้ายมากขึ้น นับ 3 เท่านั้น

ตัวอย่างที่ 1 คำนวณผลรวมของ x= -1, 0, 1 วิธีแก้ไข เรามาสร้างไฟล์โปรแกรมในตัวแก้ไขไฟล์ M กัน เราบันทึกไว้ในไฟล์ Summa ม. ส = 0; สำหรับ k = 1: 10 S = S + x ^k / แฟกทอเรียล(k); สิ้นสุด S บนบรรทัดคำสั่ง x = -1:1:1; สรุป S = -0 6 0 1. 7 โปรดทราบว่าตัวแปร k, s เป็นตัวแปรร่วม 4

จะสะดวกกว่าสำหรับตัวอย่างนี้ในการใช้ฟังก์ชันไฟล์ ในตัวแก้ไขไฟล์ M บนบรรทัดคำสั่ง ให้สร้างฟังก์ชันไฟล์ฟังก์ชัน S = funsum(x, N) > f = funsum (-1: 1, 10) S = 0; > ฉ = สำหรับ ม. = 1: ยังไม่มีข้อความ -0. 6 0 1. 7 วิ = ส + x ^m/แฟกทอเรียล(ม.); end ที่นี่ตัวแปร s, m อยู่ในเครื่อง 5

ตัวอย่างที่ 2 สร้างเมทริกซ์ฮิลแบร์ตลำดับ n สารละลาย n = 4; ก = ศูนย์(n, n); สำหรับ i = 1: n สำหรับ j = 1: n a (i, j) = 1 / (i+j-1); จบ 6

หมายเหตุ ก่อนที่จะเติมเมทริกซ์และเวกเตอร์ คุณควรสร้างพวกมันก่อนแล้วเติมศูนย์ด้วยคำสั่งศูนย์ เพื่อเพิ่มความเร็วของอัลกอริทึม (นั่นคือ a = ศูนย์ (n, n) จะเร็วกว่า a(i, j) = 0, ผม, เจ = 1, ... , n) 7

การวนซ้ำ for มีประโยชน์เมื่อดำเนินการซ้ำๆ เมื่อทราบจำนวนการกระทำล่วงหน้า หากไม่ทราบหมายเลขล่วงหน้า คุณสามารถใช้ while loop: While loop Condition คำสั่ง MATLAB End 8

ตัวอย่างที่ 3 การหาผลรวมของอนุกรมของ x ที่กำหนด เป็นไปไม่ได้ที่จะรวมเป็นอนันต์ แต่คุณสามารถสะสมผลรวมได้จนกว่าเทอมจะน้อยเกินไป เช่น จนถึง 9

หมายเหตุ ความเล็กของคำศัพท์เป็นแนวคิดที่สัมพันธ์กัน คำศัพท์อาจเป็นลำดับที่ 10 -10 แต่ผลรวมเองก็อยู่ในลำดับเดียวกัน ในกรณีนี้ ไม่สามารถหยุดการรวมได้ ตอนนี้เราไม่ต้องสนใจเรื่องนี้แล้วกลับไปสู่แนวทางแก้ไข 10

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-11.jpg" alt="M-file function บนฟังก์ชันบรรทัดคำสั่ง S = mysin(x) > f = mysin (1)"> M-file функция В командной строке function S = mysin(x) > f = mysin (1) S = 0; 0. 8415 k = 0; while abs(x. ^ (2*k + 1)/factorial(2*k + 1)) > 1. 0 e -10 S = S + (-1)^k * x. ^ (2*k + 1)/factorial(2*k + 1); k = k + 1; end 11!}

ในการตั้งค่าเงื่อนไขการดำเนินการแบบวนซ้ำ จะใช้การดำเนินการเชิงสัมพันธ์ต่อไปนี้: ค่าความสัมพันธ์ = = เท่ากับ > มากกว่า > = มากกว่าหรือเท่ากับ ~ = ไม่เท่ากัน

และตัวดำเนินการเชิงตรรกะ: สัญลักษณ์เงื่อนไขของตัวดำเนินการใน MATLAB สัญกรณ์เทียบเท่า ตรรกะ “และ” x

ลองกลับมาที่ตัวอย่างของเราและสังเกตว่าถ้าอนุกรมแยกออกไป เงื่อนไขสำหรับค่าเล็กน้อยของเทอมปัจจุบันอาจไม่เป็นที่พอใจและโปรแกรมจะดำเนินไปเป็นวงจร ดังนั้น เราจะจำกัดจำนวนเทอมไว้ที่ 100,000 เงื่อนไขจะมีลักษณะเช่นนี้ หรือ (abs (x. ^ (2*k + 1)/factorial(2*k + 1)) > 1. 0 e - 10 ก

การจัดการสถานการณ์พิเศษ 1) การหยุด – การขัดจังหวะลูปและการดำเนินการคำสั่งต่อจากจุดสิ้นสุด (เช่น ออกจากลูปด้านใน) 2) บางส่วนไม่ถูกต้อง การดำเนินการทางคณิตศาสตร์ใน MATLAB จะไม่ยุติโปรแกรม (เช่น =inf, =Na.N) ผลลัพธ์คือตัวดำเนินการลองสร้างตัวดำเนินการซึ่งการดำเนินการอาจนำไปสู่การจับข้อผิดพลาด ตัวดำเนินการในกรณีที่เกิดข้อผิดพลาดสิ้นสุด 15

ตัวดำเนินการสาขา ตัวดำเนินการแบบมีเงื่อนไข ตัวดำเนินการสาขาต่อไปนี้จะถูกใช้ใน MATLAB: n if – ตัวดำเนินการแบบมีเงื่อนไข; n สวิตช์ – ตัวดำเนินการสวิตช์ 16

โครงสร้างของคำสั่งแบบมีเงื่อนไข: if (เงื่อนไข) ของคำสั่ง MATLAB elseif (เงื่อนไข) ของคำสั่ง MATLAB …………. ส่วนนี้อาจหายไป elseif (เงื่อนไข) คำสั่ง MATLAB มิฉะนั้น คำสั่ง MATLAB สิ้นสุดที่ 17

เมื่อเขียนไฟล์ M ที่ใช้ตัวดำเนินการแยกสาขา จะมีประโยชน์ในการใช้ 1) คำสั่งคำเตือน ('ข้อความ') - เพื่อแสดงคำเตือนในหน้าต่างคำสั่ง; 2) ฟังก์ชั่นข้อผิดพลาด ('ข้อความ') - เพื่อยุติการทำงานของโปรแกรม 18

ตัวอย่างที่ 4 ให้สมการกำลังสอง ax 2 + bx +c = 0, a ≠ 0 ลองเขียนฟังก์ชัน M ที่คำนวณรากของสมการกำลังสองกัน ลองตรวจสอบจำนวนพารามิเตอร์อินพุตและเอาต์พุต รวมถึงข้อเท็จจริงที่ว่าพารามิเตอร์อินพุตเป็นตัวเลข ไม่ใช่เวกเตอร์และเมทริกซ์ ยิ่งกว่านั้น เรายังคำนึงถึงกรณีของการรูทที่ซับซ้อนด้วย โปรแกรมมีลักษณะดังนี้: 19

function = root 2 (a, b, c) if (nargin

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

ฟังก์ชั่น y = kusfun (x) หาก nargin ~= 1 ข้อผิดพลาด ('ต้องมีหนึ่งอาร์กิวเมนต์อินพุต') end = ขนาด (x); y = ศูนย์ (ขนาด (x)); % เริ่มต้นอาร์กิวเมนต์อินพุตสำหรับ i = 1: Nx สำหรับ j = 1: Mx ถ้า x (i, j) = -pi ไม่จำเป็น! y (i, j) = x (i, j) / pi; อย่างอื่น y (i, j) = - cos(x (i, j)) จบ จบ 23

คำสั่ง switch สะดวกในการใช้งานเมื่อมีความสอดคล้องกันระหว่างค่าที่ไม่ต่อเนื่องของตัวแปรบางตัวและการดำเนินการที่ตามมา 24

โครงสร้างของตัวดำเนินการสามารถเห็นได้จากตัวอย่างต่อไปนี้: สลับกรณี -1 disp ('a = -1') กรณี 0 disp ('a = 0') มิฉะนั้น disp ('a ไม่เท่ากับ -1, 0 ') สิ้นสุดวันที่ 25

ตัวดำเนินการสวิตช์เหมาะอย่างยิ่งสำหรับการแก้ปัญหาการวาดกราฟต่างๆ ของฟังก์ชันที่กำลังศึกษา (พื้นผิวเฟรม (a=1) เส้นระดับ (a=2) ฯลฯ) 26

นิพจน์บูลีนพร้อมอาร์เรย์และตัวเลข ในทางที่เป็นสากลข้อมูลเมทริกซ์ได้รับการประมวลผลโดยใช้การดำเนินการเชิงตรรกะ เนื่องจาก MATLAB แทนตัวเลขเป็นอาร์เรย์ขนาด 1 ต่อ 1 จึงเป็นเรื่องปกติที่จะคาดหวังว่าอาร์เรย์สามารถปรากฏในนิพจน์บูลีนได้ ตอนนี้เราจะดูที่การขยายการดำเนินการเชิงตรรกะและเชิงสัมพันธ์ไปยังกรณีของอาร์เรย์ 27

การดำเนินการเชิงสัมพันธ์ ผลลัพธ์ของการดำเนินการเชิงสัมพันธ์ใน MATLAB อาจเป็นได้ทั้งแบบลอจิคัล ('จริง') หรือศูนย์แบบลอจิคัล ('เท็จ') นอกจากนี้ ตัวแปรทางคณิตศาสตร์ยังแตกต่างจากภาษาโปรแกรมอื่นๆ ตรงที่ตัวแปรทางคณิตศาสตร์สามารถใช้ในนิพจน์เดียวกันกับตัวแปรทางตรรกะได้ 28

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-29.jpg" alt="ตัวอย่าง 6 > a = 1; b = 3; c = 1; >"> Пример 6 > a = 1; b = 3; c = 1; > a + (b > c) ans = 2 > a + (b!}

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-30.jpg" alt=" > A = ; B = ; B = ; > C = A = = B C = 30

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

การดำเนินการทางลอจิคัล การใช้การดำเนินการทางลอจิคัลกับอาร์เรย์นำไปสู่การดำเนินการแบบองค์ประกอบต่อองค์ประกอบในองค์ประกอบอาร์เรย์ n A และ B – ให้ค่าหนึ่งหากองค์ประกอบที่เกี่ยวข้องไม่เท่ากับศูนย์ n A หรือ B - ให้หนึ่งรายการหากองค์ประกอบอย่างน้อยหนึ่งองค์ประกอบไม่เป็นศูนย์ 32

ไม่ใช่ A - ใช้กับหนึ่งอาร์เรย์หากองค์ประกอบไม่เท่ากับศูนย์แสดงว่าเป็นศูนย์จะถูกตั้งค่ามิฉะนั้น - หนึ่ง; n all (v) – ตรวจสอบการมีอยู่ขององค์ประกอบที่เป็นศูนย์ในเวกเตอร์ ส่งคืนหนึ่งรายการหากไม่มีองค์ประกอบที่เป็นศูนย์ ถ้า v เป็นเมทริกซ์ ผลลัพธ์จะเป็นแบบคอลัมน์ n any (v) – คืนค่าหนึ่งหากเวกเตอร์อินพุตมีองค์ประกอบที่ไม่เป็นศูนย์อย่างน้อยหนึ่งองค์ประกอบ 33

ลำดับความสำคัญของการดำเนินงาน 1. การปฏิเสธ; 2. การขนย้าย การยกกำลัง (รวมถึงองค์ประกอบที่ชาญฉลาด) เครื่องหมายบวกและลบที่หน้าตัวเลข 3. การคูณและการหาร (รวมถึงองค์ประกอบที่ชาญฉลาด) 4. การบวกและการลบ 5. การดำเนินงานเชิงสัมพันธ์ 6. ตรรกะ 'และ' ตรรกะ 'หรือ' 34

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-36.jpg" alt=" ตัวอย่างที่ 7 > a = ; > u"> Пример 7 > a = ; > u = find ((a = -1)) 3 4 5 > anew = a(u) 0 -1 0 36!}

ตัวอย่างที่ 8 แทนที่องค์ประกอบของเมทริกซ์จัตุรัสที่มีตัวเลขสุ่ม 5 x 5 อย่างอิสระจากช่วง (0, 1) ซึ่งมากกว่าค่าเฉลี่ยขององค์ประกอบทั้งหมด 10% ด้วยค่าเฉลี่ย วิธีแก้ > A = แรนด์(5); > S = ผลรวม (ผลรวม A) / 25; > A(find (A > S* 1. 1)) = S ในกรณีนี้ ฟังก์ชัน find จะสร้างเวกเตอร์ 2 ตัวของหมายเลขแถวและหมายเลขคอลัมน์ 37

พหุนามใน MATLAB พหุนาม p (x) =anxn+an-1 xn-1+ - - +a 0, an≠ 0 ใน MATLAB มีการระบุโครงสร้างเวกเตอร์ p= โดยที่ ai เป็นจำนวนเชิงซ้อนใดๆ an≠ 0 โปรดทราบว่าระดับของพหุนามจะถูกคำนวณดังนี้: n=length(p)-1 (สำหรับ n=0 ปรากฎว่า const ) 38

คำสั่งหลักสำหรับการทำงานกับพหุนามมีดังนี้: nn n r=roots(р) – เวกเตอร์คอลัมน์ที่มีรากทั้งหมดของพหุนาม; p=poly(r) – การสร้างพหุนามจากรากที่ระบุในเวกเตอร์คอลัมน์ r และถ้า r เมทริกซ์จตุรัสแล้ว p คือพหุนามลักษณะเฉพาะ y=polyval(p, x) – การคำนวณแบบองค์ประกอบต่อองค์ประกอบของค่าของพหุนาม p บนเซต x โดยที่ x สามารถเป็นเวกเตอร์หรือเมทริกซ์ได้ 39

nn n polyder(p) – อนุพันธ์เวกเตอร์แถวของ p (ความแตกต่างของพหุนาม p); polyder(p, q) – อนุพันธ์ของผลิตภัณฑ์ของพหุนาม p และ q; = polyder(p, q) – อนุพันธ์ของพหุนามผลหาร p และ q โดยที่ a และ b เป็นตัวเศษและตัวส่วนของเศษส่วนผลลัพธ์ 40

n n n p=polyfit(x, y, n) – การประมาณฟังก์ชัน y(x) ด้วยพหุนาม p ระดับที่ nใช้วิธีที่ลดระยะห่างระหว่างกราฟพหุนามกับความจริงของเส้นโค้งให้เหลือน้อยที่สุด โดยเฉลี่ยตามความยาวทั้งหมด Conv(p, q) – เวกเตอร์แถว ผลคูณของพหุนาม p และ q; =deconv(p, q) – การหาร p ด้วย q โดยมี w-quotient, r-remainder และ p=conv (q, w) +r; 41

n =สารตกค้าง(a, b) – การสลายตัวของฟังก์ชันตรรกยะให้เป็นเศษส่วนอย่างง่ายเหนือสนามของจำนวนเชิงซ้อน โดยเน้นที่ส่วนจำนวนเต็ม k(x) หรือโดยที่ ri คือค่าตกค้าง (องค์ประกอบ r), pi คือขั้ว (องค์ประกอบ p) คำสั่งนี้ยังทำงานในแบบย้อนกลับ =residue(r, p, k) 42

หมายเหตุ 1. ถ้าในเรซิดิว (a, b) พหุนาม b(x) และในราก (p) พหุนาม p(x) มีรากที่หลายค่าหรืออยู่ใกล้กัน ผลลัพธ์ที่ได้อาจไม่ถูกต้อง เนื่องจาก a ปัญหามีเงื่อนไขไม่ดี การปรับสภาพที่ไม่ดีคือการพึ่งพาผลลัพธ์อย่างมากกับค่าสัมประสิทธิ์ (คล้ายกับความเสถียรของคำตอบในสมการเชิงอนุพันธ์) 43

2. เมื่อทำงานกับพหุนาม พหุนามของแบบฟอร์มจะเกิดขึ้น แต่ MATLAB จะไม่ตรวจสอบ≠ 0 โดยอัตโนมัติ และเกิดข้อผิดพลาด (คุณต้องระวังด้วยตัวเอง) 44

แผนก: เทคโนโลยีสารสนเทศ

การเขียนโปรแกรมในแมทแล็บ

ผู้ประกอบการแมทแล็บ

· คำสั่งวนซ้ำ

วงจรสำหรับ

ไวยากรณ์

สำหรับ count=start:step:final

คำสั่ง MATLAB

คำอธิบาย

นับ - ตัวแปรวนซ้ำ

start - ค่าเริ่มต้น

สุดท้าย - ค่าสุดท้าย

step - ขั้นตอนที่การนับเพิ่มขึ้นตามแต่ละรายการที่ตามมาในลูป

การวนซ้ำจะสิ้นสุดลงทันทีที่จำนวนมากกว่าค่าสุดท้าย

ตัวอย่าง

ปล่อยให้จำเป็นต้องได้รับตระกูลของเส้นโค้งสำหรับ x€ ซึ่งระบุโดยฟังก์ชันขึ้นอยู่กับพารามิเตอร์

y (x, a) = e-ax sin x,

สำหรับพารามิเตอร์ค่าตั้งแต่ -0.1 ถึง 0.1 ด้านล่างนี้คือรายการไฟล์โปรแกรมสำหรับแสดงกลุ่มเส้นโค้ง

รายการโปรแกรม

เอ็กซ์ = ;

สำหรับ = -0.1:0.02:0.1

y = ประสบการณ์ (-a*x).*sin(x);

จากการรันโปรแกรม หน้าต่างกราฟิกจะปรากฏขึ้นพร้อมกลุ่มเส้นโค้งที่ต้องการ

วงจรในขณะที่

ไวยากรณ์

ในขณะที่สภาพวนซ้ำ

คำสั่ง MATLAB

คำอธิบาย

การวนซ้ำจะทำงานตราบเท่าที่เงื่อนไขการวนซ้ำเป็นจริง ในการตั้งค่าเงื่อนไขการดำเนินการแบบวนซ้ำ อนุญาตให้ดำเนินการเชิงสัมพันธ์ต่อไปนี้:

การตั้งค่าเงื่อนไขที่ซับซ้อนมากขึ้นทำได้โดยใช้ตัวดำเนินการเชิงตรรกะ ตัวดำเนินการเชิงตรรกะได้รับในตารางต่อไปนี้

ตัวอย่าง

ผู้ประกอบการสาขา

ตัวดำเนินการแบบมีเงื่อนไขถ้า

ไวยากรณ์

ถ้าเงื่อนไข

คำสั่ง MATLAB

คำอธิบาย

หากเงื่อนไขเป็นจริง คำสั่ง MATLAB ที่อยู่ระหว่าง if และ end จะถูกดำเนินการ และหากเงื่อนไขไม่เป็นความจริง คำสั่งที่อยู่หลังจุดสิ้นสุดจะถูกดำเนินการ

ตัวอย่าง

ตัวดำเนินการแบบมีเงื่อนไขอย่างอื่น

ไวยากรณ์

ถ้าเงื่อนไข1

มิฉะนั้นเงื่อนไขที่ 2

………………………

มิฉะนั้นเงื่อนไข

คำอธิบาย

ขึ้นอยู่กับการปฏิบัติตามเงื่อนไขเฉพาะ สาขาที่เกี่ยวข้องของโปรแกรมจะทำงาน หากเงื่อนไขทั้งหมดเป็นเท็จ คำสั่งที่วางหลังจากนั้นจะถูกดำเนินการ

ตัวอย่าง

ผู้ดำเนินการสวิตช์

ไวยากรณ์

สลับตัวแปร

มูลค่ากรณี1

มูลค่ากรณีที่ 2

……………………

กรณีความหมาย

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

ตัวอย่าง

การหยุดชะงักของวงจร สถานการณ์พิเศษ

ผู้ดำเนินการหยุดพัก

ไวยากรณ์

ตัวดำเนินการแบ่งใช้เพื่อจัดระเบียบการคำนวณแบบวน: สำหรับ...สิ้นสุด ในขณะที่...สิ้นสุด เมื่อตรงตามเงื่อนไข

ถ้าเงื่อนไข

คำสั่งแบ่งจะสิ้นสุดการวนซ้ำ (สำหรับหรือในขณะที่) และคำสั่งที่อยู่ในบรรทัดต่อไปนี้จะถูกดำเนินการ ในกรณีของลูปซ้อนกัน ให้แยกออกจากลูปด้านใน

การจัดการข้อยกเว้น ผู้ดำเนินการพยายามจับ

ไวยากรณ์

คำแถลงที่มีการประหารชีวิต

อาจนำไปสู่ข้อผิดพลาด

คำสั่งที่จะดำเนินการ

เมื่อเกิดข้อผิดพลาดในบล็อก

ระหว่างพยายามและจับ

คำอธิบาย

โครงสร้าง try...catch ช่วยให้คุณสามารถหลีกเลี่ยงสถานการณ์ข้อยกเว้น (ข้อผิดพลาดที่นำไปสู่การยุติโปรแกรม เช่น การเข้าถึงไฟล์ที่ไม่มีอยู่จริง) และดำเนินการบางอย่างหากเกิดขึ้น

ตัวอย่าง

บริการฟังก์ชั่น

แสดง- ส่งออกข้อความหรือค่าตัวแปรไปยังหน้าต่างคำสั่ง

ป้อนข้อมูล- ขออินพุตจากแป้นพิมพ์ ใช้เมื่อสร้างแอปพลิเคชันด้วยอินเทอร์เฟซบรรทัดคำสั่ง

ประเมินผล - ดำเนินการเนื้อหาของสตริงหรือตัวแปรสตริง เช่น คำสั่ง MATLAB

ชัดเจน- ลบตัวแปรสภาพแวดล้อมการทำงาน

กับแอลซี- ล้างหน้าต่างคำสั่ง

ข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันเหล่านี้และฟังก์ชันอื่น ๆ สามารถพบได้โดยการเรียกใช้ที่บรรทัดคำสั่ง

ช่วยfunction_name

เควสเพื่อปฏิบัติงานในห้องปฏิบัติการ

จำนวนตัวเลือกการมอบหมายงานเฉพาะเจาะจงจะถูกกำหนดโดยครู

ออกกำลังกาย1

งานนี้เกี่ยวข้องกับการหาพหุนามการประมาณค่าพีชคณิตระดับ n สำหรับชุดข้อมูลบางชุด: n(x) .

วัตถุประสงค์ของงาน:

มีความจำเป็นต้องสร้างโปรแกรมสำหรับคำนวณค่าสัมประสิทธิ์ของพหุนามการประมาณค่าพีชคณิต n(x)= 0 + 1 x+ + nxn.

แนวทาง:

เอ็กซ์ฉัน

ฉัน

ราคาต่อรอง 0 , 1 , …, nถูกกำหนดจากการแก้ระบบสมการ:

ที่นี่ n- ลำดับพหุนามการประมาณค่า

n+1 - จำนวนคู่คะแนนที่กำหนด ( x, ),

0 , 1 ,… n- ค่าสัมประสิทธิ์ที่ต้องการของพหุนาม n(x)= 0 + 1 x+ + nxn).

ข้อกำหนดของโปรแกรม

· กำหนดขอบเขตของส่วน ซึ่งมีการสร้างพหุนามการประมาณค่าไว้ พี(เอ็กซ์)

· ชุด n- จำนวนส่วนของการประมาณค่า (หรือสิ่งที่เท่ากันคือระดับของพหุนาม)

บันทึก: x0, xn, nเข้ามาจากแป้นพิมพ์

· เพื่อให้ได้ข้อมูลเบื้องต้น (x, ) (จำนวนคู่แต้ม (xฉัน, ฉัน) ซึ่งสร้างพหุนามการประมาณค่าไว้ พี(เอ็กซ์) - n1=n+1) จัดเตรียม:

b เข้าสู่โหนดที่ตั้งแบบสุ่ม xฉัน, ผม=0, nจากแป้นพิมพ์

ь การคำนวณโหนด xฉัน, ผม=0, n, สอดคล้องกับการจัดเรียงข้อโต้แย้งแบบเดียวกัน xบนส่วน

ข ในย่อหน้า 1.2 ค่า ฉัน, ผม=0, nไม่ว่าจะป้อนจากแป้นพิมพ์ (หากไม่ทราบฟังก์ชันต้นทาง) หรือคำนวณจากฟังก์ชันที่กำหนด ฉ(x)- นิพจน์ที่กำหนดฟังก์ชันจะถูกป้อนจากแป้นพิมพ์ และต้องเป็นไปตามกฎสำหรับการเขียนนิพจน์ใน MATLAB

ь การป้อนข้อมูล ( xฉัน, ฉัน, ผม=0, n) จากไฟล์

· แก้ระบบสมการเพื่อกำหนดค่าสัมประสิทธิ์ของพหุนาม P(x)

· สร้างกราฟของฟังก์ชันตารางดั้งเดิมและพหุนาม P(x)

· หากข้อมูลต้นฉบับถูกกำหนดเป็นฟังก์ชัน f(x) ให้พล็อตข้อผิดพลาดในการประมาณค่า /f(x) - P(x)/ คำนวณค่าสัมบูรณ์สูงสุดของข้อผิดพลาดการแก้ไขในช่วงเวลาที่กำหนด

ออกกำลังกาย2

การแก้ไขเส้นโค้ง

วัตถุประสงค์ของงาน:

จำเป็นต้องสร้างโปรแกรมสำหรับคำนวณค่าสัมประสิทธิ์และสร้างฟังก์ชัน spline S(x) ซึ่ง "ติดกัน" จากชิ้นส่วนของพหุนามลำดับที่ 3 S ฉัน(x), ซึ่งมีรูปแบบการบันทึกพิเศษ:

ฟังก์ชั่นเอส ฉัน(x) กำหนดไว้ในเซ็กเมนต์

ข้อกำหนดของโปรแกรม

เมื่อปฏิบัติงานนี้ คุณต้อง:

· กำหนดขอบเขตของเซ็กเมนต์ที่สร้างฟังก์ชัน spline S(x)

· ตั้งค่า n - จำนวนส่วนการประมาณค่า ซึ่งแต่ละส่วนสร้างลูกบาศก์พหุนาม Si(x)

· หมายเหตุ: ป้อน x0, xn, n จากแป้นพิมพ์

· จัดระเบียบอินพุตของข้อมูลเริ่มต้น (x, y) (จำนวนคู่ของจุด (xi, yi) ที่ใช้สร้างฟังก์ชัน spline S(x), n1=n+1) โดยให้:

b การป้อนโหนดที่ตั้งแบบสุ่ม xi, i=0, n จากแป้นพิมพ์

b การคำนวณโหนด xi, i=0, n ซึ่งสอดคล้องกับตำแหน่งสม่ำเสมอของอาร์กิวเมนต์ x บนเซ็กเมนต์

ข ในย่อหน้า 1,2 ค่าของ yi, i=0, n จะถูกป้อนจากแป้นพิมพ์ (หากไม่ทราบฟังก์ชันดั้งเดิม) หรือคำนวณจากฟังก์ชันที่กำหนด f(x) นิพจน์ที่กำหนดฟังก์ชันจะถูกป้อนจากแป้นพิมพ์ และต้องเป็นไปตามกฎสำหรับการเขียนนิพจน์ใน MATLAB

b ป้อนข้อมูล (xi, yi, i=0, n) จากไฟล์

ข S1""(x0)=0, S3""(x3)=0

ข S1"(x0)=ฉ "(x0), S3"(x3)=ฉ "(x3)

ข S1""(x0)=ฉ "(x0), S3""(x0)=ฉ "(x3)

· เพื่อกำหนดค่าสัมประสิทธิ์ของเส้นโค้งลูกบาศก์ธรรมชาติ (เงื่อนไขขอบเขต 1) จำเป็นต้องแก้ระบบสมการต่อไปนี้:

ค่าสัมประสิทธิ์?0 =0,?n =0

· สร้างกราฟของฟังก์ชันดั้งเดิมและฟังก์ชันเส้นโค้งสำหรับเงื่อนไขขอบเขตทั้งสามประเภท

· สร้างกราฟของฟังก์ชันข้อผิดพลาดการแก้ไขเส้นโค้ง f(x) - S(x) สำหรับเงื่อนไขขอบเขตทั้งสามประเภท

บันทึก:

ใน MATLAB ดัชนีของอาร์เรย์หนึ่งมิติและสองมิติเริ่มต้นจาก 1 ไม่ใช่ 0 โปรดคำนึงถึงสิ่งนี้เมื่อเขียนโปรแกรม

ออกกำลังกาย№3

การประมาณฟังก์ชันโดยใช้วิธีกำลังสองน้อยที่สุด (LSM)

งานนี้เกี่ยวข้องกับการหาฟังก์ชันการประมาณ (พหุนามของดีกรี m) สำหรับชุดข้อมูลบางชุดที่สร้างขึ้นโดยวิธีกำลังสองน้อยที่สุด (LSM)

วัตถุประสงค์ของงาน:

คุณจำเป็นต้องสร้างโปรแกรมสำหรับค้นหาสัมประสิทธิ์ของพหุนามหรือไม่? (x)= 0 + 1 * x+… n * xวิธีกำลังสองน้อยที่สุด

สมมติว่ามีชุดข้อมูลดังต่อไปนี้:

เอ็กซ์ฉัน

ฉัน

การค้นหาค่าสัมประสิทธิ์ที่จำเป็นดำเนินการดังนี้:

ที่ไหน n - จำนวนคะแนน ( x, ),

- ระดับของพหุนามที่ต้องการ

0 , 1 , …, - ค่าสัมประสิทธิ์ที่ต้องการ ( ? ( x )= 0 + 1 x + … + x ).

ข้อกำหนดของโปรแกรม

เมื่อปฏิบัติงานนี้ คุณต้อง:

· กำหนดขอบเขตของเซ็กเมนต์ที่สร้างฟังก์ชันการประมาณ?(x)=a0+a1*x+… an * xm

· ตั้ง m - องศาของพหุนาม

· หมายเหตุ: ป้อน x1, xn, m จากแป้นพิมพ์

· หากต้องการรับข้อมูลเริ่มต้น (x, y) ซึ่งเป็นฟังก์ชันการประมาณที่สร้างขึ้น (x)=a0+a1*x+… an* xm ให้จัดเตรียม:

b การป้อนโหนดที่ตั้งแบบสุ่ม xi, i=1, n จากแป้นพิมพ์

b การคำนวณโหนด xi, i=1, n ซึ่งสอดคล้องกับตำแหน่งสม่ำเสมอของอาร์กิวเมนต์ x บนเซ็กเมนต์

ข ในย่อหน้า 1,2 ค่าของ yi, i=1, n จะถูกป้อนจากแป้นพิมพ์ (หากไม่ทราบฟังก์ชันดั้งเดิม) หรือคำนวณจากฟังก์ชันที่กำหนด f(x) นิพจน์ที่กำหนดฟังก์ชันจะถูกป้อนจากแป้นพิมพ์ และต้องเป็นไปตามกฎสำหรับการเขียนนิพจน์ใน MATLAB

b ป้อนข้อมูล (xi, yi, i=1, n) จากไฟล์

· แก้ระบบสมการเพื่อหาค่าสัมประสิทธิ์ของพหุนาม?(x)

· สร้างกราฟของฟังก์ชันตารางดั้งเดิมและพหุนาม?(x)

· หากข้อมูลต้นฉบับถูกกำหนดเป็นฟังก์ชัน f(x) ให้พล็อตข้อผิดพลาดในการประมาณค่า /f(x) - ?(x)/ คำนวณค่าสัมบูรณ์สูงสุดของข้อผิดพลาดการแก้ไขในช่วงเวลาที่กำหนด

เมื่อดำเนินการจุดสุดท้ายในส่วนนั้น ใช้เวลาอย่างน้อย 500 คะแนนในการคำนวณ

ข้อกำหนดสำหรับงานห้องปฏิบัติการ

รายงานจะต้องมี:

1. คำชี้แจงของปัญหา

2. ข้อความโปรแกรม

3. ผลการทดสอบ

หมายเหตุ: จะต้องระบุข้อความของโปรแกรมพร้อมกับความคิดเห็น

อ้างอิง

1. Anufriev I.E. คู่มือการใช้ด้วยตนเอง Matlab 5.3/6.x - เซนต์ปีเตอร์สเบิร์ก: BHV-Petersburg, 2003. - 736 pp.: ป่วย

2. วี.พี. Dyakonov MATLAB 6.5 SPI/7 + Simulink 5/6 ในวิชาคณิตศาสตร์และการสร้างแบบจำลอง ซีรีส์ "ห้องสมุดมืออาชีพ" - อ.: SOLON-Press, 2548. - 576 หน้า: ป่วย

3. Anufriev I.E., Smirnov A.B., Smirnova E.N. MathLab 7. - เซนต์ปีเตอร์สเบิร์ก: BHV-Petersburg, 2005. - 1104 หน้า: ป่วย

บ่อยครั้งเมื่อจัดระเบียบลูป คุณจะต้องวนซ้ำผ่านค่าตัวนับในช่วงของค่าที่กำหนดและตามขั้นตอนการเปลี่ยนแปลงที่กำหนด ตัวอย่างเช่น หากต้องการวนซ้ำองค์ประกอบของเวกเตอร์ (อาร์เรย์) คุณต้องจัดระเบียบตัวนับจาก 1 ถึง N ด้วยขั้นตอนที่ 1 โดยที่ N คือจำนวนองค์ประกอบของเวกเตอร์ ในการคำนวณผลรวมของอนุกรม จะมีการระบุตัวนับจาก a ถึง b ด้วยขั้นตอนขั้นตอนการเปลี่ยนแปลงที่ต้องการ และอื่นๆ เนื่องจากความจริงที่ว่างานดังกล่าวมักพบในการฝึกเขียนโปรแกรม จึงมีการเสนอตัวดำเนินการ for loop สำหรับการนำไปใช้งาน ซึ่งทำให้การนำลูปไปใช้กับตัวนับง่ายขึ้นและมองเห็นได้ชัดเจนยิ่งขึ้น

ไวยากรณ์ของตัวดำเนินการ for loop เป็นดังนี้:

สำหรับ<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
จบ

ลองพิจารณาการทำงานของวงจรนี้โดยใช้ตัวอย่างการใช้อัลกอริทึมเพื่อค้นหาค่าสูงสุดขององค์ประกอบในเวกเตอร์:

ฟังก์ชั่น search_max
ก = ;
ม = ก(1); % ค่าสูงสุดในปัจจุบัน
สำหรับ i=1:length(a) % วนซ้ำตั้งแต่ 1 ถึงจุดสิ้นสุดของเวกเตอร์ c
% ในขั้นที่ 1 (ค่าเริ่มต้น)
ถ้าม< a(i) % если a(i) >ม.
ม = ก(ฉัน); % จากนั้น ม. = ก(i)
จบ
% สิ้นสุด จุดสิ้นสุดของ for loop
กระจาย(m);

ในตัวอย่างนี้ for loop จะตั้งค่าตัวนับ i และเปลี่ยนค่าจาก 1 เป็น 10 ในขั้นตอนที่ 1 โปรดทราบว่าหากไม่ได้ระบุขนาดขั้นตอนไว้อย่างชัดเจน จะใช้ค่าเริ่มต้นเป็น 1

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

คิวฟังก์ชัน
ก = ;
disp (ก);
สำหรับ i=length(a):-1:2 % วนจาก 10 ถึง 2 โดยมีขั้นตอน -1
ก(i)=ก(i-1); % เลื่อนองค์ประกอบของเวกเตอร์ a
% สิ้นสุด จุดสิ้นสุดของ for loop
disp (ก);

ผลลัพธ์ของโปรแกรม

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

ตัวอย่างด้านบนแสดงให้เห็นว่า ในการใช้ลูปกับตัวนับจากค่าที่มากกว่าไปหาค่าที่น้อยกว่า คุณจะต้องระบุขั้นตอนอย่างชัดเจน ในกรณีนี้คือ -1 หากไม่ดำเนินการวนซ้ำจะหยุดทันทีและโปรแกรมจะทำงานไม่ถูกต้อง

โดยสรุป มาดูการทำงานของตัวดำเนินการ for loop โดยใช้ตัวอย่างการสร้างแบบจำลองลำดับสุ่มด้วยกฎแห่งการเปลี่ยนแปลง

โดยที่ค่าสัมประสิทธิ์จาก -1 ถึง 1; - ตัวแปรสุ่มปกติที่ไม่มีความคาดหวังและความแปรปรวนทางคณิตศาสตร์เป็นศูนย์

,

ความแปรปรวนของกระบวนการสุ่มจำลองอยู่ที่ไหน ในกรณีนี้ ตัวอย่างแรกจะถูกจำลองเป็นตัวแปรสุ่มปกติโดยไม่มีความคาดหวังและความแปรปรวนทางคณิตศาสตร์เป็นศูนย์ โปรแกรมการสร้างแบบจำลองมีลักษณะดังนี้:

ฟังก์ชั่นการสร้างแบบจำลอง_x
ร = 0.95; % ค่าสัมประสิทธิ์แบบจำลอง
ยังไม่มีข้อความ = 100; % จำนวนจุดจำลอง
อดีต = 100; % ความแปรปรวนของกระบวนการ
และ = อดีต*(1-r^2); % ความแปรปรวนของการบวกแบบสุ่ม
x = ศูนย์(N,1); % เริ่มต้นเวกเตอร์ x
x(1) = sqrt(อดีต)*randn; % การจำลองตัวอย่างที่ 1
สำหรับ i=2:N % วงรอบจาก 2 ถึง N
x(i)=r*x(i-1)+sqrt(et)*randn; การสร้างแบบจำลอง % SP
% สิ้นสุด จุดสิ้นสุดของลูป
โครงเรื่อง(x); % แสดง SP เป็นกราฟ

เมื่อรันโปรแกรมนี้ การดำเนินการของลำดับสุ่มจำลองจะปรากฏขึ้น

ข้าว. 2.1. ผลลัพธ์ของการสร้างแบบจำลองลำดับสุ่ม

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

x(1) = sqrt(อดีต)*randn;

จากนั้น for ลูปจะถูกนำไปใช้กับตัวนับ i จาก 2 ถึง N ด้วยขั้นตอนที่ 1 ภายในลูป ตัวอย่าง N-1 ที่เหลือของกระบวนการสุ่มจะถูกจำลองตามสูตรข้างต้น บรรทัดสุดท้ายของโปรแกรมประกอบด้วยฟังก์ชัน plot() ซึ่งแสดงลำดับจำลองบนหน้าจอในรูปแบบของกราฟ การทำงานกับการแสดงกราฟบนหน้าจอจะกล่าวถึงรายละเอียดเพิ่มเติมในบทถัดไป



กำลังโหลด...
สูงสุด