Có một thuật toán số để tìm độ dốc tiệm cận?


23

Tôi có một loạt các điểm dữ liệu mà tôi mong đợi (xấp xỉ) theo một hàm mà tiệm cận với một dòng ở lớn . Về cơ bản, tiếp cận 0 khi , và có thể nói tương tự về tất cả các dẫn xuất , , v.v. Nhưng tôi không biết dạng hàm cho f (x) là gì, nếu nó thậm chí còn có dạng có thể được mô tả theo các hàm cơ bản.y ( x ) x f ( x ) y ( x ) - ( a x + b ) x f ( x ) f ( x ) f ( x )(xtôi,ytôi)y(x)xf(x)y(x)-(mộtx+b)xf'(x)f"(x)f(x)

Mục tiêu của tôi là có được ước tính tốt nhất có thể về độ dốc tiệm cận một . Phương pháp thô rõ ràng là chọn ra một vài điểm dữ liệu cuối cùng và thực hiện hồi quy tuyến tính, nhưng tất nhiên điều này sẽ không chính xác nếu f(x) không trở nên "đủ phẳng" trong phạm vi x mà tôi có dữ liệu. Phương pháp ít thô sơ rõ ràng là giả sử rằng f(x)điểm kinh nghiệm(-x) (hoặc một số dạng chức năng cụ thể khác) và phù hợp với điều đó bằng cách sử dụng tất cả dữ liệu, nhưng các hàm đơn giản tôi đã thử như điểm kinh nghiệm(-x) hoặc 1x không khớp dữ liệu ở mức x thấp hơn xtrong đó f(x)là lớn Có một thuật toán đã biết để xác định độ dốc tiệm cận sẽ làm tốt hơn hay có thể cung cấp giá trị cho độ dốc cùng với khoảng tin cậy, do tôi không biết chính xác cách thức dữ liệu tiếp cận với tiệm cận?


Loại nhiệm vụ này có xu hướng xuất hiện thường xuyên trong công việc của tôi với các bộ dữ liệu khác nhau, vì vậy tôi chủ yếu quan tâm đến các giải pháp chung, nhưng theo yêu cầu tôi đang liên kết đến tập dữ liệu cụ thể đã đặt ra câu hỏi này. Như được mô tả trong các nhận xét, thuật toán Wynn ε mang lại một giá trị mà theo như tôi có thể nói, có phần tắt. Đây là một âm mưu:

Dữ liệu tuyến tính tiệm cận

(Có vẻ như có một đường cong đi xuống nhẹ ở các giá trị x cao, nhưng mô hình lý thuyết cho dữ liệu này dự đoán rằng nó phải là tuyến tính không có triệu chứng.)


Điều này có thể quá sơ đẳng - hoặc quá mơ hồ - đối với trang web này, nhưng tôi cho rằng phiên bản beta riêng tư là thời gian để thử những thứ như vậy.
David Z

Không, tôi nghĩ rằng đây là một câu hỏi tuyệt vời. Không phải tất cả mọi thứ phải được nâng cao và ưa thích. Giải pháp tốt cho các vấn đề đơn giản là rất quan trọng.
Colin K

@Dan: đã thay thế thực sự hợp lý? điểm kinh nghiệm
JM

Có exps có xu hướng làm cho tôi khó đọc hơn, nhưng tôi thừa nhận rằng nó đủ nhỏ để tôi không nên làm điều đó.
Dan

Tôi thực sự không quan tâm dù bằng cách nào, tôi chỉ hình dung rằng tôi cũng có thể chấp nhận các chỉnh sửa bởi vì, tại sao không. Bạn nhận được một vài danh tiếng từ nó, bất cứ điều gì có giá trị.
David Z

Câu trả lời:


13

Đó là một thuật toán khá thô sơ, nhưng tôi sử dụng quy trình sau đây cho một ước tính thô: nếu, như bạn nói, có ý nghĩa đại diện cho gần như tuyến tính khi tăng, những gì tôi ' d làm là lấy sự khác biệt , sau đó sử dụng thuật toán ngoại suy như phép biến đổi Shanks để ước tính giới hạn của sự khác biệt. Kết quả là hy vọng một ước tính tốt về độ dốc tiệm cận này.f(x)(xtôi,ytôi)xytôi+1-ytôixtôi+1-xtôi


Sau đây là một Mathematica cuộc biểu tình. Thuật toán Wynn là một triển khai thuận tiện của phép biến đổi Shanks và nó được tích hợp dưới dạng hàm (ẩn) . Chúng tôi thử các thủ tục về chức năngεSequenceLimit[]

4x2+3+2x+e-4x+3
xdata = RandomReal[{20, 40}, 25];
ydata = Table[(3 + 13*E^(4*x) + 6*E^(4*x)*x + x^2 + 3*E^(4*x)*x^2 + 
      2*E^(4*x)*x^3)/(E^(4*x)*(3 + x^2)), {x, xdata}];

SequenceLimit[Differences[ydata]/Differences[xdata],
              Method -> {"WynnEpsilon", Degree -> 2}]
1.999998

Tôi cũng có thể chỉ ra rằng thuật toán đơn giản như thế nào:

wynnEpsilon[seq_?VectorQ] := 
 Module[{n = Length[seq], ep, res, v, w}, res = {};
  Do[ep[k] = seq[[k]];
   w = 0;
   Do[v = w; w = ep[j];
    ep[j] = 
     v + (If[Abs[ep[j + 1] - w] > 10^-(Precision[w]), ep[j + 1] - w, 
         10^-(Precision[w])])^-1;, {j, k - 1, 1, -1}];
   res = {res, ep[If[OddQ[k], 1, 2]]};, {k, n}];
  Flatten[res]]

Last[wynnEpsilon[Differences[ydata]/Differences[xdata]]]
1.99966

Việc thực hiện này được điều chỉnh từ bài viết của Weniger .


Chỉ tò mò, nhưng tại sao bạn lại là hình thức ban đầu của hàm, thay vì kết hợp tất cả các thuật ngữ?
rcollyer

LMộtTEX

Làm thế nào gần với căn hộ để các điểm phải có để thuật toán có hiệu quả?
rcollyer

2
Được rồi, câu hỏi cuối cùng (tôi thề), bạn có thể tạo ra một lỗi ràng buộc vào ước tính không?
rcollyer

1
Đó là một chút phức tạp hơn. Tôi đã thấy một số phương pháp được đề xuất trong một vài bài báo, nhưng tôi thú nhận là đã không thực hiện thí nghiệm với chúng. (Có lẽ tôi nên, một trong những ngày này.) Cuốn sách của Brezinski và Redivo-Zaglia có một vài gợi ý mà bạn có thể muốn xem xét.
JM
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.