Đối với dữ liệu có cấu trúc nhiễu hoặc có cấu trúc tốt, có các ô nào tốt hơn quy tắc trung điểm không?


12

Chỉ có hai phần đầu của câu hỏi dài này là cần thiết. Những người khác chỉ để minh họa.

Lý lịch

Các ô vuông nâng cao như Newton Newton Cotes tổng hợp mức độ cao hơn, Gauß cám Legendre và Romberg dường như chủ yếu dành cho các trường hợp người ta có thể lấy mẫu chính xác chức năng nhưng không tích hợp phân tích. Tuy nhiên, đối với các hàm có cấu trúc mịn hơn khoảng lấy mẫu (xem ví dụ Phụ lục A) hoặc nhiễu đo lường, chúng không thể cạnh tranh với các phương pháp đơn giản như quy tắc trung điểm hoặc hình thang (xem Phụ lục B để trình diễn).

Điều này có phần trực quan vì, ví dụ, quy tắc Simpson tổng hợp về cơ bản là loại bỏ một phần tư thông tin bằng cách gán cho nó một trọng số thấp hơn. Lý do duy nhất như vậy là tốt hơn cho các chức năng đủ nhàm chán là việc xử lý đúng các hiệu ứng viền vượt xa hiệu quả của thông tin bị loại bỏ. Từ quan điểm khác, tôi thấy rõ ràng bằng trực giác rằng đối với các chức năng có cấu trúc hoặc tiếng ồn tốt, các mẫu ở xa biên giới của miền tích hợp phải gần như tương đương và có trọng lượng gần như nhau (đối với số lượng mẫu cao ). Mặt khác, phương trình bậc hai của các hàm như vậy có thể được hưởng lợi từ việc xử lý tốt hơn các hiệu ứng viền (so với phương pháp trung điểm).

Câu hỏi

Giả sử rằng tôi muốn tích hợp số lượng dữ liệu một chiều ồn ào hoặc có cấu trúc tốt.

Số lượng điểm lấy mẫu là cố định (do đánh giá chức năng là tốn kém), nhưng tôi có thể tự do đặt chúng. Tuy nhiên, tôi (hoặc phương pháp) không thể đặt các điểm lấy mẫu một cách tương tác, nghĩa là dựa trên kết quả từ các điểm lấy mẫu khác. Tôi cũng không biết khu vực có vấn đề trước. Vì vậy, một cái gì đó như Gauß khoan Legendre (điểm lấy mẫu không tương đương) là ổn; phương trình thích nghi không phải vì nó yêu cầu các điểm lấy mẫu được đặt tương tác.

  • Có phương pháp nào vượt ra ngoài phương pháp trung điểm được đề xuất cho trường hợp như vậy không?

  • Hoặc: Có bằng chứng nào cho thấy phương pháp trung điểm là tốt nhất trong các điều kiện như vậy không?

  • Tổng quát hơn: Có bất kỳ công việc hiện có về vấn đề này?

Phụ lục A: Ví dụ cụ thể về hàm cấu trúc mịn

Tôi muốn ước tính for: vớivà. Một chức năng điển hình trông như thế này:01f(t)dt

f(t)=i=1ksin(ωitφi)ωi,
φi[0,2π]logωi[1,1000]

xếp chồng

Tôi đã chọn chức năng này cho các thuộc tính sau:

  • Nó có thể được tích hợp phân tích cho một kết quả kiểm soát.
  • Nó có cấu trúc tốt ở một mức độ khiến cho không thể nắm bắt được tất cả với số lượng mẫu tôi đang sử dụng ( ).<102
  • Nó không bị chi phối bởi cấu trúc tốt của nó.

Phụ lục B: Điểm chuẩn

Để hoàn thiện, đây là một điểm chuẩn trong Python:

import numpy as np
from numpy.random import uniform
from scipy.integrate import simps, trapz, romb, fixed_quad

begin = 0
end   = 1

def generate_f(k,low_freq,high_freq):
    ω = 2**uniform(np.log2(low_freq),np.log2(high_freq),k)
    φ = uniform(0,2*np.pi,k)
    g = lambda t,ω,φ: np.sin(ω*t-φ)/ω
    G = lambda t,ω,φ: np.cos(ω*t-φ)/ω**2
    f = lambda t: sum( g(t,ω[i],φ[i]) for i in range(k) )
    control = sum( G(begin,ω[i],φ[i])-G(end,ω[i],φ[i]) for i in range(k) )
    return control,f

def midpoint(f,n):
    midpoints = np.linspace(begin,end,2*n+1)[1::2]
    assert len(midpoints)==n
    return np.mean(f(midpoints))*(n-1)

def evaluate(n,control,f):
    """
    returns the relative errors when integrating f with n evaluations
    for several numerical integration methods.
    """
    times = np.linspace(begin,end,n)
    values = f(times)
    results = [
            midpoint(f,n),
            trapz(values),
            simps(values),
            romb (values),
            fixed_quad(f,begin,end,n=n)[0]*(n-1),
        ]

    return [
            abs((result/(n-1)-control)/control)
            for result in results
        ]

method_names = ["midpoint","trapezoid","Simpson","Romberg","Gauß–Legendre"]

def med(data):
    medians = np.median(np.vstack(data),axis=0)
    for median,name in zip(medians,method_names):
        print(f"{median:.3e}   {name}")

print("superimposed sines")
med(evaluate(33,*generate_f(10,1,1000)) for _ in range(100000))

print("superimposed low-frequency sines (control)")
med(evaluate(33,*generate_f(10,0.5,1.5)) for _ in range(100000))

(Ở đây tôi sử dụng trung vị để giảm ảnh hưởng của các ngoại lệ do các hàm chỉ có nội dung tần số cao. Đối với trung bình, kết quả là tương tự.)

Các trung vị của các lỗi tích hợp tương đối là:

superimposed sines
6.301e-04   midpoint
8.984e-04   trapezoid
1.158e-03   Simpson
1.537e-03   Romberg
1.862e-03   Gauß–Legendre

superimposed low-frequency sines (control)
2.790e-05   midpoint
5.933e-05   trapezoid
5.107e-09   Simpson
3.573e-16   Romberg
3.659e-16   Gauß–Legendre

Lưu ý: Sau hai tháng và một tiền thưởng mà không có kết quả, tôi đã đăng bài này lên MathOverflow .


Đây có phải là loại vấn đề bạn thực sự quan tâm? Trong 1D, bạn có thể có được kết quả tốt khá nhanh với hầu hết mọi phương pháp.
David Ketcheson

"Tôi có một số điểm lấy mẫu cố định và có thể tự do đặt chúng. Tuy nhiên, tôi không thể đặt các điểm lấy mẫu một cách tương tác, dựa trên kết quả từ các điểm lấy mẫu khác." Hạn chế này không rõ ràng đối với tôi. Tôi có được phép đặt các nút nơi thuật toán thích ứng sẽ đặt chúng không, miễn là tôi thực sự thông minh (thay vì thực sự sử dụng thuật toán thích ứng)? Nếu tôi không được phép "thực sự thông minh" về nó, thì loại vị trí nút nào thực sự được phép?
David Ketcheson

@DavidKetcheson: Đây có phải là loại vấn đề bạn thực sự quan tâm? - Vâng, tôi thực sự quan tâm đến 1D. - Trong 1D, bạn có thể có được kết quả tốt khá nhanh với hầu hết mọi phương pháp. - Hãy nhớ rằng đánh giá chức năng có thể tốn kém. - sau đó loại vị trí nút nào thực sự được cho phép? - Tôi đã chỉnh sửa câu hỏi của mình với hy vọng làm cho nó rõ ràng hơn.
Wrzlprmft

Cảm ơn đã giúp. Đối với tôi, câu hỏi vẫn còn mơ hồ. Tôi nghĩ rằng có một câu hỏi đơn giản và chính xác hơn sẽ dễ trả lời hơn. Nó sẽ yêu cầu xác định một tập hợp các hàm (có thể phụ thuộc vào số lượng nút cầu phương được phép) và một số liệu. Sau đó, bạn có thể hỏi liệu phương thức trung điểm có tối ưu trong chỉ số đó so với tập hợp hàm đó không (trong đó có lẽ phải sử dụng cùng một tập hợp các nút cho phương trình bậc hai tất cả các hàm).
David Ketcheson

1
@DavidKetcheson: Nó sẽ yêu cầu xác định một tập hợp các hàm (có thể phụ thuộc vào số lượng nút cầu phương được phép) và số liệu. - Cho đến nay tôi không tìm thấy bất cứ điều gì hữu ích về chủ đề này, tôi thấy không có lý do gì để áp đặt các hạn chế đó. Thay vào đó, với những hạn chế như vậy, tôi sẽ mạo hiểm rằng tôi loại trừ một số công việc hiện tại (hoặc bằng chứng dễ dàng) cho các điều kiện hoặc giả định hơi khác nhau. Nếu có bất kỳ cách nào để nắm bắt kịch bản được mô tả trong các định nghĩa và tương tự mà một tài liệu tham khảo hoặc bằng chứng dễ dàng tồn tại, tôi rất vui vì điều đó.
Wrzlprmft

Câu trả lời:


1

Trước hết, tôi nghĩ bạn hiểu sai về khái niệm cầu phương thích nghi. Phương trình bậc hai thích ứng không ngụ ý "tương tác đặt điểm mẫu". Toàn bộ ý tưởng đằng sau phương trình bậc hai thích ứng là đưa ra một sơ đồ sẽ tích hợp một chức năng nhất định với một lỗi tuyệt đối hoặc tương đối (ước tính) với càng ít đánh giá chức năng càng tốt.

Một nhận xét thứ hai: bạn viết "Số lượng điểm lấy mẫu là cố định (do đánh giá chức năng là tốn kém), nhưng tôi có thể tự do đặt chúng". Tôi nghĩ ý tưởng nên là số lượng điểm lấy mẫu (hoặc các đánh giá chức năng trong thuật ngữ bậc hai) phải càng nhỏ càng tốt (tức là không cố định).

Vì vậy, ý tưởng đằng sau phương pháp thích ứng được thực hiện trong QUADPACK là gì?

  1. 2n2n+1NN2N1

  2. Thành phần tiếp theo là chiến lược "phân chia và chinh phục". Giả sử bạn thả G7K15 này vào tích phân của bạn và bạn quan sát thấy một lỗi bậc hai theo sở thích của bạn quá lớn. QUADPACK sau đó sẽ chia nhỏ khoảng thời gian ban đầu thành hai khoảng thời gian cách đều nhau. Và sau đó nó sẽ đánh giá lại hai phần phụ bằng cách sử dụng quy tắc cơ bản, G7K15. Bây giờ, thuật toán có ước tính lỗi toàn cầu (hy vọng sẽ thấp hơn ước tính đầu tiên) nhưng cũng có hai ước tính lỗi cục bộ. Nó chọn khoảng thời gian có lỗi lớn nhất và chia số này thành hai. Hai tích hợp mới được ước tính và lỗi toàn cầu được cập nhật. Và cứ như vậy cho đến khi lỗi toàn cầu nằm dưới mục tiêu bạn yêu cầu hoặc số lượng phân mục tối đa đã bị vượt qua.

Vì vậy, tôi thách thức bạn cập nhật mã của bạn ở trên bằng scipy.quadphương pháp. Có thể trong trường hợp tích phân có nhiều "cấu trúc tốt", bạn có thể cần tăng số lượng phân khu tối đa ( limittùy chọn). Bạn cũng có thể chơi với epsabsvà / hoặc epsrelcác tham số.

Tuy nhiên, nếu bạn chỉ có dữ liệu thử nghiệm, tôi thấy hai khả năng.

  1. t2
  2. Nếu bạn không có phương tiện để chọn các nút, tức là các phép đo đến vào thời điểm ngẫu nhiên, theo tôi, lựa chọn tốt nhất vẫn là quy tắc hình thang.

Tôi nghĩ rằng bạn hiểu sai về khái niệm cầu phương thích nghi. - Bài đăng của bạn hoàn toàn đồng ý với hiểu biết trước đây của tôi về phương pháp thích nghi và nó phù hợp rõ ràng với cách tôi xác định tương tác đặt các điểm lấy mẫu (cho dù đó có phải là cụm từ thích hợp hay không). - bạn viết [Lành]. Tôi nghĩ ý tưởng nên là số lượng điểm lấy mẫu [Mạnh] phải càng nhỏ càng tốt (tức là không cố định). - Nếu bạn có sự sang trọng, chắc chắn, nhưng những hạn chế thử nghiệm có thể không phải là lành tính. Ví dụ, giả sử bạn phải đo một cái gì đó đồng thời với một số cảm biến đắt tiền cố định.
Wrzlprmft

Lời xin lỗi của tôi. Tôi giải thích sai "tương tác" trong câu hỏi của bạn. Theo cách hiểu của tôi "tương tác" có nghĩa là sự can thiệp của người dùng chứ không phải bằng thuật toán. Tôi đã thêm một đoạn trong câu trả lời của tôi về dữ liệu thử nghiệm. Một cách tiếp cận khác là "lọc" ra thông tin cấu trúc tốt, tức là áp dụng biến đổi Fourier và loại bỏ các tần số bậc cao với biên độ nhỏ. Đó sẽ là một lựa chọn?
GertVdE

Nếu bạn có cơ hội chọn các điểm đo [ chụp ] - Điểm tương đương là những gì tôi cần cho điểm giữa, hình thang đơn giản, v.v., vì vậy đây chính xác là những gì tôi đã làm trong điểm chuẩn của mình. Ở đây, phép ngoại suy Romberg không mang lại bất kỳ lợi thế nào.
Wrzlprmft

Một cách tiếp cận khác là "lọc" ra thông tin cấu trúc tốt [Mạnh] Đó có phải là một lựa chọn không? - Trong ví dụ của tôi, tôi cho rằng cấu trúc tốt là một phần của những gì tôi muốn đo, tôi chỉ không có đủ nhiều mẫu để chụp nó hoàn toàn. Đối với tiếng ồn thực tế, không có ràng buộc kỹ thuật nào ngăn tôi lọc. Tuy nhiên, tích phân trên toàn bộ miền đã là bộ lọc thông thấp cuối cùng, vì vậy tôi nghi ngờ rằng điều này có thể được cải thiện mà không có nhiễu với các thuộc tính cụ thể, lành tính và đã biết.
Wrzlprmft

Có thực sự ngẫu nhiên? Phải có một số dẫn xuất là xấp xỉ tích phân ngẫu nhiên bậc cao.
Chris Rackauckas

0

Tôi không tin rằng mã của bạn thể hiện bất cứ điều gì cơ bản về các quy tắc bậc hai khác nhau và mức độ hiệu quả của chúng đối với tiếng ồn và cấu trúc tốt, và tin rằng có thể nếu bạn chọn các cấu trúc phạt khác nhau, bạn sẽ tìm thấy thứ gì đó khác biệt. Đây là định lý:

μ

|mộtbfdx-Q^[f^]||mộtbfdx-Q[f]|+μ[4mộtb|f|dx+mộtb|xf'|dx]
Q^f^f

{xTôi}Tôi= =0n-1{wTôi}Tôi= =0n-1w^Tôix^Tôif^f^(x)= =f(x)(1+2δ)|δ|μμ

Q^[f^]= =ΣTôi= =0n-1w^Tôif^(x^Tôi)= =ΣTôi= =0n-1wTôi(1+δTôiw)f(xTôi+δTôixxTôi)(1+2δTôif)(1+δTôi*)ΣTôi= =0n-1wTôi[f(xTôi)+δTôixxTôif'(xTôi)](1+δTôiw+2δTôif+δTôi*)ΣTôi= =0n-1wTôif(xTôi)+ΣTôi= =0n-1δTôixwTôixTôif'(xTôi)+wTôif(xTôi)(δTôiw+2δTôif+δTôi*)
|Q^[f^]-Q[f]|μΣTôi= =0n-1wTôi(|xTôif'(xTôi)|+4|f(xTôi)|)4μ|f|dx+μ|xf'|dx
n

Mutatis mutandis bạn cũng có thể chỉ ra rằng kết quả giữ trong số học điểm cố định.


Cảm ơn bạn đã trả lời. Tôi gặp một chút khó khăn khi hiểu kịch bản bạn đang xem xét và nó liên quan đến câu hỏi của tôi như thế nào. Bạn có ý nghĩa gì bởi tổng biến thiên không giới hạn trong dấu phẩy động? Trừ khi tôi rất nhầm, tất cả các kết quả tính toán của tôi (trừ trường hợp kiểm soát với Romberg và GaußTHER Legendre) đều không bị ảnh hưởng bởi sự không chính xác của việc thực hiện số học (điểm nổi hoặc điểm cố định). Tiếng ồn tôi đang xem xét cũng không phải là số trong tự nhiên, mà là thử nghiệm.
Wrzlprmft

@Wrzlprmft: Điểm nổi là kết quả tôi có thể chứng minh. Tôi cũng có thể chứng minh nó ở điểm cố định, sau đó chỉ ra rằng kết quả giữ cho dữ liệu thử nghiệm. Tôi tin rằng nó đúng với bất kỳ nguồn lỗi nào trong các nút cầu phương. Tôi đã chỉnh sửa để làm rõ.
user14717

Đối với dữ liệu thử nghiệm, kết quả có sức thuyết phục hơn nhiều vì trong dữ liệu thử nghiệm chung là không khác biệt và do đó tổng biến thiên là vô hạn.
user14717

μ= =0

Ý tưởng chính ở đây xuất phát từ số điều kiện đánh giá chức năng. Đánh giá của bạn là điều hòa vì chúng ồn ào.
user14717
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.