Hướng dẫn lập trình ngôn ngữ python
(Cho học phần Toán cao cấp)
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 cao cấp.
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. Giải hệ phương trình tuyến tính
Chủ đề 4. Dạng toàn phương
Chủ đề 5. Vẽ đồ thị của hàm số
Chủ đề 6. Tìm giới hạn
Chủ đề 7. Tính đạo hàm
Chủ đề 8. Tìm giá trị lớn nhất – nhỏ nhất
Chủ đề 9. Tính tích phân hàm một biến
Chủ đề 10. Phương trình vi phân
Chủ đề 11. Phương trình sai phân
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 cao cấp |
thầy ơi pt sai phân x(n+1) -(9^n)*x(n)=3^(n^2+2n) em viết là x[n] = math.pow(9,n-1)*x[n-1] + math.pow(3,(n-1)**2 + 2*(n-1)) thì hiện lỗi như sau:Traceback (most recent call last):
File “D:/toancaocap/main.py”, line 8, in
x[n] = math.pow(9,n-1)*x[n-1] + math.pow(3,(n-1)**2 + 2*(n-1))
OverflowError: Python int too large to convert to C long
Không biết em sai chỗ nào ạ? Em cảm ơn thầy
Số to quá khá năng tính toán của python, bạn chỉ cần copy câu lệnh và thông báo lỗi vào bài làm là đc.
Tôi đã chỉnh sửa lại tài liệu, bạn download lại và làm theo hướng dẫn mới nhé.
Em thưa thầy, đạo hàm riêng cấp 1 x^(y^3) import sympy
import numpy as np
x, y = sympy.symbols(‘x y’,real=True)
np.seterr(invalid=’ignore’)
z = x**(y**3)
z_x = sympy.diff(z, x)
z_x = sympy.lambdify((x, y), z_x)
print(z_x(7, 16))
lỗi: Traceback (most recent call last):
File “D:\toancaocap\main.py”, line 8, in
print(z_x(7, 16))
File “”, line 2, in _lambdifygenerated
OverflowError: integer division result too large for a float
Em tính mấy bài đạo hàm đều bị lỗi như này ạ, thầy xem giúp em với ạ
Số to quá khá năng tính toán của python, bạn chỉ cần copy câu lệnh và thông báo lỗi vào bài làm là đc.
thưa thầy, em tìm giới hạn của các hàm logarit dạng log(a+bx) bị lỗi ạ,
thầy cho em xin cách khắc phục ạ,
em cảm ơn!
Câu lệnh đầy đủ và thông báo lỗi là gì.
Thầy ơi cho con hỏi NV4 có bị nhầm bài tập không ạ?
Nhầm như thế nào nhỉ?
Dạ ở NV4 tìm DTP thì con nghĩ là bài 4.3 và 4.4 ạ . Trong đề là bài 5.3 5.4 ạ
Đúng rồi, tôi nhầm nhé. Bài 4.3 và 4.4.
thầy ơi căn bậc ba thì lũy thừa thì âm numpy không hỗ trợ
em thay y = x*((1 – 2*x)**(2/3) thành y = x*((1 – 2*x)**pow(2, 3)) có đúng không ạ
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.arange(3, 13, 0.05)
y = x*((1 – 2*x)**pow(2, 3))
plt.plot(x,y)
plt.xlabel(“Truc x”)
plt.ylabel(“Truc y”)
plt.title(‘Toan cao cap’)
plt.show()
à em nhầm như kia là sai
thầy ơi căn bậc ba thì lũy thừa thì âm numpy không hỗ trợ
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x =np.arange(3, 13, 0.05)
y = x*((1-2*x)**(2/3))
plt.plot(x,y)
plt.xlabel(“Truc x”)
plt.ylabel(“Truc y”)
plt.title(‘Toan cao cap’)
plt.show()
lỗi RuntimeWarning: invalid value encountered in power ạ
à em nhầm như kia là sai
thưa thầy.nv1 bài 1.8 tính định thức và ma trận nghịch đảo
import numpy as np
_A = ([3,4,2],[6,8,4],[9,12,1])
A = np.array(_A)
print(np.linalg.inv(A))
run được : Traceback (most recent call last):
File “D:\toancaocap\venv\main.py”, line 28, in
print(np.linalg.inv(A))
File “”, line 5, in inv
File “C:\Users\LAPTOP DELL\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\linalg\linalg.py”, line 545, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
File “C:\Users\LAPTOP DELL\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\linalg\linalg.py”, line 88, in _raise_linalgerror_singular
raise LinAlgError(“Singular matrix”)
numpy.linalg.LinAlgError: Singular matrix
Process finished with exit code 1.
Vậy có nghĩa là đây là ma trận suy biến, không có nghịch đảo đúng không ạ? Em làm theo công thức thầy hướng dẫn rồi ạ
Đúng rồi.
thầy ơi cho em hỏi là căn bậc ba thì vị lỗi lũy thừa âm numpy không nhận thì phải làm sao ạ
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x =np.arange(3, 13, 0.05)
y = x*((1-2*x)**(2/3))
plt.plot(x,y)
plt.xlabel(“Truc x”)
plt.ylabel(“Truc y”)
plt.title(‘Toan cao cap’)
plt.show()
lỗi RuntimeWarning: invalid value encountered in power ạ
thầy ơi cho em hỏi là căn bậc ba thì vị lỗi lũy thừa âm numpy không nhận thì phải làm sao ạ
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x =np.arange(3, 13, 0.05)
y = x*((1-2*x)**(2/3))
plt.plot(x,y)
plt.xlabel(“Truc x”)
plt.ylabel(“Truc y”)
plt.title(‘Toan cao cap’)
plt.show()
lỗi RuntimeWarning: invalid value encountered in power ạ
Cần phải cho mũ 2 vào trong, mũ 1/3 ra ngoài:
——>y = x*((1-2*x)**(2))**(1/3)
thầy ơi, ở nhiệm vụ 4 thầy cho sai bài tập hay sao ý ạ (không phải bai 5.3 5.4 mà là 4.3 4.4 ạ)
Uh, tôi nhầm chút, là 4.3 4.4 nhé.
thầy ơi , nv3 là giai hẹ PTTT cu bài 3.4 3.6 3.9 mà 3 bài thầy cho m=k=numpy=10 rồi thì tìm gì nữa ạ ?
Tìm nghiệm. Sao bạn hỏi ngộ thế 🙂
à em đọc sai đề nhưng bài 3.9 ạ em chạy mãi không được mà em xem đi xem lại nhiều lần rồi ạ
Nếu câu của e là câu hỏi, thì e cần post câu lệnh & thông báo lỗi.
Thầy ơi cho con hỏi là tính đạo hàm khác với hướng dẫn nhưng vẫn ra kết quả đúng như này có được không ạ
import numpy as np
from sympy import *
x = Symbol(‘x’)
y = x**(2/3) – 2/sqrt(x)
y1 = y.diff(x)
y1 = lambdify(x, y1)
print(y1(11))
⇨ 0.32717299758274865
Kết quả đúng là ok rồi.
em thưa thầy tính đạo hàm riêng cấp 1 của câu 1 bài 7.2 e có nhập như này
x, y = sympy.symbols(‘x y’,real=True)
z = Fraction(x**3 + y**3, x**2 + y**2)
z_x = sympy.diff(z, x)
z_x = sympy.lambdify( (x,y), z_x)
print(z_x(6,14))
và nó bảo lỗi ở dòng 1 ko xác định được sympy. Thầy xem giúp em với ạ. Em cảm ơn thầy ạ.
Em cần đọc kỹ hương dẫn, cần phải install sympy trước