Hướng dẫn lập trình ngôn ngữ python: Toán đại cương

Hướng dẫn lập trình ngôn ngữ python

(Cho học phần Toán đại cương)

Tài liệu ngắn này chúng tôi viết dựa theo một số tài liệu trên internet nhằm giúp các bạn sinh viên làm quen với việc sử dụng một ngôn ngữ lập trình để giải các bài toán của học phần Toán đại cương.

MỤC LỤC

Chủ đề 0. Hello World

Chủ đề 1. Tính toán trên trường số thực

Chủ đề 2. Vectơ, ma trận và định thức

Chủ đề 3. Hệ phương trình tuyến tính

Chủ đề 4. Đồ thị của hàm số

Chủ đề 5. Đạo hàm

Chủ đề 6. Giá trị nhỏ nhất – lớn nhất

Chủ đề 7. Các tham số đặc trưng

Phụ lục: Download, cài đặt và chạy “Hello World”

Tài liệu:

Lưu ý:

0. Các bạn SV làm Bài tập nhóm đặt câu hỏi ở phần comment

1. Các bạn SV gặp vấn đề thì chịu khó tìm câu trả lời ở phần comment. Tôi sẽ KHÔNG trả lời những câu hỏi mà đã trả lời trước ở phần comment.

2. Tôi không giải đáp hộ các bạn những lỗi kỹ thuật (những lỗi do bạn gõ lệnh sai). Tôi chỉ giải đáp những vấn đề mang tính nguyên lý. Nhóm làm không được thì không có điểm.

3. Để làm được, các bạn cần đọc kỹ + chạy thử các VD trong Tài liệu hướng dẫn, kiểm tra kỹ câu lệnh mình viết có đúng như hướng dẫn không.

4. Nếu gặp lỗi, xem kỹ xem có phải lỗi do TXĐ (hàm số không xác định). Nếu là lỗi do TXĐ thì chỉ cần copy câu lệnh + giải thích vì sao hàm số không xác định.

5. Khi các bạn đặt câu hỏi, phải copy đầy đủ các câu lệnh & thông báo lỗi thì tôi mới giải đáp được.

18 bình luận

  1. thưa thầy bài 7.3 ý 4 ạ bài vẽ đồ thị mà bài đó có 3 biến x, y, a mà trong hướng dẫn không có cách vẽ ạ

  2. Em chào thầy ạ! Em nhận làm phần nhiệm vụ tìm GTLN và GTNN của hàm số trong phần bài thảo luận nhóm. Nhưng mà có một phần mà em chạy python bị lỗi mà em không biết phải làm sao.
    Tìm giá trị Min và Max của hàm số : z = x + y – x.e^y ( là phương trình số 3 trong bài 7.9)

    Em chạy chương trình python như sau:
    Tìm min:
    from scipy.optimize import fmin

    import math

    def f(x,y): return x+y-x*(math.exp(y))

    min_loc = fmin(lambda vec: f(vec[0],

    vec[1]), [0.1, 0.1])

    print(min_loc)

    print(f(*min_loc))

    Kết quả:

    Warning: Maximum number of function evaluations has been exceeded.

    [ 6.06862353e+42 -7.19824113e+42]

    -1.129617599894613e+42

    Em ko hiểu tại sao em chạy hàm Min mà kết quả lại ra Maximum thầy ạ =(((
    Rồi đến lúc em chạy hàm Max thì nó không ra kết quả luôn ạ
    Tìm max:

    from scipy.optimize import fmin

    import math

    def f(x,y): return -(x+y-x*(math.exp(y)))

    min_loc = fmin(lambda vec: f(vec[0],

    vec[1]), [0.1, 0.1])

    print(min_loc)

    print(-f(*min_loc))

    Kết quả :
    D:\toandaicuong\venv\Scripts\python.exe D:/toandaicuong/main.py
    D:\toandaicuong\main.py:5: RuntimeWarning: overflow encountered in double_scalars
    def f(x,y): return -(x+y-x*(math.exp(y)))
    Traceback (most recent call last):
    File “D:\toandaicuong\main.py”, line 7, in
    min_loc = fmin(lambda vec: f(vec[0],
    File “D:\toandaicuong\venv\lib\site-packages\scipy\optimize\_optimize.py”, line 622, in fmin
    res = _minimize_neldermead(func, x0, args, callback=callback, **opts)
    File “D:\toandaicuong\venv\lib\site-packages\scipy\optimize\_optimize.py”, line 818, in _minimize_neldermead
    fxr = func(xr)
    File “D:\toandaicuong\venv\lib\site-packages\scipy\optimize\_optimize.py”, line 496, in function_wrapper
    fx = function(np.copy(x), *(wrapper_args + args))
    File “D:\toandaicuong\main.py”, line 7, in
    min_loc = fmin(lambda vec: f(vec[0],
    File “D:\toandaicuong\main.py”, line 5, in f
    def f(x,y): return -(x+y-x*(math.exp(y)))
    OverflowError: math range error

    Em rất mong nhận được sự giúp đỡ của thầy
    Em xin chân thành cảm ơn thầy rất nhiều ạ!

    • ————-1.
      Kết quả:

      Warning: Maximum number of function evaluations has been exceeded.

      [ 6.06862353e+42 -7.19824113e+42]

      -1.129617599894613e+42

      Em ko hiểu tại sao em chạy hàm Min mà kết quả lại ra Maximum thầy ạ =(((
      —> Thế này là OK nhé, nó ra giá trị Min đấy, còn cái Warning không quan trọng.
      ————-2.
      OverflowError: math range error
      Cái này do giá trị quá lớn, ko phải lỗi của em. Em copy thông báo lỗi vào bài làm là OK

  3. Em thưa thầy,
    Em được giao làm bài vẽ đồ thị hàm số. Khi em nhập đoạn:

    import numpy as np
    from matplotlib import pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D

    Toàn bộ phần bên trên đều bị chữ màu xám. Không biết liệu em có sai ở bước nào không ạ Thầy?
    Mong nhận được sự chỉ bảo của Thầy ạ.
    Em cảm ơn Thầy nhiều!

  4. Em thưa thầy, em được giao làm phần tính định thức và ma trận nghịch đảo. Ở bài 1.8.2 khi em nhập :
    import numpy as np
    B = np.array([[1, 2, 1, 1],[2, 3, 2, 6],[-63, -1, 0, 11],[1, 1, 1, 5]])
    print(np.linalg.det (B))

    thì được kết quả định thức = -1.1191048088221598e-13
    nhưng khi kiểm tra kết quả ở bên ngoài thì em thấy kết quả = 0.
    Vì định thức = 0 không có ma trận nghịch đảo và kết quả từ python có ma trận nghịch đảo nên thưa thầy em nên chọn kết quả nào ạ ?
    Rất mong thầy giúp đỡ ạ. Em cảm ơn thầy rất nhiều ạ

  5. Em thưa thầy, em được giao làm nhiệm vụ 6 bài 6.10.5 tìm GTNN, GTLN của hàm số y = e^x/(x+1)
    em làm như sau:
    GTNN:
    import math
    from scipy.optimize import fmin
    def f(x):return (math.exp(x))/(x+1)
    min_loc = fmin(f, -1.9)
    print(min_loc)
    print(f(*min_loc))

    Kết quả
    RuntimeWarning: divide by zero encountered in true_divide
    def f(x):return math.exp(x)/(x+1)
    Warning: Maximum number of function evaluations has been exceeded.
    [-1.]
    -1656781714176973.5

    Process finished with exit code 0

    Cho em hỏi tại dòng RuntimeWarning là như nào ạ?
    Mong thầy giải đáp cho em. Em cảm ơn ạ

  6. Em thưa thầy, em được giao làm nhiệm vụ 5 bài 6.1 tính đạo hàm của hàm số y= e^x * ln(sinx)
    Em nhập câu lệnh như sau:
    import sympy
    x = sympy.Symbol(‘x’)
    y = sympy.exp(x)*sympy.log(sympy.sin(x))
    y1 = y.diff(x)
    y1 = sympy.lambdify(x, y1)
    print(y1(6))
    Kết quả là::2: RuntimeWarning: invalid value encountered in log
    return exp(x)*log(sin(x)) + exp(x)*cos(x)/sin(x)
    Cho em hỏi là đây có phải là lỗi tập xác định không ạ?
    Mong được thầy giải đáp. Em cảm ơn thầy nhiều ạ.

  7. Em thưa thầy, em được giao làm nhiệm vụ 5 bài 6.1 tính đạo hàm hàm số: e^x * ln(sin(x)) tại x = 6
    Em nhập câu lệnh như sau:
    import numpy as np
    from sympy import *
    import math
    x = Symbol(‘x’)
    y = exp(x)*log(sin(x))
    y1 = y.diff(x)
    y1 = lambdify(x, y1)
    print(y1(4))
    Kết quả: :2: RuntimeWarning: invalid value encountered in log
    return exp(x)*log(sin(x)) + exp(x)*cos(x)/sin(x)
    Thầy cho em hỏi là em có làm sai bước nào không ạ, và đây có phải lỗi TXĐ không ạ?
    Mong được thầy giải đáp. Em cảm ơn thầy ạ.

Bình luận về bài viết này