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.
Filed under: *Ngôn ngữ lập trình Python, HP Toán đại cương |
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ẽ ạ
Cái ý có tham số a thì bỏ nhé.
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
Em cảm ơn thầy nhiều ạ😊😁😄
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!
Chữ màu xám thì ko sao cả.
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 ạ
1.1191048088221598e-13 ~ 0, bạn chọn kq là định thức = 0
dạ em cảm ơn thầy ạ
em thưa thầy nếu như định thức xấp xỉ bằng 0 thì có kết luận luôn được rằng không có ma trận nghịch đảo không ạ
Được.
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 ạ
Lỗi tập xác định.
em cảm ơn ạ
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 ạ.
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ạn thử đọc cái này xem có hiểu ko: https://stackoverflow.com/questions/37496299/python-invalid-value-encountered-in-log