Hướng dẫn is there an inverse function in python? - có một chức năng nghịch đảo trong python không?

Có thư viện nào có sẵn để có nghịch đảo của một chức năng không? Để cụ thể hơn, được đưa ra một hàm

>>> from pynverse import inversefunc
2 và tên miền, có thư viện nào có thể xuất ra
>>> from pynverse import inversefunc
3 không? Đáng buồn thay, tôi không thể sử dụng MATLAB/Toán học trong ứng dụng của mình, tìm kiếm thư viện C/Python ..

Hướng dẫn is there an inverse function in python? - có một chức năng nghịch đảo trong python không?

Đã hỏi ngày 4 tháng 3 năm 2013 lúc 11:32Mar 4, 2013 at 11:32

username_4567username_4567username_4567

4.66511 Huy hiệu vàng55 Huy hiệu bạc92 Huy hiệu Đồng11 gold badges55 silver badges92 bronze badges

5

Tôi hơi muộn, nhưng đối với những độc giả trong tương lai của bài đăng, tôi vừa xuất bản một gói Python làm điều này một cách chính xác. https://pypi.python.org/pypi/pynverse Có một mô tả chi tiết về cách sử dụng nó và cách nó thực hiện trong mô tả!

Đã trả lời ngày 30 tháng 10 năm 2016 lúc 23:51Oct 30, 2016 at 23:51

1

Như đã được đề cập, không phải tất cả các chức năng đều không thể đảo ngược. Trong một số trường hợp áp đặt các ràng buộc bổ sung giúp: suy nghĩ về nghịch đảo của

>>> from pynverse import inversefunc
4.

Khi bạn chắc chắn rằng chức năng của bạn có nghịch đảo duy nhất, hãy giải phương trình

>>> from pynverse import inversefunc
5. Giải pháp cung cấp cho bạn nghịch đảo,
>>> from pynverse import inversefunc
6.

Trong Python, hãy tìm những người giải quyết phi tuyến từ

>>> from pynverse import inversefunc
7.

Đã trả lời ngày 4 tháng 3 năm 2013 lúc 11:54Mar 4, 2013 at 11:54

ev-brev-brev-br

24K9 Huy hiệu vàng61 Huy hiệu bạc76 Huy hiệu Đồng9 gold badges61 silver badges76 bronze badges

Một mô -đun chuyên về tính toán nghịch đảo số của bất kỳ hàm liên tục có thể đảo ngược.

Yêu cầu

Cài đặt

Để cài đặt công cụ này, bạn sẽ cần PIP:pip:

pip install pynverse

Cách sử dụng

Pynverse cung cấp một chức năng chính nghịch đảo tính toán nghịch đảo số của hàm F được truyền như đối số đầu tiên dưới dạng một người có thể gọi được.inversefunc that calculates the numerical inverse of a function f passed as the first argument in the form of a callable.

>>> from pynverse import inversefunc

Nó có thể được sử dụng để tính toán hàm nghịch đảo tại một số điểm Y_Values ​​nhất định:y_values points:

>>> cube = (lambda x: x**3)
>>> invcube = inversefunc(cube, y_values=3)
array(3.0000000063797567)

Hoặc để có được một cuộc gọi có thể gọi sẽ tính toán các giá trị nghịch đảo tại bất kỳ điểm nào khác nếu Y_Values ​​không được cung cấp:y_values is not provided:

>>> invcube = inversefunc(cube)
>>> invcube(27)
array(3.0000000063797567)

Nó yêu cầu chức năng phải liên tục và đơn điệu nghiêm ngặt (nghĩa là hoàn toàn giảm hoặc tăng hoàn toàn) trong miền của hàm. Theo mặc định, miền bao gồm tất cả các số thực, nhưng nó có thể được giới hạn ở một inverval bằng đối số miền:domain argument:

>>> import numpy as np
>>> inversefunc(np.cos, y_values=[1, 0, -1], # Should give [0, pi / 2, pi]
...             domain=[0, np.pi])
array([ 0.        ,  1.57079632,  3.14159265])

Ngoài ra, đối số Open_Domain có thể được sử dụng để chỉ định ký tự mở/đóng của từng đầu của khoảng miền:open_domain can be used to specify the open/closed character of each of the ends of the domain interval:

>>> inversefunc(np.log10, y_values=-2, # Should give 0.01
...             domain=0, open_domain=[True, False])
array(0.0099999999882423)

Hoặc ở cả hai đầu đồng thời:

>>> invtan = inversefunc(np.tan,
...                      domain=[-np.pi / 2, np.pi / 2],
...                      open_domain=True)
>>> invtan([1, 0, -1]) # Should give [pi / 4, 0, -pi / 4]
array([  7.85398163e-01,   1.29246971e-26,  -7.85398163e-01])

Các tham số bổ sung có thể được chuyển đến chức năng để sử dụng lại các thiết bị gọi dễ dàng hơn bằng cách sử dụng đối số Args:args argument:

>>> invsquare = inversefunc(np.power, args=(2), domain=0)
>>> invsquare([4, 16, 64])
array([ 2.,  4.,  8.])

Hình ảnh của hàm trong khoảng thời gian cũng có thể được cung cấp cho các trường hợp hàm không liên tục ngay ở cuối khoảng mở với đối số hình ảnh:image argument:

>>> invmod = inversefunc(np.mod, args=(1), domain=[5,6],
...                      open_domain=[False,True], image=[0,1])
>>> invmod([0.,0.3,0.5])
array([ 5. ,  5.3,  5.5])

Ngoài ra, một đối số có thể được sử dụng để kiểm tra số lượng chính xác trong kết quả, đưa ra cảnh báo trong trường hợp điều này không đáp ứng được:

>>> inversefunc(np.log10, y_values=-8, # Should give 0.01
...             domain=0, open_domain=True, accuracy=6)
pynverse\inverse.py:195: RuntimeWarning: Results obtained with less than 6 decimal digits of accuracy
array(9.999514710830838e-09)

Vì nó tương thích với các mảng, nó có thể rất dễ dàng được sử dụng để có được nghịch đảo cho các phạm vi rộng. Đây là một số ví dụ về việc sử dụng các thiết bị gọi nghịch đảo số được trả về với các mảng để tạo ra các lô và so sánh chúng với nghịch đảo phân tích, mỗi loại được tính toán đơn giản như:

>>> from pynverse import inversefunc
0
Hướng dẫn is there an inverse function in python? - có một chức năng nghịch đảo trong python không?

Cụ thể, đối với định nghĩa về các chức năng piecewise, có một chức năng tiện ích piecewise với điều kiện giải quyết các vấn đề của NP.Piecewise khi làm việc với cả vô hướng và mảng. Ví dụ, nghịch đảo cho âm mưu cuối cùng đã thu được như:piecewise utility function provided that solves the issues of np.piecewise when working with both scalars and arrays. For example, the inverse for the last plot was obtained as:

>>> from pynverse import inversefunc
1

Tuyên bố miễn trừ trách nhiệm

Vấn đề tính toán nghịch đảo số của một hàm ý tùy ý trong các khoảng thời gian không giới hạn hoặc mở vẫn là một câu hỏi mở trong toán học ứng dụng. Mục đích chính của gói này là không nhanh, hoặc chính xác như có thể nếu nghịch đảo được tính toán cụ thể cho một hàm đã biết, sử dụng các kỹ thuật chuyên dụng hơn. Việc triển khai hiện tại về cơ bản sử dụng các công cụ hiện có trong SCIPY để giải quyết vấn đề cụ thể là tìm ra nghịch đảo của một chức năng đáp ứng các điều kiện liên tục và đơn điệu, nhưng trong khi nó thực hiện thực sự tốt, nó có thể thất bại trong một số điều kiện nhất định. Ví dụ: khi đảo ngược log10, người ta biết là bắt đầu đưa ra các giá trị không chính xác khi được yêu cầu đảo ngược -10, tương ứng với 0,0000000001 (1E-10), nhưng thay vào đó là 0,0000000000978 (0,978E-10).log10 it is known to start giving inccacurate values when being asked to invert -10, which should correspond to 0.0000000001 (1e-10), but gives instead 0.0000000000978 (0.978e-10).

Ưu điểm của việc ước tính hàm nghịch đảo là độ chính xác luôn có thể được xác minh bằng cách kiểm tra xem f (finv (x)) == x ..

Chi tiết về việc thực hiện

Chiến lược nội bộ được tóm tắt là như sau:

  1. Hình nếu chức năng tăng hoặc giảm. Đối với hai điểm tham chiếu này, Ref1 và Ref2 là cần thiết:

    • Trong trường hợp khoảng thời gian hữu hạn, các điểm tham chiếu điểm là 1/4 và 3/4 qua khoảng thời gian.

    • Trong một khoảng thời gian vô hạn, bất kỳ hai giá trị thực sự hoạt động.

    • Nếu f (ref1)

  2. Tìm ra hình ảnh của hàm trong khoảng.

    • Nếu các giá trị được cung cấp, thì chúng được sử dụng.

    • Trong một khoảng kín, chỉ cần tính toán f (a) và f (b), trong đó a và b là các đầu của khoảng.

    • Trong một khoảng mở, hãy cố gắng tính toán f (a) và f (b), nếu điều này hoạt động được sử dụng, nếu không nó sẽ được giả định là (-inf, inf).

  3. Được xây dựng một chức năng giới hạn với các điều kiện sau:

    • bounded_f(x):

      • Trả về -inf nếu x dưới khoảng thời gian và F đang tăng.

      • Trả về +inf nếu x dưới khoảng thời gian và F đang giảm.

      • return +inf nếu x trên khoảng và f đang tăng.

      • trả về -inf nếu x trên khoảng và f đang giảm.

      • trả lại f (x) nếu không

  4. Nếu số yêu cầu Y0 cho nghịch đảo nằm ngoài hình ảnh, hãy tăng một ngoại lệ.

  5. Tìm rễ cho giới hạn_f (x) -y0, bằng cách giảm thiểu (giới hạn_f (x) -y0) ** 2, sử dụng phương thức Brent, đảm bảo rằng thuật toán để giảm thiểu bắt đầu ở một điểm trong khoảng thời gian ban đầu bằng cách cài đặt ref1, ref2 như dấu ngoặc. Ngay sau khi đi ra ngoài các khoảng thời gian được phép, giới hạn_F trả về vô hạn, buộc thuật toán phải quay lại để tìm kiếm bên trong khoảng thời gian.Brent method, making sure that the algorithm for minimising starts in a point inside the original interval by setting ref1, ref2 as brackets. As soon as if goes outside the allowed intervals, bounded_f returns infinite, forcing the algorithm to go back to search inside the interval.

  6. Kiểm tra xem các giải pháp có chính xác không và chúng đáp ứng f (x0) = y0 với một số độ chính xác mong muốn, đưa ra cảnh báo khác.

Chức năng nghịch đảo trong Python là gì?

Bắt đầu học.Hàm acos () trong python trả về cosin nghịch đảo của một số.Để cụ thể hơn, nó trả về cosin nghịch đảo của một số trong radian.returns the inverse cosine of a number. To be more specific, it returns the inverse cosine of a number in the radians.

Làm thế nào để bạn tìm thấy nghịch đảo của một giá trị trong Python?

Python cung cấp một phương pháp rất dễ dàng để tính toán nghịch đảo của ma trận.Hàm numpy.linalg.inv () có sẵn trong mô -đun Python Numpy được sử dụng để tính toán nghịch đảo của ma trận.numpy. linalg. inv() which is available in the python NumPy module is used to compute the inverse of a matrix.

Làm thế nào để bạn vẽ đồ thị nghịch đảo của một hàm trong Python?

Có hai cách.Chúng ta có thể vẽ đồ thị hàm nghịch đảo bằng cách vẽ đồ thị của chức năng với x và y -axis hoán đổi cho nhau.Xem Plot4.py cho trường hợp của hàm bình phương.Chúng ta có thể sử dụng chức năng nghịch đảo.plotting the graph of the function itself with x and y -axis interchanged. See plot4.py for the case of the squaring function. We can use expicitely the inverse function.

Làm thế nào để bạn đảo ngược một chức năng?

Các bước để tìm nghịch đảo của một hàm f ...
Thay thế f (x) bằng y trong phương trình mô tả hàm ..
Trao đổi x và y.Nói cách khác, thay thế mọi x bằng y và ngược lại ..
Giải quyết cho y ..
Thay thế y bằng f-1 (x) ..