Showing posts with label Matlab. Show all posts

Matlab - Phương pháp newton cho tính căn bậc 2



Matlab - Phương pháp newton cho tính căn bậc 2

I. Phương pháp newton
           Trong toán học có một số vấn đề mà không thể giải quyết được bằng cách biến đổi đại số đơn giản.
           Ví dụ ,để tìm số gần đúng của căn bậc hai,  mà không dùng đến trong máy tính. Chúng ta không thể giải quyết vấn đề này bằng các phương pháp đại số thông thường đã học.
           Sau đây là một giải pháp tìm nghiệm gần đúng của phương trình:phương pháp newton
          Cho hàm f(x) có đồ thị như hình vẽ.
Bây giờ là phương pháp newton đi tìm nghiệm gần đúng của phương trình f(x)=0

         
      Gọi nghiệm cần tìm là x=r.Khi đó có thể lấy một x1 bất kỳ gần với r.Kẻ tiếp tuyến của đồ thị tại f(x1).Như hình vẽ tiếp tuyến giao với Ox tại x2.
Ta thấy x2 dần đến r.
Ta có thể cm dể dàng :    
                                        

II. Ví dụ dùng matlab

Viết mã chương trình sử dụng vòng lặp while để tính gần đúng căn 2 dựa trên phương pháp newton dùng hệ thức đệ quy:
Qúa trình lặp thực hiện cho đến khi xn thay đổi chỉ 0.0001.
Bài làm :

clc; clear all; close all;
x0=2;
x1=1.5;
while(x0-x1)>0.0001
    x0=x1;
    x1=(x0^2+2)/(2*x0)
end;
disp('Gia tri cua can 2 tinh theo pp gan dung la: ')
x1




Matlab – Giải thuật trung điểm midpoint



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


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