Summation with MATLAB


เคยต้องคำนวณสมการแบบนี้บน MATLAB ไหมครับ

w_k = p_k - \sum^{k-1}_{i=1}\alpha_{ik}w_i, \; k= 2,\ldots, M

โดยที่ p_k เป็นเวกเตอร์ และ \alpha_{ik} เป็นสมาชิกของเมตริกซ์

A = \begin{bmatrix}1 & \alpha_{12} & \alpha_{13} & \ldots & \alpha_{1M} \\ 0 & 1 & \alpha_{23} & \ldots & \alpha_{2M} \\ 0 & 0 & 1 & \ddots & \vdots \\ \vdots & \vdots & \vdots & \ddots & \alpha_{M-1}\\ 0 & 0 & 0 & \ldots & 1\end{bmatrix}

และได้มีการกำหนดค่าตั้งต้นของ w_1 = p_1

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

  1. ให้กำหนดค่าตั้งต้นของเมตริกซ์ W ที่มีสมาชิกเป็นแถวของ w_k ซะก่อน
  2. W = [p(:,1) zeros(size(p,1),M-1)];

  3. เสร็จแล้วก็เขียนโปรแกรมแบบนี้
  4. for k=2:M

       W(:,k) = p(:,k) – W(:,1:k-1)*alpha(1:k-1,k);

    end

เป็นอันเสร็จเรื่อง วิธีนี้เร็วกว่าวิธีทั่วไปแน่นอนเพราะการคูณเมตริกซ์ที่ใช้ใน MATLAB นั้นใช้วิธีที่เร็วที่สุดอยู่แล้ว

เขียนโปรแกรมบน MATLAB เพื่อใช้ในงานบางสถานการณ์จำเป็นต้องเขียนโปรแกรม
ให้เร็วที่สุดเท่าที่จะทำได้

 

     

Advertisements

2 comments on “Summation with MATLAB

  1. โชคดีจัง เจอคนชอบเขียนโปรแกรมเหมือนกัน ^_^ ว่างๆ ก็มาบล็อกผมได้นะ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s