đồ án java - giải gần đúng phương trình , tìm hệ số hồi quy bằng phương pháp bình phương cực tiểu - Pdf 13

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN TOÁN ỨNG DỤNG & TIN HỌC
——————— * ———————
LẬP TRÌNH TÍNH TOÁN
ĐỒ ÁN I
Chuyên ngành: TOÁN TIN ỨNG DỤNG
Giảng viên hướng dẫn: Th.S NGUYỄN THÁI BÌNH
Sinh viên thực hiện: NGUYỄN TUẤN ANH
Lớp: Toán Tin 2 - K55
HÀ NỘI 4 - 2014
NHẬN XÉT CỦA THẦY HƯỚNG DẪN
1. Mục đích và nội dung của đồ án:
2. Kết quả đạt được:
3. Ý thức làm việc của sinh viên:
Hà Nội, ngày tháng năm 2014
Thầy hướng dẫn
(Kí và ghi rõ họ tên)
NGUYỄN THÁI BÌNH
Mục lục
LỜI MỞ ĐẦU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1 Phần Mở Đầu 5
1.1 Đối tượng nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Mục đích nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Phương pháp nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Ý nghĩa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Ước lượng hệ số hồi quy dạng: Y = aX + b, sử dụng phương pháp bình phương cực tiểu 7
2.1 Bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Giải thuật giải bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Source code Java giải bài toán . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4 Màn hình kết quả chạy chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 Tính nghiệm gần đúng 11

tránh những sai sót. Mong thầy cô, bạn đọc góp ý để bài báo cáo được trọn vẹn
hơn.
Và cuối cùng em xin chân thành cảm ơn các thầy cô giáo trong viện đã chỉ dạy
em trong thời gian qua, đặc biệt thầy Nguyễn Thái Bình đã trực tiếp chỉ dẫn tận
tình giúp đỡ em hoàn thành báo cáo này.
Hà Nội, Ngày 25 tháng 4 năm 2014
Nguyễn Tuấn Anh
4
Chương 1
Phần Mở Đầu
1.1 Đối tượng nghiên cứu
Đề tài này em tập trung vào các nội dung:
• Tìm hiểu, nghiên cứu ngôn ngữ lập trình Java
• Tìm hiểu các dạng bài toán của môn giải tích số
• Tìm hiểu công cụ xây dựng chương trình
1.2 Mục đích nghiên cứu
Hiểu được cách xây dựng chương trình trong Java, các cấu trúc lớp, đối tượng,
các hàm , các bước xây dựng chương trình giải bài toán thực tế trên máy tính.
Biết cách sử dụng phần mềm Eclipse để ứng dụng giải các bài toán giải tích số
1.3 Phương pháp nghiên cứu
Dựa vào giáo trình giải tích số của thầy Lê Trọng Vinh kết hợp với sự mạnh mẽ
của ngôn ngữ Java, e đã xây dựng được chương trình giải bài toán trên công cụ
Eclipse.
5
1.4 Ý nghĩa
Chương trình sẽ giải được hầu hết các bài toán thông dụng, đồng thời cũng là
tài liệu quý giá cho sinh viên rong việc học tập và nghiên cứu chuyên sâu sau này.
6
Chương 2
Ước lượng hệ số hồi quy dạng: Y = aX + b,

y = new float[n];
float tongx=0,tongy=0;
float tongtichxy = 0;
float tongxbinhphuong = 0;
for(int i = 0;i<n;i++){
x[i]=scan.nextFloat();
}
for(int i = 0;i<n;i++){
y[i] = scan.nextFloat();
}
for(int i = 0;i<n;i++){
tongx = tongx +x[i];
tongy = tongy +y[i];
//tichxy = x[i]*y[i];
tongtichxy = tongtichxy + x[i]*y[i];
8
tongxbinhphuong = tongxbinhphuong + x[i]*x[i];
}
float tbx = tongx/n;
//for(int i=0;i<n;i++){
// y[i] = scan.nextFloat();
// tongy = tongy +y[i];
//}
float tby = tongy/n;
float a = (tongtichxy - n*tbx*tby)/(tongxbinhphuong
- n*tbx*tbx);
float b = tby - a*tbx;
System.out.println("trung binh cua x[i] = "+tbx);
System.out.println("trungbinh cua y[i] = "+tby);
System.out.println("tong cua cac tich x[i]*y[i] =

Giải thuật
Giải thuật phương pháp chia đôi
Giả sử hàm số f(x) liên tục trên đoạn [a, b] và f(a).f(b) < 0. Chia [a b] thành hai
phần bởi điểm giữa c = (a + b)/2
• Nếu f(c) = 0 thì nghiệm là x = c
• Nếu f(c) 0 thì chọn [a c] hoặc [c b] mà giá trị hàm tại hai đâu trái dấu và kí
hiệu [a1 b1]. Đối với [a1 b1] lại tiến hành như [a b]
Giải thuật phương pháp tiếp tuyến
Chọn x
0
∈ khoảng nghiệm [a b]
Tiếp tuyến tại A
0
(x
0
,f(x
0
)) cắt trục x tại hoành độ x
1
Tiếp tuyến tại A
1
(x
1
,f(x
1
)) cắt trục x tại hoành độ x
2
,
Tiếp tuyến tại A
k

k
+ 1 - x
k
) => x
k
+ 1 = x
k
-
f(x
k
)
f

(x
k
)
3.3 Điều kiện hội tụ và sai số
Phương pháp chia đôi
Giả sử [a
k
b
k
] là khoảng phân li nghiệm sau k lần lặp. Nếu |a
k
- b
k
| < epsilon
cho trước thì nghiệm gần đúng của phương trình là c = (a
k
+ b

if((y-x)>=ex)
return 0;
else
return 1;
}
public static void main(String[] args) {
float a,b;
float c;
Scanner input = new Scanner(System.in);
System.out.println("moi nhap a va b :");
a = input.nextInt();
b = input.nextInt();
if((ham(a)*ham(b) < 0)&(DaoHam1(a)*DaoHam1(b)>0)){
System.out.println(" \n a va b la khoang phan
li nghiem");
c = (a+b)/2;
int stop=0;
int dem= 0;
while(ham(c)!=0&&stop==0){
dem++;
if (ham(c)==0){
stop=1;
}
else if(ham(a)*ham(c)<=0){
if (kiemtra(a,b)==0){
b=c;
c=(a+b)/2;
14
}
else stop=1;

}
public static float DaoHam2(float x)
{
return 20*x*x*x;
}
public static void main(String[] args) {
float a,b;
float m1 =0;
float m2 = 0;
float y=0;
float x=0;
Scanner input = new Scanner(System.in);
System.out.println("moi nhap a va b :");
a = input.nextFloat();
b = input.nextFloat();
if((ham(a)*ham(b) < 0)&(DaoHam1(a)*DaoHam1(b)>0)){
System.out.println(" \n a va b la khoang phan
li nghiem");
if((DaoHam1(a)*DaoHam1(b)>0)&(DaoHam2(a)*DaoHam2(b)>0)){
System.out.println("\n Giai PT bang pp
Tiep tuyen :");
float tg;
if(ham(a)*DaoHam2(a)>0){
tg= a;
}
else{
tg =b;
}
if(Math.abs(DaoHam1(a)) <
Math.abs(DaoHam1(b)))

System.out.println("\n a va b khong t/m
giai pt = pp Tiep tuyen :");
}
}
else{
17
System.out.println(" \n a va b khong phai la
khoang phan li nghiem,moi nhap lai");
}
}
}
3.5 Màn hình kết quả chạy chương trình
Kết quả phương pháp chia đôi
18
Kết quả phương pháp tiếp tuyến
3.5.1 So sánh kết quả 2 phương pháp và rút ra nhận xét
Phương pháp chia đôi
Ưu điểm của phương pháp chia đôi là thuật toán đơn giản do đó dễ lập trình.
Tuy nhiên do phương pháp chia đôi sử dụng rất ít thông tin về hàm f(x) nên tốc độ
hội tụ khá chậm và chỉ sử dụng để giải sơ bộ phương trình.
Phương pháp tiếp tuyến
Tuy thuật toán phương pháp tiếp tuyến phức tạp hơn so với thuật toán phương
pháp chia đôi, đòi hỏi phải tính đạo hàm f’(x), nhưng lại tỏ ra hiệu quả hơn, vòng
lặp ít hơn do tốc độ hội tụ nghiệm nhanh, hiệu quả trong việc giải các phương trình
phức tạp.
19
3.6 Kết luận
20
Tài liệu tham khảo
[1] Họ và tên tác giả, năm, Tên sách NXB.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status