cuốn sách gpt4 ai đã làm

python - Giải hệ phương trình bậc hai ẩn 3 biến

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-03 19:09:21 29 4
mua khóa gpt4 Nike

Tôi đang cố gắng giải hệ phương trình có 3 biến và số phương trình thay đổi.

Về cơ bản, độ dài của hệ là từ 5 đến 12 phương trình và cho dù có bao nhiêu phương trình, tôi cũng đang cố gắng giải 3 biến.

看起来像这样:

(xA)**2 + (yB)**2 + (zC)**2 = (c(td))**2

Tôi biết A, B, C và cả vế phải. A, B, C và phía bên phải đều là các mảng có độ dài n, trong đó n thay đổi ngẫu nhiên trong khoảng từ 5 đến 12. Vì vậy, chúng ta có một hệ phương trình có kích thước khác nhau. Tôi tin rằng tôi cần sử dụng hàm lstsq của NumPy và làm như sau:

data,data1 = getData() # Tôi sẽ phải thực hiện việc này cho 2 hệ thống duy nhất.
A = dữ liệu[:,0]
B = dữ liệu[:,1]
C = dữ liệu[:,2]
tid = dữ liệu[:,3]
P = (xA)**2 + (yB)**2 + (zC)**2
b = thời gian
đã giải quyết = lstsq(P,b)
in đã được giải quyết

Tuy nhiên, điều này không hiệu quả vì chúng ta biết x,y,z là ẩn và do đó cần phải được đưa ra khỏi P để nó hoạt động. Giúp đỡ!

câu trả lời hay nhất

Những gì bạn có thể cần là scipy.optizes.minimize () áp dụng cho các phương trình tùy ý (phi tuyến tính). numpy.linalg.lstsq() chỉ giải được các hệ phương trình tuyến tính và vấn đề này chắc chắn là phi tuyến tính (mặc dù có một số kỹ thuật để tuyến tính hóa hệ phương trình, tôi không nghĩ đây là trường hợp bạn muốn).

Các hệ lớn hơn 3 phương trình gồm 3 biến rất có thể sẽ không có nghiệm, vì vậy bạn phải xác định cách đo lường mức độ tốt của một "lời giải" đã cho, ngay cả khi nó không thực sự giải được hệ phương trình. Cách bạn nghĩ về nó như một vấn đề tối thiểu hóa phụ thuộc vào cách giải thích vật lý hoặc miền vấn đề mà bạn thực sự đang cố gắng thực hiện. Một khả năng là, đối với phương trình sau (là phiên bản được sắp xếp lại một chút của phương trình của bạn)

(x-A1)**2 + (y-B1)**2 + (z-C1)**2 - T1**2 = 0
(x-A2)**2 + (y-B2)**2 + (z-C2)**2 - T2**2 = 0
...

Cố gắng giảm thiểu tổng của tất cả các giá trị tuyệt đối ở vế trái (giá trị này sẽ bằng 0 nếu phương trình được giải chính xác). Nói cách khác, bạn muốn x, y, z tạo ra giá trị nhỏ nhất của hàm

tổng( abs( (x-A1)**2 + (y-B1)**2 + (z-C1)**2 - T1**2 ) + abs( (x-A2)**2 + (y -B2)**2 + (z-C2)**2 - T2**2 ) + ... )

Ví dụ mã: v là một mảng của (3,) chứa x, y, z; A, B, C, tid là các mảng của (N,), trong đó N là số phương trình.

def F(v, A, B, C, tid):
x = v[0]
y = v[1]
z = v[2]
trả về numpy.sum( numpy.abs( (xA)**2 + (yB)**2 + (zC)**2 - tid ) )

v_initial = numpy.array([x0, y0, z0]) # bắt đầu đoán
result = scipy.optimize.minimize(F, v_initial, args=(A, B, C, tid))
v = kết quả.x
x, y, z = v.tolist() # tìm được giải pháp tốt nhất

Điều này gần như đã hoạt động nhưng tôi chưa thử nghiệm nó. Bạn có thể cần thêm một số đối số để thu nhỏ(), chẳng hạn như phương thức, tol, ...

Về python - giải hệ phương trình bậc hai ẩn gồm 3 biến, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/13572605/

29 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress