Posted by : Unknown 17 September 2014



I. Nội dung giải thuật trung điểm midpoint

Xét trung điểm của đoạn AB (M)
Nếu M ở trên đoạn thẳng AB thì chọn B còn
M ở dưới đoạn thẳng AB chọn A
Công thức đơn giản hơn, tạo được các điểm tương tự như với Bresenham
d = f(xi + 1, yi + 1/2) là trung điểm của đoạn AB
So sánh hay kiểm tra M sẽ được thay bằng việc xét giá trị d.
- d > 0 điểm B được chọn khi đó yi+1 = yi 
- Nếu d < 0 điểm A được chọn khi đó yi+1 = yi + 1
- Trường hợp d = 0 chúng ta có thể chọn điểm bất kỳ hoặc A, hoặc B.

Sử dụng phương pháp biểu diễn không tường minh
f(x,y)= ax +by +c =0 (1)
dx =x2-x1 dy =y2-y1
Biểu diễn tường minh:
y= (dy/dx)x +B hay
f(x,y)=0= xdy - ydx +Bdx (2)

So sánh (1) và (2)
a=dyb=-dx c= Bdx

Có f(x,y)=0 với mọi (x,y) thuộc đường thẳng
Đặt di=f(xi+1,yi+1/2) = a(xi+1) +b(yi +1/2) +c

+ Nếu chọn A (d<0) thì M sẽ tăng theo 2 hướng x,y
di+1=f(xi+2,yi+3/2) = a(xi+2) +b(yi +3/2) +c
di+1 – di = a+b
 Hay di+1 = di + dy - dx

+ Nếu chọn B (d>0) thì M sẽ tăng theo x
di+1=f(xi+2,yi+1/2) = a(xi+2) +b(yi +1/2) +c
di+1 - di = a
Hay di+1 = di + dy
Tính d1 ?

d1 = f(x1+1,y1+1/2) = a(x1+1) +b(y1 +1/2) +c = ax1 +by1 +c +a +1/2 b = f(x1,y1) +a +b/2

Có (x1,y1) là điểm bắt đầu, nằm trên đoạn thẳng nên f(x1,y1) = 0
Vậy d1 = a+ b/2 = dy - dx/2





II. Ví dụ:

Viết mã chương trình sử dụng vòng lặp để tính tích phân:
bằng phương pháp midpoint với số lượng điểm N = 100.

Code:

a=-1.5; % Điểm cận dưới
b=1.5; % Điểm cận trên
N=100; % Số điểm tính tích phân
h=(b-a)/N;
tp=0;
for k=1:N
    x=a+(k-1/2)*h;
    F=4*x^3*2*exp(x)*cos(x);
    tp=tp+F;
end
tp=tp*h;
disp('Gia tri tich phan tinh theo phuong phap midpoint la: ')
tp


Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Kiến thức tổng quan - Vòng Đá 5A - Powered by Blogger - Designed by SnowBlack -