Có thể sử dụng chức năng ẩn danh làm chức năng sự kiện trong Matlab hay không. Những gì tôi muốn làm về cơ bản làCó thể sử dụng chức năng ẩn danh làm chức năng sự kiện khi giải quyết ODE trong Matlab
opt = odeset('Events', @(t,y) (deal(y(end)-t^2,1,0)));
[T,Y] = ode45(@odefun,[tstart tend],y0,opt);
Tuy nhiên, điều này trả về lỗi phàn nàn rằng số lượng đầu ra cần xử lý phải khớp chính xác. Có cách nào khác để làm cho hàm ẩn danh trả về nhiều đối số không?
Vấn đề là tôi muốn tránh một hàm bao bọc. Sử dụng thỏa thuận, bạn CÓ THỂ thực sự có được hàm ẩn danh để trả về ba giá trị (vì thỏa thuận chỉ trả về các đối số của nó). Tuy nhiên, bộ giải mã ODE dường như đang mong đợi một số giá trị trả về khác nhau trong khi giao dịch phải được khớp chính xác. –
Bạn hoàn toàn đúng. Tôi sẽ có một cái nhìn khác khi tôi nhận được một sự thay đổi. Tôi nghi ngờ rằng nó có thể liên quan đến thực tế là 'ode45' chuyển một số biến đối số tới trình xử lý sự kiện. –
Tôi nghi ngờ, đó là do chức năng được đánh giá với một đầu ra duy nhất trong 'odeevents' và với một bộ ba đầu ra trong' odezero'. Tuy nhiên, số lượng đầu ra arg của một hàm ẩn danh là một hoặc * ba, nhưng nó không thể xử lý cả hai. – embert