Làm thế nào để bạn giải quyết một biểu thức trong python?

Trong bài viết này, bạn sẽ học cách sử dụng Python để tính đại số. Thư viện chính giúp điều này xảy ra là thư viện SymPy và bạn cũng sẽ học cách sử dụng nó trong bài viết này

Để giải nó bằng số, trước tiên bạn phải mã hóa nó dưới dạng hàm "có thể chạy được" - dán một giá trị vào, lấy một giá trị ra. Ví dụ,

def my_function[x]:
    return 2*x + 6

Hoàn toàn có thể phân tích cú pháp một chuỗi để tự động tạo một hàm như vậy; . sau đó

def makePoly[arr]:
    def fn[x]:
        return sum[c*x**p for p,c in enumerate[arr]]
    return fn

my_func = makePoly[[6, 2]]
my_func[3]    # returns 12

Sau đó, bạn cần một chức năng khác liên tục cắm giá trị x vào chức năng của bạn, xem xét sự khác biệt giữa kết quả và những gì nó muốn tìm và điều chỉnh giá trị x của nó để [hy vọng] giảm thiểu sự khác biệt

def dx[fn, x, delta=0.001]:
    return [fn[x+delta] - fn[x]]/delta

def solve[fn, value, x=0.5, maxtries=1000, maxerr=0.00001]:
    for tries in xrange[maxtries]:
        err = fn[x] - value
        if abs[err] < maxerr:
            return x
        slope = dx[fn, x]
        x -= err/slope
    raise ValueError['no solution found']

Có rất nhiều vấn đề tiềm ẩn ở đây - tìm một giá trị x bắt đầu tốt, giả sử rằng hàm thực sự có nghiệm [tức là không có đáp án nào có giá trị thực cho x^2 + 2 = 0], đạt đến giới hạn của độ chính xác tính toán, . Nhưng trong trường hợp này, chức năng giảm thiểu lỗi là phù hợp và chúng tôi nhận được kết quả tốt

solve[my_func, 16]    # returns [x =] 5.000000000000496

Lưu ý rằng giải pháp này không hoàn toàn chính xác. Nếu bạn muốn nó thật hoàn hảo, hoặc nếu bạn muốn thử giải các họ phương trình bằng phương pháp phân tích, bạn phải chuyển sang một con thú phức tạp hơn. một người giải tượng trưng

Một bộ giải ký hiệu, như Mathicala hoặc Maple, là một hệ chuyên gia với rất nhiều quy tắc ["kiến thức"] tích hợp sẵn về đại số, giải tích, v.v.; . Khi bạn đưa cho nó một phương trình, nó sẽ cố gắng tìm một đường đi, một tập hợp các ứng dụng quy tắc, từ vị trí của nó [phương trình] đến vị trí bạn muốn [dạng đơn giản nhất có thể của phương trình, hy vọng là nghiệm]

Phương trình ví dụ của bạn khá đơn giản;

=> LHS[[6, 2]] RHS[[16]]

# rule: pull all coefficients into LHS
LHS, RHS = [lh-rh for lh,rh in izip_longest[LHS, RHS, 0]], [0]

=> LHS[[-10,2]] RHS[[0]]

# rule: solve first-degree poly
if RHS==[0] and len[LHS]==2:
    LHS, RHS = [0,1], [-LHS[0]/LHS[1]]

=> LHS[[0,1]] RHS[[5]]

và có giải pháp của bạn. x = 5

Tôi hy vọng điều này mang lại hương vị của ý tưởng;

Đôi khi, trong khi làm việc với Python Strings, chúng ta có thể có một số phép tính nhất định ở định dạng chuỗi và chúng ta cần xây dựng kết quả của nó. Điều này có thể xảy ra trong các lĩnh vực liên quan đến Toán học và dữ liệu. Hãy thảo luận về những cách nhất định mà chúng ta có thể thực hiện nhiệm vụ này

Các hướng dẫn sau đây là phần giới thiệu về giải phương trình tuyến tính và phi tuyến tính bằng Python. Giải pháp cho phương trình tuyến tính là thông qua các phép toán ma trận trong khi các tập hợp phương trình phi tuyến tính yêu cầu người giải để tìm ra giải pháp bằng số

Giải phương trình tuyến tính với Python

Mã nguồn cho các giải pháp tuyến tính

nhập numpy dưới dạng np

A = np. mảng[[ [3,-9], [2,4] ]]
b = np. mảng[[-42,2]]
z = np. linalg. giải[A,b]
in[z]

M = np. mảng[[ [1,-2,-1], [2,2,-1], [-1,-1,2] ]]
c = np. mảng[[6,1,1]]
y = np. linalg. giải[M,c]
in[y]

Giải phương trình phi tuyến bằng Python

Mã nguồn cho giải pháp phi tuyến tính [fsolve]

nhập numpy dưới dạng np
từ scipy. tối ưu hóa fsolve nhập

def myFunction[z].
   x = z[0]
   y = z[1]
   w = z[2]

   F = np. trống[[3]]
   F[0] = x**2+y**2-20
   F[1] = y - x**
   F[2] = w + 5 - x*y
   return F

zGuess = np. mảng[[1,1,1]]
z = fsolve[myFunction,zGuess]
print[z]

Mã nguồn cho giải pháp phi tuyến tính [gekko]

từ gekko nhập GEKKO
m = GEKKO[]
x,y,w = [m. Var[1] for i in range[3]]
m. Phương trình[[x**2+y**2==20,\
             y-x**2==0,\
             w+5-x* . giải quyết[disp=False]
m.solve[disp=False]
print[x. giá trị, y. giá trị, w. giá trị]

Giải pháp tượng trưng với Sympy

Sympy là một gói cho các giải pháp tượng trưng trong Python có thể được sử dụng để giải các hệ phương trình

$$2x^2+y+z=1$$ $$x+2y+z=c_1$$ $$-2x+y=-z$$

nhập sympy dưới dạng sym
sym. init_printing[]
x,y,z = sym. biểu tượng['x,y,z']
c1 = sym. Ký hiệu['c1']
f = sym. Eq[2*x**2+y+z,1]
g = sym. Eq[x+2*y+z,c1]
h = sym. Phương trình[-2*x+y,-z]

tượng trưng. giải[[f,g,h],[x,y,z]]

Khi được giải quyết trong môi trường IPython, chẳng hạn như sổ ghi chép Jupyter, kết quả được hiển thị dưới dạng

$$x=-\frac{1}{2}+\frac{\sqrt{3}}{2}$$ $$y=c_1 - \frac{3 \sqrt{3}}{2} +\frac

và giải pháp thứ hai

$$x=-\frac{1}{2}-\frac{\sqrt{3}}{2}$$ $$y=c_1 + \frac{3 \sqrt{3}}{2} +\frac

Cách tiếp cận tương tự áp dụng cho các phương trình tuyến tính hoặc phi tuyến tính

Hướng dẫn bổ sung

Các phương trình tuyến tính và phi tuyến tính cũng có thể được giải bằng Excel và MATLAB. Nhấp vào liên kết thích hợp để biết thêm thông tin và mã nguồn

Ngôn ngữ lập mô hình APMonitor với giao diện Python là phần mềm tối ưu hóa cho các phương trình đại số hỗn hợp nguyên và vi phân. Nó được kết hợp với các bộ giải quy mô lớn để lập trình số nguyên tuyến tính, bậc hai, phi tuyến tính và hỗn hợp [LP, QP, NLP, MILP, MINLP]. Các phương thức hoạt động bao gồm đối chiếu dữ liệu, tối ưu hóa thời gian thực, mô phỏng động và điều khiển dự báo phi tuyến. Nó có sẵn miễn phí thông qua MATLAB, Python, Julia hoặc từ giao diện trình duyệt web

Làm cách nào để giải phương trình trong Python?

Theo hiểu biết của tôi, đây là phương pháp hiệu quả nhất để giải phương trình tuyến tính trong Python. .
def Solve_linear[phương trình,var='x']. biểu thức = phương trình. thay thế["=","-["]+"]".
biểu thức = phương trình. thay thế ["="," - ["]+"]"
được nhóm = eval[biểu thức. thay thế[var,'1j']
trở lại nhóm. thực/nhóm. tưởng tượng

Nêu các bước giải một biểu thức?

Thứ tự là. Dấu ngoặc đơn, số mũ, phép nhân, phép chia, phép cộng và phép trừ. Đây là một ví dụ về cách hoạt động của thứ tự hoạt động. [3 + 5]2 x 10 + 4. .
5x + 15 = 65 =
5x/5 + 15/5 = 65/5 =
x + 3 = 13 =
x = 10

Giải pháp của một biểu thức là gì?

Phương trình là một biểu thức đại số thường liên hệ các biến chưa biết với các biến hoặc hằng số khác. Ví dụ: x + 2 = 15 là một phương trình, y2 = 4 cũng vậy. Nghiệm hay nghiệm của phương trình là bất kỳ giá trị hoặc tập hợp giá trị nào có thể thay thế vào phương trình để biến nó thành mệnh đề đúng .

Chủ Đề