Làm thế nào để tạo lại kết quả này (từ một cuốn sách)?


8

Kết quả mà tôi quan tâm được tìm thấy trong phần "Đồng bộ hóa: Khái niệm phổ quát về khoa học phi tuyến" trang hình 14.3 . Đoạn đặc biệt cũng được cung cấp ở cuối bài này.33314.3

Vì vậy, về cơ bản có khớp nối tiêu tan này được áp dụng cho mảng một chiều của các điều kiện ban đầu (trục ngang) phát triển theo thời gian (trục dọc). Tôi nhận ra rằng tôi sẽ không thể tạo ra kết quả giống hệt nhau vì tôi không biết chính xác các điều kiện ban đầu nhưng đó không phải là điểm chính của bài đăng này.

Vấn đề thực tế là tôi không chắc chắn làm thế nào để áp dụng quy luật tiến hóa. Nếu tôi có một số điều kiện ban đầu trải qua một lần lặp duy nhất thì kết quả về cơ bản là một hàm của các điều kiện ban đầu đó ... Hàm này (thủ tục) trong câu hỏi là gì?

Tôi rất thích có thể tính toán nó trong MatLab. Chắc chắn phải có một số chức năng tiêu chuẩn liên quan trong đó ...


Khớp nối


bạn1(x,t)bạn2(x,t)

@nonlinearism Còn những điều kiện ban đầu thì sao? Tôi có nghĩa là một số thông tin bổ sung rõ ràng phải được giới thiệu để làm cho giải pháp rõ ràng.
Pranaas

@WillieWong Cảm ơn bạn đã nhận xét. scicomp nó là sau đó! Tôi đã không nhận thức được nó.
Pranaas

1
Tôi đã chuyển câu hỏi qua. Bạn có thể muốn gắn thẻ lại câu hỏi của bạn. Đối với người mới bắt đầu, parabol-pdematlab có vẻ thích hợp.
Willie Wong

bạn đã bao giờ thử mathicala chưa ... kiểm tra trình diễn này.wolfram.com/CouplingLorenzOscillators bạn có thể chỉ định các điều kiện ban đầu và sau đó chức năng lặp lại các điều kiện đó.
Rorschach

Câu trả lời:


5

xx

bạn1,Tôit= =ε(bạn2,Tôi-bạn1,Tôi)-bạn1,Tôi+1-2bạn1,Tôi+bạn1,Tôi-1Δx2-bạn1,Tôi+2-4bạn1,Tôi+1+6bạn1,Tôi-4bạn1,Tôi-1+bạn1,Tôi-2Δx4-bạn1,Tôibạn1,Tôi+1-bạn1,Tôi-12Δx

Tôi= =1...Nbạn1,Tôibạn2,Tôi

bạnj,Tôi

function [ u_prime ] = derivative( t, u, delta_x )

u_prime = zeros(length(u),1);
u = [u(end-3:end); u; u(1:4)];

if t < 200
    epsilon = 0;
else
    epsilon = 0.1;
end


for i = 5:2:length(u) - 4;
    u_prime(i-4) = epsilon*(u(i+1) - u(i)) - ...
        (u(i+2) - 2*u(i) + u(i-2))/delta_x^2 - ...
        (u(i+4) - 4*u(i+2) + 6*u(i) - 4*u(i-2) + u(i-4))/delta_x^4 - ...
        u(i)*(u(i+2) - u(i-2))/(2*delta_x);
    j = i+1;
    u_prime(j-4) = epsilon*(u(j-1) - u(j)) - ...
        (u(j+2) - 2*u(j) + u(j-2))/delta_x^2 - ...
        (u(j+4) - 4*u(j+2) + 6*u(j) - 4*u(j-2) + u(j-4))/delta_x^4 - ...
        u(j)*(u(j+2) - u(j-2))/(2*delta_x); 
    end
end

Bây giờ bạn có thể cung cấp điều này cho bất kỳ bộ giải ODE tích hợp nào. Tôi thấy rằng ode15 hoạt động khá tốt. Tôi cũng đã giả định ICS hình sin, nhưng nó không có vẻ gì quan trọng.

N = 1000;   % Number of space discretizations

x = linspace(0, 150, N);
u_0 = zeros(2*N,1);
u_0(1:2:end-1) = sin(2*x/10);   % u_1
u_0(2:2:end) = -sin(4*x/10);    % u_2
delta_x = x(2) - x(1);

[t,u] = ode15s(@(t,u) derivative(t,u,delta_x), [0 400], u_0);

Kết quả cho: Kết quả mô phỏng

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.