Tôi chỉ đang thử nghiệm một ví dụ từ các phương pháp số trong kỹ thuật với Python.
from numpy import zeros, array
from math import sin, log
from newtonRaphson2 import *
def f[x]:
f = zeros[len[x]]
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
f[1] = 3.0*x[0] + 2.0**x[1] - x[2]**3 + 1.0
f[2] = x[0] + x[1] + x[2] -5.0
return f
x = array[[1.0, 1.0, 1.0]]
print newtonRaphson2[f,x]
Khi tôi chạy nó, nó hiển thị lỗi sau:
File "example NR2method.py", line 8, in f
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
ValueError: math domain error
Tôi đã thu hẹp nó xuống nhật ký như khi tôi xóa nhật ký và thêm một chức năng khác, nó hoạt động. Tôi cho rằng đó là do một số loại can thiệp vào cơ sở, tôi không thể tìm ra cách. Bất cứ ai có thể đề xuất một giải pháp?
Bạn có thể gặp phải một
ValueError: math domain error0 đặc biệt khi làm việc với mô -đun Python từ
ValueError: math domain error1.
ValueError: math domain error
Python nêu ra lỗi này khi bạn cố gắng làm điều gì đó không thể toán học hoặc được định nghĩa về mặt toán học.
Để hiểu lỗi này, hãy xem định nghĩa của miền:domain:
Phần mềm của một hàm là tập hợp các giá trị có thể có của biến độc lập. Nói một cách đại khái, miền là tập hợp tất cả các giá trị x [đầu vào] có thể dẫn đến giá trị y hợp lệ [đầu ra]. [nguồn]domain of a function is the complete set of possible values of the independent variable. Roughly speaking, the domain is the set of all possible [input] x-values which result in a valid [output] y-value.” [source]
Miền của hàm là tập hợp tất cả các giá trị đầu vào có thể. Nếu Python ném
ValueError: math domain error2, bạn đã chuyển một đầu vào không xác định vào hàm
ValueError: math domain error1. Khắc phục lỗi bằng cách chuyển một đầu vào hợp lệ mà hàm có thể tính toán đầu ra số.
Đây là vài ví dụ:
Lỗi miền toán học xuất hiện nếu bạn chuyển một đối số tiêu cực vào hàm
ValueError: math domain error4. Về mặt toán học, không thể tính toán căn bậc hai của số âm mà không sử dụng các số phức. Python không nhận được điều đó và ném một
ValueError: math domain error2.
Ở đây, một ví dụ tối thiểu:
from math import sqrt print[sqrt[-1]] ''' Traceback [most recent call last]: File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in print[sqrt[-1]] ValueError: math domain error '''
Bạn có thể sửa lỗi miền Math bằng cách sử dụng gói
ValueError: math domain error6 cho phép tạo các số phức:
from cmath import sqrt print[sqrt[-1]] # 1j
Nhật ký lỗi miền toán học Python
ValueError: math domain error7 cho hàm
ValueError: math domain error8 xuất hiện nếu bạn chuyển giá trị bằng không vào nó, logarit không được xác định cho giá trị 0.
Ở đây, mã trên giá trị đầu vào bên ngoài miền của hàm logarit:
from math import log print[log[0]]
Đầu ra là lỗi miền toán học:
Traceback [most recent call last]: File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 3, in print[log[0]] ValueError: math domain error
Bạn có thể sửa lỗi này bằng cách chuyển giá trị đầu vào hợp lệ vào hàm
ValueError: math domain error8:
from math import log print[log[0.000001]] # -13.815510557964274
Lỗi này đôi khi có thể xuất hiện nếu bạn chuyển một số rất nhỏ vào nó, kiểu nổi của Py Python không thể diễn đạt tất cả các số. Để vượt qua một giá trị gần với 0, hãy sử dụng mô -đun
from math import sqrt print[sqrt[-1]] ''' Traceback [most recent call last]: File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in print[sqrt[-1]] ValueError: math domain error '''0 với độ chính xác cao hơn hoặc chuyển một đối số đầu vào rất nhỏ, chẳng hạn như:
math.log[sys.float_info.min]
ACOS Lỗi miền Math Python
ValueError: math domain error7 cho hàm
from math import sqrt print[sqrt[-1]] ''' Traceback [most recent call last]: File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in print[sqrt[-1]] ValueError: math domain error '''2 xuất hiện nếu bạn chuyển một giá trị vào nó mà nó không được xác định là các arccos chỉ được xác định cho các giá trị giữa -1 và 1.
Đây là mã sai:
import math print[math.acos[2]]
Đầu ra là lỗi miền toán học:
File "example NR2method.py", line 8, in f
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
ValueError: math domain error
0Bạn có thể sửa lỗi này bằng cách chuyển giá trị đầu vào hợp lệ vào hàm
ValueError: math domain error8:
File "example NR2method.py", line 8, in f
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
ValueError: math domain error
1Lỗi này đôi khi có thể xuất hiện nếu bạn chuyển một số rất nhỏ vào nó, kiểu nổi của Py Python không thể diễn đạt tất cả các số. Để vượt qua một giá trị gần với 0, hãy sử dụng mô -đun from math import sqrt
print[sqrt[-1]]
'''
Traceback [most recent call last]:
File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in
print[sqrt[-1]]
ValueError: math domain error
'''
0 với độ chính xác cao hơn hoặc chuyển một đối số đầu vào rất nhỏ, chẳng hạn như:
ACOS Lỗi miền Math Python
ValueError: math domain error7 cho hàm
from math import sqrt print[sqrt[-1]] ''' Traceback [most recent call last]: File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in print[sqrt[-1]] ValueError: math domain error '''2 xuất hiện nếu bạn chuyển một giá trị vào nó mà nó không được xác định là các arccos chỉ được xác định cho các giá trị giữa -1 và 1.
File "example NR2method.py", line 8, in f
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
ValueError: math domain error
2Đầu ra là lỗi miền toán học:
File "example NR2method.py", line 8, in f
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
ValueError: math domain error
3Bạn có thể sửa lỗi này bằng cách chuyển giá trị đầu vào hợp lệ vào hàm
ValueError: math domain error8:
File "example NR2method.py", line 8, in f
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
ValueError: math domain error
4Lỗi này đôi khi có thể xuất hiện nếu bạn chuyển một số rất nhỏ vào nó, kiểu nổi của Py Python không thể diễn đạt tất cả các số. Để vượt qua một giá trị gần với 0, hãy sử dụng mô -đun from math import sqrt
print[sqrt[-1]]
'''
Traceback [most recent call last]:
File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in
print[sqrt[-1]]
ValueError: math domain error
'''
0 với độ chính xác cao hơn hoặc chuyển một đối số đầu vào rất nhỏ, chẳng hạn như:
ACOS Lỗi miền Math Python
File "example NR2method.py", line 8, in f
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
ValueError: math domain error
5Đầu ra là lỗi miền toán học:
File "example NR2method.py", line 8, in f
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
ValueError: math domain error
6Bạn có thể sửa lỗi này bằng cách chuyển giá trị đầu vào hợp lệ vào hàm
ValueError: math domain error8:
File "example NR2method.py", line 8, in f
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
ValueError: math domain error
7Lỗi này đôi khi có thể xuất hiện nếu bạn chuyển một số rất nhỏ vào nó, kiểu nổi của Py Python không thể diễn đạt tất cả các số. Để vượt qua một giá trị gần với 0, hãy sử dụng mô -đun
from math import sqrt print[sqrt[-1]] ''' Traceback [most recent call last]: File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in print[sqrt[-1]] ValueError: math domain error '''0 với độ chính xác cao hơn hoặc chuyển một đối số đầu vào rất nhỏ, chẳng hạn như:
ACOS Lỗi miền Math Python
ValueError: math domain error7 cho hàm
from math import sqrt print[sqrt[-1]] ''' Traceback [most recent call last]: File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in print[sqrt[-1]] ValueError: math domain error '''2 xuất hiện nếu bạn chuyển một giá trị vào nó mà nó không được xác định là các arccos chỉ được xác định cho các giá trị giữa -1 và 1.
This is the graph of
from math import sqrt print[sqrt[-1]] ''' Traceback [most recent call last]: File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in print[sqrt[-1]] ValueError: math domain error '''9. Don’t worry if you don’t understand the code, what’s more important is the following point. You can see that log[x] tends to negative infinity as x tends to 0. Thus, it is mathematically meaningless to calculate the log of a negative number. If you try to do so, Python raises a math domain error.
File "example NR2method.py", line 8, in f
f[0] = sin[x[0]] + x[1]**2 + log[x[2]] - 7.0
ValueError: math domain error
9Đây là mã sai:
Bạn có thể sửa lỗi này bằng cách chuyển giá trị đầu vào hợp lệ giữa [-1,1] vào hàm
from math import sqrt print[sqrt[-1]] ''' Traceback [most recent call last]: File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in print[sqrt[-1]] ValueError: math domain error '''2:
Lỗi tên miền Python Math
ValueError: math domain error7 cho hàm
from math import sqrt print[sqrt[-1]] ''' Traceback [most recent call last]: File "C:\Users\xcent\Desktop\Finxter\Blog\code.py", line 2, in print[sqrt[-1]] ValueError: math domain error '''5 xuất hiện nếu bạn chuyển một giá trị vào nó mà nó không được xác định là arcsin chỉ được xác định cho các giá trị giữa -1 và 1.
Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế!
Bạn có muốn ngừng học hỏi với các dự án đồ chơi và tập trung vào các dự án mã thực tế kiếm tiền cho bạn và giải quyết các vấn đề thực sự cho mọi người?
Nếu câu trả lời của bạn là có !, Hãy xem xét việc trở thành một nhà phát triển tự do Python! Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện các kỹ năng trăn của bạn, ngay cả khi bạn là người mới bắt đầu hoàn toàn.YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.
Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi Làm thế nào để xây dựng kỹ năng thu nhập cao của bạn Python và tìm hiểu cách tôi phát triển kinh doanh mã hóa của mình trực tuyến và làm thế nào bạn có thể, từ sự thoải mái của bạn riêng nhà.
Tham gia hội thảo trên web miễn phí ngay bây giờ!
Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.
Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer [Nostarch 2020], đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.
Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.