Dùng matlab để thiết kế phần mềm trợ giúp giảng dạy và học tập

123 193 0
Dùng matlab để thiết kế phần mềm trợ giúp giảng dạy và học tập

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Luận văn thạc sỹ Toán–Tin ứng dụng MỤC LỤC MỞ ĐẦU CHƢƠNG MỘT SỐ KIẾN THỨC CƠ BẢN VỀ MATLAB 1.1 Giới thiệu chung cách sử dụng môi trƣờng Matlab 1.1.1 Khả ứng dụng matlab 1.1.2 Đặc điểm Matlab 1.1.3 Không gian làm việc Matlab 1.2 Các khái niệm 11 1.2.1 Hằng 11 1.2.2 Biến 12 1.2.3 Kiểu liệu 12 1.2.4 Các phép toán đơn giản 13 1.2.5 Biểu thức 14 1.2.6 Số phức 16 1.2.7 Tập lệnh Matlab 16 1.2.8 Các phép toán mảng thao tác với mảng 22 1.3 Các hàm số học 33 1.4 Các hàm giải tích 35 1.4.1 Một số hàm 35 1.4.2 Tính đạo hàm 36 1.4.3 Tìm giới hạn 39 1.4.4 Tính tích phân 41 1.5 Các hàm đại số 42 1.6 Đồ họa Matlab 47 1.6.1 Đồ hoạ hệ toạn độ phẳng: 47 1.6.2 Đồ hoạ không gian ba chiều 55 Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang Luận văn thạc sỹ Toán–Tin ứng dụng CHƢƠNG LẬP TRÌNH TRONG MATLAB 59 2.1 Cách tổ chức chƣơng trình Matlab 59 2.1.1 Chƣơng trình 59 2.1.2 Dòng lệnh 59 2.1.3 Câu giải thích (chú thích) 59 2.2 Câu lệnh gán 60 2.3 Các lệnh vào/ra liệu 60 2.3.1 Lệnh đƣa liệu vào 60 2.3.2 Lệnh đƣa liệu hình 61 2.4 Các cấu trúc điều khiển 62 2.4.1 Lệnh if elseif else 62 2.4.2 Câu lệnh swich – case 63 2.4.3 Câu lệnh for 64 2.4.4 Lệnh while 65 2.4.5 Lệnh function 66 2.4.6 Các lệnh break, return, error pause 67 CHƢƠNG MỘT SỐ BÀI TOÁN GIẢI TÍCH SỐ 68 3.1 Giải gần phƣơng trình 68 3.1.1 Bài toán giải gần phƣơng trình 68 3.1.2 Phƣơng pháp chia đôi 68 3.1.3 Phƣơng pháp lặp 70 3.1.4 Phƣơng pháp dây cung 70 3.1.5 Phƣơng pháp tiếp tuyến 71 3.2 Giải gần hệ phƣơng trình đại số tuyến tính 72 3.2.1 Bài toán giải gần hệ phƣơng trình đại số tuyến tính 72 3.2.2 Phƣơng pháp lặp Jacobi 73 3.2.3 Phƣơng pháp lặp Seidel 76 3.3 Xấp xỉ hàm phƣơng pháp nội suy 77 Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang Luận văn thạc sỹ Toán–Tin ứng dụng 3.3.1 Bài toán nội suy 77 3.3.2 Đa thức nội suy Lagrange 77 3.3.3 Đa thức nội suy Newton 78 3.4 Tìm hàm thực nghiệm phƣơng pháp bình phƣơng tối thiểu 78 3.4.1 Bài toán 78 3.4.2 Tìm hàm thực nghiệm dạng tuyến tính 79 3.4.3 Tìm hàm thực nghiệm dạng phi tuyến 80 3.5 Giải gần phƣơng trình vi phân thƣờng cấp 81 3.5.1 Bài toán Cauchy phƣơng trình vi phân thƣờng cấp 81 3.5.2 Phƣơng pháp Euler 82 3.5.3 Phƣơng pháp Euler cải tiến 82 3.5.4 Phƣơng pháp Runge−Kutta cấp 83 CHƢƠNG VẬN DỤNG MATLAB GIẢI MỘT SỐ BÀI TOÁN GIẢI TÍCH SỐ 85 4.1 Giải gần phƣơng trình 85 4.1.1 Phƣơng pháp chia đôi 85 4.1.2 Phƣơng pháp lặp 89 4.1.3 Phƣơng pháp tiếp tuyến 91 4.1.4 Phƣơng pháp dây cung 95 4.2 Giải gần hệ phƣơng trình đại số tuyến tính 98 4.2.1 Phƣơng pháp lặp 98 4.2.2 Phƣơng pháp lặp Seidel 101 4.3 Xấp xỉ hàm phƣơng pháp nội suy 103 4.3.1 Đa thức nội suy Lagrange 103 4.3.2 Đa thức nội suy Newton tiến 105 4.3.3 Đa thức nội suy Newton lùi 109 4.4 Tìm hàm thực nghiệm phƣơng pháp bình phƣơng tối thiểu 113 Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang Luận văn thạc sỹ Toán–Tin ứng dụng 4.4.1 Chƣơng trình tìm hàm thực nghiệm theo số dạng tuyến tính 113 4.4.2 Chƣơng trình tìm hàm thực nghiệm theo số dạng phi tuyến 113 4.5 Giải gần phƣơng trình vi phân thƣờng cấp 114 4.5.1 Phƣơng pháp Euler 114 4.5.2 Phƣơng pháp Euler cải tiến 117 4.5.3 Phƣơng pháp Runge−Kutta cấp 119 KẾT LUẬN 122 TÀI LIỆU THAM KHẢO 123 Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang Luận văn thạc sỹ Toán–Tin ứng dụng MỞ ĐẦU Lý chọn đề tài Giải tích số phát triển mạnh mạnh với phát triển nhanh tin học Công nghệ thông tin giải tích số có vai trò quan trọng nhiều lĩnh vực Thực tế nay, có nhiều tài liệu giải tích số song tài liệu giới thiệu phần mềm tính toán (Maple, Matlab, ) chƣơng trình máy tính giải toán số Trong Matlab phần mềm tiếng công ty MathWorks, ngôn ngữ hiệu cao cho tính toán kỹ thuật Nó tích hợp tính toán, hiển thị lập trình môi trƣờng dễ sử dụng Các ứng dụng tiêu biểu Matlab bao gồm: hỗ trợ toán học tính toán; phát triển thuật toán; mô hình mô phỏng; phân tích, khảo sát hiển thị số liệu; đồ họa khoa học kỹ thuật; phát triển ứng dụng với giao diện đồ họa, … Ngoài Matlab với khả phong phú, phần mềm Matlab có trang bị thêm ToolBox – gói chƣơng trình (thƣ viên) cho ứng dụng đa dạng nhƣ xử lý tín hiệu, nhận dạng hệ thống, xử lý ảnh, mạng nơ ron, logic mờ, tài chính, tối ƣu hóa, phƣơng trình đạo hàm riêng, … Đây tập mã nguồn viết Matlab dựa theo thuật toán mới, hữu hiệu mà ngƣời dùng chỉnh sửa bổ sung thêm hàm Matlab đƣợc thiết kế để giải toán số không nhằm mục đích tính toán ký hiệu nhƣ Mathematica Maple Tuy nhiên Matlab tính toán ký hiệu đƣợc nhờ hàm Symbolic Math ToolBox Hiện có nhiều trƣờng đại học nƣớc nhƣ nƣớc ngoài, trƣờng kỹ thuật đƣa Matlab vào giảng dạy nghiên cứu Với ƣu tính toán số trị Matlab thích hợp cho việc giảng dạy môn học thuộc lĩnh vực giải tích số - môn học quan trọng sinh viên ngành kỹ thuật khoa học tự nhiên Việc sử dụng Matlab để lập trình thuật toán môn học có thuận lợi đơn giản, dễ dàng vẽ đồ thị để hiển thị kết kiểm Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang Luận văn thạc sỹ Toán–Tin ứng dụng tra kết quả, thƣ viện phong phú hàm toán học đƣợc cài đặt sẵn Dùng Matlab để thiết kế phần mềm trợ giúp môn Toán, đặc biệt môn Giải tích số, có ý nghĩa thiết thực nhằm nâng cao chất lƣợng dạy học Mục tiêu nghiên cứu Sử dụng ngôn ngữ lập trình Matlab để xây dựng phần mềm trợ giúp giải toán giải tích số nhằm nâng cao hiệu giảng dạy học tập môn học Nhiệm vụ phạm vi nghiên cứu - Tìm hiểu phần mềm toán học Matlab - Nghiên cứu nội dung môn phƣơng pháp tính thuộc lĩnh vực giải tích số, theo chƣơng trình giảng dạy trƣờng đại học Bách Khoa Hà Nội - Sử dụng phần mềm Matlab xây dựng chƣơng trình giải toán số Phƣơng pháp nghiên cứu - Nghiên cứu tài liệu hƣớng dẫn sử dụng lập trình phần mềm Toán học Matlab - Nghiên cứu nội dung môn học phƣơng pháp tính, từ thiết kế thuật toán cho phƣơng pháp giải gần toán số - Cài đặt thuật toán thành phần mềm tính toán nhằm minh họa giải toán số môn học phƣơng pháp tính Cấu trúc luận văn Ngoài phần mở đầu, kết luận, tài liệu tham khảo phụ lục, luận văn gồm chƣơng: Chƣơng Một số kiến thức Matlab Chƣơng Lập trình Matlab Chƣơng Một số toán giải tích số Chƣơng Vận dụng Matlab giải số toán giải tích số Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang Luận văn thạc sỹ Toán–Tin ứng dụng CHƢƠNG 1.1 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ MATLAB Giới thiệu chung cách sử dụng môi trƣờng Matlab 1.1.1 Khả ứng dụng matlab - Một tính tuyệt với Matlab nhìn từ góc độ nhà khoa học tính toán thƣ viện dựng sẵn phong phú chƣơng trình tính toán công cụ hiển thị đồ hoạ - Matlab cho phép ngƣời dùng tiến hành nhiều nhiệm vụ thông thƣờng liên quan tới việc xử lý tính toán số với tốc độ nhanh, độ xác cao Các tính toán mạnh đƣợc thực với hai câu lệnh - Ngƣời dùng xây dựng riêng cho hàm toán học ứng dụng đặc biệt - Matlab có giao diện đồ hoạ đẹp, sinh động, hình từ Matlab đem chèn vào phần mềm soạn thảo văn nhƣ LATEX , WORD, 1.1.2 Đặc điểm Matlab Chƣơng trình Matlab đƣợc xây dựng tƣơng tự nhƣ ngôn ngữ lập trình có cấu trúc thông thƣờng Đặc điểm ƣu chƣơng trình Matlab đơn giản, ngắn gọn nhờ việc tận dụng thƣ viện đầy đủ hàm đƣợc lập sẵn mô tả cấu trúc toán học nhƣ thể tính toán cách tự nhiên Để minh hoạ điều này, ta xét ví dụ đơn giản: So sánh hai phép cộng véctơ ngôn ngữ lập trình Pascal Matlab Sử dụng Pascal: Var A: Array[1 5] of Integer = (3, 7, 4, 2, 0); A: Array[1 5] of Integer = (-2, 4, 8, 5, 1) A: Array[1 5] of Integer; i: byte; Begin for i:= to C[i]:=A[i] + B[i]; for i:= to write(c[i], „ „); Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang Luận văn thạc sỹ Toán–Tin ứng dụng End Sử dụng Matlab: A=[3, 7, 4, 2, 0] B=[-2, 4, 8, 5, 1] C:=A + B Có đƣợc đơn giản nói nhờ Matlab xây dựng sẵn khái niệm ma trận Dấu cộng dòng lệnh Matlab biểu thị phép cộng ma trận Pascal khả nhƣ vậy, ta cần sử dụng kiểu liệu mảng để biểu diễn ma trận tự xây dựng chƣơng trình tính toán ma trận Vì chƣơng trình Pascal dài phức tạp nhiều Một đặc điểm tất biến dùng Pascal phải đƣợc khai báo Trong Matlab biến tự động hình thành câu lệnh gán 1.1.3 Không gian làm việc Matlab - Về không gian làm việc Matlab gồm có phần sau: + Cửa sổ trợ giúp (Help Windon) + Nút Start + Cửa sổ nhập lệnh (Command Windon) + Cửa sổ không gian làm việc (Workspace Windon) + Cửa sổ trình lệnh (Command History Windon) + Cửa sổ biên tập mảng, véctơ, ma trận (Array editor Windon) + Cửa sổ địa thƣ mục thời (Current directory Windon) - Nút góc bên phải cửa sổ dùng để đóng chúng Hiển thị lại cửa sổ cách tích  vào tên sổ tƣơng ứng menu Desktop - Nút bên cạnh nút dùng để tách sổ làm việc cửa sổ Matlab thành cửa sổ độc lập Ấn nút lần nhập cửa sổ độc lập cửa sổ Matlab - Nút Start góc dƣới bên trái hình Matlab cho phép ta chạy ứng dụng mẫu (demos), công cụ cửa sổ chƣa hiển thị khởi động Matlab Bằng cách đánh dấu lệnh „demo‟ ta tiếp cận với tập nhiều file trình diễn giá trị cao Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang Luận văn thạc sỹ Toán–Tin ứng dụng Ví dụ: Thử chạy Start -> Matlab –> Demos chạy ứng dụng mẫu cửa sổ Demo (s) Lƣu ý: Lệnh xoá tất giá trị biến có 1.1.3.1 Cửa sổ lệnh Đây cửa sổ Matlab, thực toàn việc nhập liệu xuất kết tính toán Dấu nhắc >> để gõ lệnh Matlab môi trƣờng tƣơng tác, câu lệnh đƣợc đƣa Matlab thực thi trƣớc đòi hỏi lệnh Các diễn giải có cấu trúc nhƣ sau: >> diễn giải  lƣu lại kết tính toán vào biến: >> Biến = diễn giải  Trong đó, diễn giải thƣờng đƣợc soạn toán tử, hàm, tên biến, đƣợc hiển thị hình sau nhấn Enter Các câu lệnh có dạng “tên biến = diễn giải” diễn giải đƣợc gán cho biến sử dụng sau Khi tên biến dấu đƣợc bỏ kết “diễn giải” đƣợc tự động gán cho biến có tên „ans‟ (hay answer - câu trả lời) hiển thị hình Một số lệnh tổng quát liên quan đến cửa sổ này: + cls: Xóa cửa sổ lệnh + Home: Di chuyển trỏ lên góc trái cửa sổ (khi chạy chƣơng trình) + Help: Trợ giúp thông tin mục + echo, echo on/ off: Tắt mở hiển thị dòng file m chạy chƣơng trình + edit: Gọi chƣơng trình soạn file *.m + type tên_file: Đọc nội dung file *.m + demo: Gọi chƣơng trình demo + quit, exit: Thoát chƣơng trình Matlab Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang Luận văn thạc sỹ Toán–Tin ứng dụng Một số phím hỗ trợ thao tác: Chức Phím Phím Chức  Gọi lại hàng trƣớc end Về cuối hàng  Gọi lại kế Esc Xoá hàng  Tới ký tự Delete Xoá ký tự trở  Lùi lại ký tự Backspace Xoá ký tự trƣớc trỏ Ctrl  Qua phải từ Ctrl K Xóa đến cuối hàng Ctrl  Qua trái từ Shift Home Đánh dấu đến đầu hàng Home Về đầu hàng Shift End Đánh dấu đến cuối hàng 1.1.3.2 Cửa sổ lịch sử lệnh Command History Liệt lệnh sử dụng trƣớc kèm thời gian bắt đầu Có thể lặp lại lệnh cũ cách nhắp chuột kép vào lệnh Cũng cắt, xoá nhóm lệnh lệnh riêng rẻ 1.1.3.3 Cửa sổ không gian làm việc Các biến liệu mà ta nhập vào tính toán đƣợc Matlab lƣu phần gọi “Không gian làm việc” Tất biến ngoại trừ biến cục thuộc M- file, đƣợc hiển thị không gian làm việc + Lệnh who hay lệnh whos liệt biến không gian làm việc Ví dụ: Đánh lệnh „whos‟ vào cửa sổ lệnh, ta thấy danh sách biến có kiểu kích cỡ chúng + Để biết giá trị biến, ta đánh vào tên biến cửa sổ lệnh nhấn Enter + Để xoá hàm hay biến khỏi không gian làm việc ta sử dụng lệnh clear >> clear tên_biến  + Bản thân lệnh clear xoá tất biến có (tƣơng đƣơng với lệnh clear All) 1.1.3.4 Cửa sổ biên tập mảng Khi ta có mảng, ta chỉnh sửa, biên tập lại Array Editor Công cụ làm việc nhƣ bảng tính (spreadsheet) cho ma trận Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 10 Luận văn thạc sỹ Toán–Tin ứng dụng for j=1:i-1 tich=tich*(c-x(j)); end p=p+tich*f(i,i+1); end root=p; end Ta xây dựng chƣơng trình chay clear all, clc x=[0 6]; y=[1 6]; c=1.25; [f,root]=newton1(x,y,c) c) Kết thực f= 1.0000 0 0 2.0000 3.0000 1.0000 0 0 3.0000 2.0000 -1.0000 -0.6667 0 5.0000 5.0000 1.5000 6.0000 6.0000 1.0000 -0.1667 -0.2500 -0.0917 0 0.8333 0 0.3000 0 0 0 root = 3.9312 4.3.3 Đa thức nội suy Newton lùi 4.3.3.1 Xây dựng đa thức nội suy Newton lùi a) Thuật toán xây dựng đa thức nội suy Newton lùi Bƣớc 1: Nhập xk, y Bƣớc 2: n = length(xk); Bƣớc 3: T = sym(ones(n,1)); Bƣớc 4: syms x; Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 109 Luận văn thạc sỹ Toán–Tin ứng dụng Bƣớc 5: t = x - xk(n); Bƣớc 6: F(1) = y(n); Bƣớc 7: T(1) = 1; p = 0; Bƣớc 8: i = 2; Bƣớc 9: Nếu i > n chuyển xuống Bƣớc 14 Bƣớc 10: j = 1; Bƣớc 11: Nếu j > n – i + F(i) = y(n-i+1); i=i + 1; quay Bƣớc Bƣớc 12: y(i) = (y(j) – y(j+1))/ (xk(j) – xk(j + i -1)); Bƣớc 13: j = j+1; Quay bƣớc 11 Bƣớc 14: i=2; Bƣớc 15: Nếu i > n – chuyển xuống Bƣớc 19 Bƣớc 16: T(2) = x – xk(n); Bƣớc 17: T(i+1) = T(i) * (x – xk(n – i +1)); Bƣớc 18: i = i+1; quay Bƣớc 15 Bƣớc 19: i = 1; Bƣớc 20: Nếu i > n Đƣa p; kết thúc Bƣớc 21: p = p + T(i) * F(i); Bƣớc 22: i = i + 1; quay Bƣớc 20 b) Chƣơng trình Matlab function p=newtonlui(xk,y) n=length(xk); T=sym(ones(n,1)); syms x; t=x-xk(n); F(1)=y(n); T(1)=1; p=0; for i=2:n for j=1:n-i+1 y(j)=(y(j)-y(j+1))/(xk(j)-xk(j+i-1)); end F(i)=y(n-i+1); end Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 110 Luận văn thạc sỹ Toán–Tin ứng dụng for i=2:n-1 T(2)=x-xk(n); T(i+1)=T(i)*(x-xk(n-i+1)); end for i=1:n p=p+T(i)*F(i); end end Ta xây dựng chƣơng trình chay clear all, clc xk=[0 6]; y=[1 6]; p=newtonlui(xk,y) c) Kết thực p= x - ((x - 5)*(x - 6))/6 - ((x - 3)*(x - 5)*(x - 6))/4 - (11*(x - 2)*(x - 3)*(x - 5)*(x - 6))/120 4.3.3.2 Tính gần giá trị hàm đa thức nội suy Newton lùi a) Thuật toán Bƣớc 1: Nhập xk, y, c Bƣớc 2: n = length(xk); Bƣớc 3: F(1) = y(n); T(1) = 1; p = 0; Bƣớc 4: i = 2; Bƣớc 5: Nếu i > n chuyển xuống Bƣớc 10 Bƣớc 6: j = 1; Bƣớc 7: Nếu j > n – i + F(i) = y(n-i+1); i=i + 1; quay Bƣớc Bƣớc 8: y(i) = (y(j) – y(j+1))/ (xk(j) – xk(j + i -1)); Bƣớc 9: j = j+1; Quay bƣớc Bƣớc 10: i=2; Bƣớc 11: Nếu i > n – chuyển xuống Bƣớc 15 Bƣớc 12: T(2) = c – xk(n); Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 111 Luận văn thạc sỹ Toán–Tin ứng dụng Bƣớc 13: T(i+1) = T(i) * (c – xk(n – i +1)); Bƣớc 14: i = i+1; quay Bƣớc 11 Bƣớc 15: i = 1; Bƣớc 16: Nếu i > n Đƣa p; kết thúc Bƣớc 17: p = p + T(i) * F(i); Bƣớc 18: i = i + 1; quay Bƣớc 20 b) Chƣơng trình Matlab function p=newtonlui(xk,y,c) n=length(xk); F(1)=y(n); T(1)=1; p=0; for i=2:n for j=1:n-i+1 y(j)=(y(j)-y(j+1))/(xk(j)-xk(j+i-1)); end F(i)=y(n-i+1); end for i=2:n-1 T(2)=c-xk(n); T(i+1)=T(i)*(c-xk(n-i+1)); end for i=1:n p=p+T(i)*F(i); end end Tạo file để chạy chƣơng trình clear all, clc xk=[0 6]; y=[1 6]; c=1.25; p=newtonlui(xk,y,c) Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 112 Luận văn thạc sỹ Toán–Tin ứng dụng c) Kết thực p= 3.9312 Tìm hàm thực nghiệm phƣơng pháp bình phƣơng tối thiểu 4.4 4.4.1 Chƣơng trình tìm hàm thực nghiệm theo số dạng tuyến tính Ví dụ: Tìm hàm f(x) = Ax2 + Bx + C với xấp sỉ tốt kiện x 1 3 y 4.12 4.18 6.23 8.34 8.38 12.13 18.32 Chƣơng trình Matlab: Xác định đa thức xáp xỉ hàm thực nghiệm x=[1 3 5]; y=[4.12 1.18 6.23 8.34 8.38 12.13 18.32]; n=2; % hàm polyfit cho phep ta xay dƣng da thuc f=polyfit(x,y,n); x2=1:.1:5; y2=polyval(f,x2); plot(x,y,‟ro‟,x2,y2,‟lineWidth‟,2) title(„Do thi cua da thuc f (mau xanh) va cac diem du kiem (mau do)‟) grid on Kết chay chƣơng trình:f = 0.4782 0.9009 1.5003 4.4.2 Chƣơng trình tìm hàm thực nghiệm theo số dạng phi tuyến Ví dụ: Tìm hàm f(x) = aebx với xấp sỉ tốt kiện x y 2.72 7.39 20.1 54.6 148.4 Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 113 Luận văn thạc sỹ Toán–Tin ứng dụng Chƣơng trình Matlab function [ a,b] = ppphituyen( x,y ) n=length(x); X=x; Y=log(y); s1=0; s2=0; s3=0; s4=0; for i=1:n s1=s1+X(i); s2=s2+X(i)*X(i); s3=s3+X(i)*Y(i); s4=s4+Y(i); end A=(s4*s2-s1*s3)/(n*s2-s1*s1); B=(n*s3-s1*s4)/(n*s2-s1*s1); a=exp(A); b=B; end Tạo file để chạy chƣơng trình clear all, clc x=[1 5]; y=[2.72 7.39 20.1 54.6 148.4]; [ a,b] = ppphituyen( x,y ) Kết thực 4.5 a= 1.0007 b= 0.9998 Giải gần phƣơng trình vi phân thƣờng cấp 4.5.1 Phƣơng pháp Euler a) Thuật toán Bƣớc 1: Tạo hàm fcn=f(x,y); Bƣớc 2: Nhập x0, y0, h, xmax Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 114 Luận văn thạc sỹ Toán–Tin ứng dụng Bƣớc 3: % tìm số điểm chia đoạn [x0, xmax] N=fix((xmax-x0)/h)+1; Bƣớc 4: y=zeros(N,1); Bƣớc 5: y(1)=y0; i=2; Bƣớc 6: Nếu i>N chuyển xuống Bƣớc Bƣớc 7: y(i)=y(i-1) + h*(fcn,x(i-1),y(i-1)); Bƣớc 8: i=i+1; quay lại Bƣớc Bƣớc 9: % Giải xác Bƣớc 9.1: Tạo hàm Yes(x); Bƣớc 9.2: X=x; Y=zeros(N,1); i=1; Bƣớc 9.3: Nếu i>N then chuyển xuống Bƣớc 10 Bƣớc 9.4: Y(i)= Yes(x(i)); Bƣớc 9.5: i=I+1; Quay lại Bƣớc 9.3 Bƣớc 10: % Tính toán sai số Bƣớc 10.1: err=zeros(N,1); i=1; Bƣớc 10.2: Nếu i>N then chuyển xuống Bƣớc 11 Bƣớc 10.3: err=Y(i)-y(i) Bƣớc 10.4: i=i+1; Quay lại Bƣớc 10.2 Bƣớc 11: Đƣa x(i), y(i), Y(i), err(i), kết thúc b) Chƣơng trình Matlab Tạo file fcn.m; Tạo hàm fcn(x,y) function a=fcn(x,y) a=inline(„y-x^2+1‟); end Tạo file Yex.m; Tạo hàm xác Yex(x) function a=Yex(x) a=(x+1)^2-0.5*exp(x); end Tạo file euler.m function [x,y,Y,err]=euler(fcn,x0,y0,h,xmax) Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 115 Luận văn thạc sỹ Toán–Tin ứng dụng N=fix((xmax-x0)/h)+1; % Dem so diem chia x= linspace(x0,xmax,N); % chia [x0,xmax] N diem y=zeros(N,1); % Giai so y=y(x) y(1)=y0; for i=2:N y(i)=y(i-1)+h*feval(fcn,x(i-1),y(i-1)); end % Giai chinh xac Y=y(x) X=x; Y=zeros(N,1); for i=1:N Y(i)=Yex(X(i)); end % Tinh toan cac sai so err=zeros(N,1); for i=1:N err(i)=Y(i)-y(i); end end Tạo file cteuler.m để chạy chƣơng trình x0=0; y0=0.5; h=0.2; xmax=2; [x,y,Y,err]=euler(fcn,x0,y0,h,xmax) c) Kết thực xn yn Yn err 0.5000 0.5000 0.2 0.8000 0.8293 0.0293 0.4 1.1520 1.2141 0.0621 0.6 1.5504 1.6489 0.0985 0.8 1.9885 2.1272 0.1387 Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 116 Luận văn thạc sỹ Toán–Tin ứng dụng 1.0 2.4582 2.6409 0.1827 1.2 2.9498 3.1799 0.2301 1.4 3.4518 3.7324 0.2806 1.6 3.9501 4.2835 0.3334 1.8 4.4282 4.8152 0.3870 2.0 4.8658 5.3055 0.439 4.5.2 Phƣơng pháp Euler cải tiến a) Thuật toán Bƣớc 1: Tạo hàm f(x,y) % fcn Bƣớc 2: Nhập x0, y0, h, xmax Bƣớc 3: N=fix((xmax-x0)/h)+1; % tìm số điểm chia đoạn [x0, xmax] Bƣớc 4: y=zeros(N,1); Bƣớc 5: y(1)=y0; i=2; Bƣớc 6: Nếu i>N chuyển xuống Bƣớc Bƣớc 7: y(i)=y(i-1) + h*feval(fcn,x(i-1),y(i-1)); Bƣớc 8: y(i)=y(i-1)+h*(feval(fcn,x(i-1),y(y-1))+feval(fcn,x(i),y(i)))/2; Bƣớc 9: i=i+1; quay lại Bƣớc Bƣớc 10: % Giải xác Bƣớc 10.1: Tạo hàm Yes(x); Bƣớc 10.2: X=x; Y=zeros(N,1); i=1; Bƣớc 10.3: Nếu i>N then chuyển xuống Bƣớc 10 Bƣớc 10.4: Y(i)= Yes(x(i)); Bƣớc 10.5: i=I+1; Quay lại Bƣớc 10.3 Bƣớc 10: % Tính toán sai số Bƣớc 11.1: err=zeros(N,1); i=1; Bƣớc 11.2: Nếu i>N then chuyển xuống Bƣớc 12 Bƣớc 11.3: err=Y(i)-y(i) Bƣớc 11.4: i=i+1; Quay lại Bƣớc 11.2 Bƣớc 12: Đƣa x(i), y(i), Y(i), err(i), kết thúc Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 117 Luận văn thạc sỹ Toán–Tin ứng dụng b) Chƣơng trình Matlab Tạo file fcn.m; Tạo hàm fcn(x,y) function a=fcn(x,y) a=inline(„y-x^2+1‟); end Tạo file Yex.m; Tạo hàm xác Yex(x) function a=Yex(x) a=(x+1)^2-0.5*exp(x); end Tạo file eulerct.m function [x,y,Y,err]=eulerct(fcn,x0,y0,h,xmax) N=fix((xmax-x0)/h)+1; % Dem so diem chia x= linspace(x0,xmax,N); % chia [x0,xmax] N diem % Giai so y=y(x) y(1)=y0; y=zeros(N,1); for i=2:N y(i)=y(i-1)+h*feval(fcn,x(i-1),y(i-1)); y(i)=y(i-1)+h*(feval(fcn,x(i-1),y(i-1)+feval(fcn,x(i),y(i)))/2; end % Giai chinh xac Y=y(x) X=x; Y=zeros(N,1); For i=1:N Y(i)=Yex(X(i)); End % Tinh toan cac sai so err=zeros(N,1); for i=1:N err(i)=Y(i)-y(i); end end Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 118 Luận văn thạc sỹ Toán–Tin ứng dụng Tạo file cteuler.m để chạy chƣơng trình x0=0; y0=0.5; h=0.2; xmax=2; [x,y,Y,err]=eulerct(fcn,x0,y0,h,xmax) c) Kết thực xn yn Yn err 0 0.5000 0.5000 0.2000 0.2160 0.8293 0.6133 0.4000 0.4627 1.2141 0.7514 0.6000 0.7293 1.6489 0.9196 0.8000 1.0026 2.1272 1.1247 1.0000 1.2663 2.6409 1.3745 1.2000 1.5009 3.1799 1.6790 1.4000 1.6823 3.7324 2.0501 1.6000 1.7812 4.2835 2.5022 1.8000 1.7619 4.8152 3.0533 2.0000 1.5807 5.3055 3.7247 4.5.3 Phƣơng pháp Runge−Kutta cấp a) Thuật toán Bƣớc 1: Tạo hàm fcn=f(x,y) Bƣớc 2: Nhập x0, y0, h, xmax Bƣớc 3: N=fix((xmax-x0)/h)+1; Bƣớc 4: x=linspace(x0,xmax,N); % Chia [x0, xmax] thành N điểm Bƣớc 5: y=zeros(N,1); y(1)=y0; i=2; Bƣớc 6: Nếu i>N then Đƣa x, y, Y, err; kết thúc Bƣớc 7: k1=h*feval(fcn,x(i-1),y(i-1)); Bƣớc 8: k2= h*feval(fcn,x(i-1)+h/2,y(i-1)+k1/2); Bƣớc 9: k3= h*feval(fcn,x(i-1)+h/2,y(i-1)+k2/2); Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 119 Luận văn thạc sỹ Toán–Tin ứng dụng Bƣớc 10: k4= h*feval(fcn,x(i-1)+h,y(i-1)+k3); Bƣớc 11: y(i)=y(i-1) + (k1+2*k2+2*k3+k4)/6; Bƣớc 12: i=i+1; Quay lại Bƣớc b) Chƣơng trình Matlab Tạo file fcn.m; Tạo hàm fcn(x,y) function a=fcn(x,y) a=inline(„y-x^2+1‟); end Tạo file rk4.m function [x,y,Y,err]=rk4(fcn,x0,y0,h,xmax1) N=fix((xmax1-x0)/h)+1; x=linspace(x0,xmax1,N); y=zeros(N,1); y(1)=y0; for i=2:N k1=h*feval(fcn,x(i-1),y(i-1)); k2=h*feval(fcn,x(i-1)+h/2,y(i-1)+k1/2); k3=h*feval(fcn,x(i-1)+h/2,y(i-1)+k2/2); k4=h*feval(fcn,x(i-1)+h,y(i-1)+k3); y(i)=y(i-1)+(k1+2*k2+2*k3+k4)/6; end end Tạo file cteuler.m để chạy chƣơng trình x0=0; y0=0.5; h=0.2; xmax=2; [x,y,Y,err]= rk4(fcn,x0,y0,h,xmax) Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 120 Luận văn thạc sỹ Toán–Tin ứng dụng c) Kết thực xn yn Yn err 0.5000 0.5000 0.2500 0.8293 0.9205 0.0912 0.5000 1.2070 1.4256 0.2187 0.7500 1.6160 2.0040 0.3880 1.0000 2.0358 2.6409 0.6051 1.2500 2.4409 3.3173 0.8765 1.5000 2.8004 4.0092 1.2087 1.7500 3.0767 4.6852 1.6085 2.0000 3.2235 5.3055 2.0819 Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 121 Luận văn thạc sỹ Toán–Tin ứng dụng KẾT LUẬN Trong luận văn này, trình bày vấn đề Giải thích số phƣơng pháp tính Trong chƣơng, mục trình bày chƣơng trình Matlab để giải số toán Các chƣơng trình Matlab đƣợc viết dạng mở, có nghĩa ngƣời dùng sử dụng, lựa chọn bổ sung phƣơng trình để giải hay chọn hàm để tính cho phú hợp với yêu cầu thực tế Nhƣ với luận văn này, đƣợc kết hợp để đƣa vào giảng dạy môn học Giải tích số hay Phƣơng pháp tính trƣờng Đại học giúp cho môn học trở nên sinh động hiệu nhiều so với cách giảng dạy truyền thống Bởi lẽ ngƣời học thực hành để kiểm tra cụ thể vấn đề vừa học cách trực tiếp Matlab dựa sở chƣơng trình Matlab trình bày luận văn Ngoài từ chƣơng trình Matlab chúng tôi, nhƣ nói ngƣời học lựa chọn bổ sung phƣơng trình để giải hay chọn hàm để tính cho phù hợp với yêu cầu cụ thể toán, dựa vào để lập chƣơng trình Matlab tƣơng tự để giải toán theo ý riêng Điều giúp nâng cao đƣợc hiệu giảng dạy cho môn học, phát huy tính tự học, tính ứng dụng phát triển tƣ học sinh, sinh viên; đáp ứng nhu cầu Bộ Giáo Dục – Đào Tạo việc ứng dụng công nghệ thông tin vào giảng dạy trƣờng học nâng cao lực dạy học toán trƣờng Đại học Qua luận văn này, thực bắt đầu làm quen với công việc nghiên cứu khoa học Nhờ dẫn tận tình cô Nguyễn Thị Thanh Huyền nên hệ thống lại đƣợc vấn đề môn Phƣơng pháp tính, tiếp cận đƣợc kiến thức Matlab lập trình Matlab, tự điều chỉnh, bổ sung để chƣơng trình Matlab phù hợp với cấu trúc mục tiêu luận văn; thấy đƣợc tác dụng tích cực việc ứng dụng công nghệ thông tin vào học tập giảng dạy Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 122 Luận văn thạc sỹ Toán–Tin ứng dụng TÀI LIỆU THAM KHẢO Tạ Văn Đĩnh, Phương pháp tính, NXB GD, 1998 Lê Trọng Vinh, Giải tích số, NXB GD, 2001 Dƣơng Thuỷ Vỹ, Phương pháp tính, NXB KH & KT, 1999 Nguyễn Hoàng Hải, Nguyễn Việt Anh, Lập trình Matlab ứng dụng, NXB Khoa học kỹ thuật năm 2006 Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang 123 ... vẽ đồ thị để hiển thị kết kiểm Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực hiện: Nguyễn Kiếm Anh Trang Luận văn thạc sỹ Toán–Tin ứng dụng tra kết quả,... ngữ lập trình Matlab để xây dựng phần mềm trợ giúp giải toán giải tích số nhằm nâng cao hiệu giảng dạy học tập môn học Nhiệm vụ phạm vi nghiên cứu - Tìm hiểu phần mềm toán học Matlab - Nghiên... hiển thị khởi động Matlab Bằng cách đánh dấu lệnh „demo‟ ta tiếp cận với tập nhiều file trình diễn giá trị cao Đề tài: Dùng Matlab để thiết kế phần mềm trợ giúp giảng dạy học tập Họ tên ngƣời thực

Ngày đăng: 15/07/2017, 23:16

Từ khóa liên quan

Mục lục

  • muc luc

  • mo dau

  • chuong 1

  • chuong 2

  • chuong 3

  • chuong 4

  • ket luan

  • tai lieu tham khao

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan