Skip to main content

[Matlab] Giải phương trình bằng phương pháp chia đôi

Tớ sẽ không code cụ thể ở đây vì không có matlab để test. Chỉ viết lịa nhưng gì hôm nay đã học cho khỏi quên.

1. Symbolic math toolbox:
Symbolic object là đối tượng hình thức (nghĩa là viết bằng chữ - chưa thay số). Ứng dụng của symbolic trong bài này là điểm mấu chốt.
Qua ví dụ này ta cũng hiểu được 1 phần khái niệm functional programming paradism (mô hình lập trình hàm) khi ta dùng 1 hàm làm đối của hàm khác (mặc dù hàm trong trường hợp này mang tính hình thức).


khai báo biến symbolic:
syms x



gán "hàm" : fx giờ cũng là 1 đối tượng symbolic
fx = x*x + 5*x + 6


"thay" giá trị vào x để tính fx:
subs(fx,1)
kết quả trả về 12.

2. Bài tóan giải phương trình bằng phương pháp chia đôi:

Ta sẽ phải viết hàm phuongPhapChiaDoi() gồm các đầu vào:
- sai số
- cận a
- cận b
- hàm f - bởi bài tóan yêu cầu giải phương trình nhưng ko cho phương trình cụ thể. Thế nên bắt buộc hàm phuongPhapChiaDoi phải nhận 1 đối là hàm tóan học - vế trái của phương trình (vế phải mặc định bằng 0). Như vậy, hàm của ta rất "đa năng" - giải được nhiều phương trình khác nhau chứ ko phải 1 kiểu ptr bậc 2, bậc 3 gì đây. Đố ai viết được chương trình  C giải quyết được vấn đề này :D

vậy hàm đầy đủ của ta lúc khai báo là:
function nghiem1 = phuongPhapChiaDoi(f, saiso, cana, canb)
%tạm thời tớ chưa nghĩ ra cách tìm tất cả các nghiệm. Bởi để giải quyết triệt để, ta phải xác định bậc của hàm đầu vào để biết số nghiệm tối đa ở đầu ra. Ví dụ này chỉ tìm 1 nghiệm trong khỏang cho trước.

xong phần vấn đề kỹ thuật, phần còn lại đơn giản vài vòng lặp, if - else khong có vấn đề gì :D

Code: http://pastebin.com/hTce1v3i

Comments

  1. Vớ va vớ vẩn, matlab thì cũng xây dựng từ C, lại bảo C không giải pt đc mới sợ chứ.
    Muốn tìm hết các nghiệm thì phải xác định được tất cả các khoảng phân li rồi tìm nghiệm cho mỗi khoảng, còn xác định thế nào thì chả biết.

    ReplyDelete
  2. không có chữ nào ở đây ghi là không giải được cả!

    ReplyDelete
  3. "Đố ai" là đố những ai?

    ReplyDelete
  4. ai đọc bài này thì đố. ai làm được thì show hàng :))

    Nếu bảo không làm được lại giống bảo C không ltrình HĐT được à. Về nguyên tắc là được, nhưng chỉ những người có khả năng viết code tốt hơn và tối ưu hơn những người đã làm nên C++ mới làm những điều đó (VD to đùng là Linus Torvard). http://stackoverflow.com/questions/351733/can-you-write-object-oriented-code-in-c

    Cụ thể trong trường hợp này là ko nhiều người có thể viết cái thư viện/hàm thực hiện cơ chế đấy bằng C...

    ReplyDelete
  5. This comment has been removed by the author.

    ReplyDelete
  6. cái này là đề tài thực tập của nhóm mình mà :D

    Nói chung là bạn Hưng post lên để mọi người không quên bài thôi , chứ cần chú ý đến một chút đến câu cú trong matlab là làm được thôi mà !

    ReplyDelete
  7. cho tớ bổ sung chút nhá :D
    còn có 2 cách khởi tạo hàm f trong matlap nữa ( hôm trc cô dạy tớ thế )
    1. f = @ (x) x*x +5*x +6
    thay vào tính : fa = feval(f,a)
    2. f = inline (' x*x + 5*x +6)
    thay vào tính: f(a)
    tớ hiểu thế nào viết như vậy, có gì sai mọi người sửa giúp nhé !

    ReplyDelete
  8. sửa chút :
    2. f = inline('x*x +5*x +6')
    < thiếu 1 dấu nháy đơn> :D

    ReplyDelete
  9. các bạn có thể code chi tiết bài này được ko ?
    hoặc có thể gửi file code.m lên đây cũng được. thanks nhìu

    ReplyDelete
  10. okie, mai sẽ có code cho bạn :D

    ReplyDelete
  11. http://pastebin.com/hTce1v3i code chạy trên matlab, cô đã duyệt :))

    ReplyDelete
  12. thấy bài này rất nhiều view nhưng ko thấy comment, bạn nào đọc xong thấy code cần sửa cứ đưa lên, mình sẽ thay đổi cho phù hợp hơn

    ReplyDelete
    Replies
    1. mà xem view ở đâu thế, không để ý :D

      Delete
  13. ass min mới xem được

    ReplyDelete
  14. nó có lên top bên popular post ấy -> lên top = view nhiều

    ReplyDelete

Post a Comment

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG