259201 Computer Programming for Engineers Week 9 Engineering Problem #2
Payback Period ในการลงทุนโครงการ ใดๆ หากต้องการพิจารณาว่าโครงการนั้นๆ คุ้มค่าหรือไม่ สามารถใช้ดัชนีชี้วัดทางการเงินได้หลายตัว เช่น IRR, NPV ฯลฯ หนึ่งในนั้น มีดัชนีทางการเงินที่เรียกว่า Payback Period โดยที่ Payback Period นี้ จะบอกระยะเวลาคุ้มทุน (ระยะเวลาคืนทุน) โดยคำนวณบนพื้นฐานของเงินลงทุน และรายได้ที่เกิดขึ้น
Payback Period เช่น หากโครงการหนึ่งๆ ลงทุน 65 ล้านบาท มีผลกำไร 3 ปีแรก ปีละ 10 ล้านบาท ปีถัดๆ ไป มีกำไรเพิ่มขึ้นเป็น 15 ล้านบาท โครงการนี้จะคืนทุนในระยะเวลากี่ปี เป็นต้น
Payback Period เช่น หากโครงการหนึ่งๆ ลงทุน 65 ล้านบาท มีผลกำไร 3 ปีแรก ปีละ 10 ล้านบาท ปีถัดๆ ไป มีกำไรเพิ่มขึ้นเป็น 15 ล้านบาท โครงการนี้จะคืนทุนในระยะเวลากี่ปี เป็นต้น ตอบ คืนทุนภายในปีที่ 6 (หลังจากนั้นเป็นกำไร) PB after 5 years = PB at year 6
Payback Period โจทย์ หากต้องการเขียนโปรแกรม ให้ผู้ใช้เลือกเงินลงทุน (Investment) และเลือกกำไรที่คาดว่าจะได้รับในแต่ละปี (Expected Profit) สำหรับการลงทุนระยะ 10 ปี แล้วคำนวณหาจุดคุ้มทุน (Payback Period) และแสดงผลว่าในแต่ละปีมีดุลของบัญชี (Balance) เท่าไร จะเขียนโปรแกรมออกมาได้อย่างไร โดยที่ Payback if Balance > 0 เมื่อ Balance = – Investment + Accumulated Profit Accumulated Profit = ผลรวมกำไรจากปีที่ 1 ถึงปีที่พิจารณา
Payback Period Input: เงินลงทุน (Investment) กำไรที่คาดว่าจะได้รับในแต่ละปี (Expected Income) Output ดุลบัญชี (Balance) ปีที่คืนทุน (PayBack year) Algorithm Payback if Balance > 0 Balance = – Investment + Accumulated Profit Accumulated Profit = ผลรวมกำไรจากปีที่ 1 ถึงปีที่พิจารณา
Payback Period ส่วนที่ 1 ของโปรแกรม รับค่าเงินลงทุน .... ใช้ฟังก์ชั่น Input รับค่ากำไรที่คาดว่าจะได้รับในแต่ละปี .... ใช้ฟังก์ชั่น Input สำหรับการลงทุนระยะ 10 ปี ...ใช้ for i = 1 : 10 1 Invest = input('How much you want to invest?: '); 2 for i = 1 : 10 3 fprintf('What is the expected income in year %d',i); 4 Income(i) = input(': '); 5 end
Payback Period ส่วนที่ 2 ของโปรแกรม หากำไรสะสม .... ใช้ตัวแปร SumIncome โดยที่ SumIncome = SumIcone + Income(i) สำหรับการลงทุนระยะ 10 ปี ...ใช้ for i = 1 : 10 SumIncome = 0; for i = 1 : 10 8 SumIncome = SumIncome + Income(i); 9 end
Payback Period ส่วนที่ 3 ของโปรแกรม หาดุลบัญชี .... ใช้ตัวแปร Balance โดยที่ Balance = -Invest + SumIncome แสดงผลดุลบัญชี ...ใช้ fprintf สำหรับการลงทุนระยะ 10 ปี ...ใช้ for i = 1 : 10 (ที่มีอยู่แล้ว) SumIncome = 0; for i = 1 : 10 8 SumIncome = SumIncome + Income(i); 9 Balance(i) = - Invest + SumIncome; 10 fprintf('Year %d, expected balance = %.2f\n', i,Balance(i)); 11 end
Payback Period ส่วนที่ 4 ของโปรแกรม เพิ่มเติมเงื่อนไข เมื่อดุลบัญชีเป็นบวกค่าแรก ให้แสดงผลว่าเป็นปีคุ้มทุน ... ใช้ฟังก์ชั่น if 6 SumIncome = 0; 7 PBYear = 0; 8 for i = 1 : 10 9 SumIncome = SumIncome + Income(i); 10 Balance(i) = - Invest + SumIncome; 11 fprintf('Year %d, expected balance = %.2f\n', i,Balance(i)); 12 if Balance(i) > 0 && PBYear <= 0 13 PBYear = i; 14 fprintf('Payback from Year %d\n', PBYear); 15 end 16 end
Payback Period
Payback Period ทดลอง #1 โครงการ A ลงทุน 65 ล้านบาท มีผลกำไร 3 ปีแรก ปีละ 10 ล้านบาท ปีถัดๆ ไป มีกำไรเพิ่มขึ้นเป็น 15 ล้านบาท
Payback Period ทดลอง #2 โครงการ A ลงทุน 105 ล้านบาท มีผลกำไร 3 ปีแรก ปีละ 8 ล้านบาท 3 ปีถัดๆ ไป มีกำไรเพิ่มขึ้นเป็น 12 ล้านบาท และปีที่เหลือ มีกำไรเพิ่มขึ้นเป็น 15 ล้านบาท
Payback Period + Scrap Value ในการลงทุนบางโครงการ สินทรัพย์อาจมีค่า และสามารถนำมาพิจารณาร่วมกับดุลบัญชี เช่น โครงการหอพัก หากเจ้าของหอพัก ลงทุน 65 ล้านบาท ทำหอพัก เมื่อเลิกกิจการ อาจขายอาคารต่อ ได้ราคา 30 ล้านบาท
Payback Period + Scrap Value Scrap Value เงิน 30 ล้านบาทนี้ เรียกว่าเป็นมูลค่าซาก Scrap Value ซึ่งโดยปกติมีค่าผกผันกับระยะเวลา เช่น เลิกกิจการในปีที่ 1 (อาคารยังใหม่อยู่) อาจขายได้ราคา 30 ล้านบาท แต่ถ้าเลิกกิจการในปีที่ 5 (อาคารเริ่มเก่า) อาจขายได้ราคา 15 ล้านบาท หรือถ้าเลิกกิจการในปีที่ 10 (อาคารเก่ามากๆ) อาจขายได้เหลือ 5 ล้านบาท
Payback Period + Scrap Value สมมติให้ สมการในการคำนวณมูลค่าซากเป็น Scrap Value (@ year i) = Invest/ (Year + 0.5) เช่น Year 1: Scrap Value (1) = 65/(1 + 0.5) = 43.33 Year 2: Scrap Value (2) = 65/(2 + 0.5) = 26.00 Year 3: Scrap Value (3) = 65/(3 + 0.5) = 18.57 … โดยที่ Balance = – Invest + SumIncome + Scrap(@ year i);
Payback Period + Scrap Value โจทย์ หากต้องการเขียนโปรแกรม ให้ผู้ใช้เลือกเงินลงทุน (Investment) และเลือกกำไรที่คาดว่าจะได้รับในแต่ละปี (Expected Profit) สำหรับการลงทุนระยะ 10 ปี แล้วคำนวณหาจุดคุ้มทุน (Payback Period) และแสดงผลว่าในแต่ละปีมีดุลของบัญชี (Balance) เท่าไร โดยพิจารณามูลค่าซากด้วย จะเขียนโปรแกรมออกมาได้อย่างไร โดยที่ Payback if Balance > 0 เมื่อ Balance = – Investment + Accum.Profit + Scrap Value(@year i) Accumulated Profit = ผลรวมกำไรจากปีที่ 1 ถึงปีที่พิจารณา Scrap Value = Invest/ (Year + 0.5)
Payback Period + Scrap Value ส่วนที่เพิ่มเติม หา Scrap Value ในแต่ละปี 1 for i = 1 : 10 2 Scrap(i) = Invest/(i+0.5); 3 end และแก้ไขสมการ Balance Balance(i) = - Invest + SumIncome + Scrap(i);
Payback Period + Scrap Value
Payback Period + Scrap Value