Рассмотрим следующую краевую задачу:программа MATLAB для метода конечных разностей для у «» + е^у = 0
y'' + e^y = 0 i.e. y(0) = y(1) = 0.
Мне любопытно, как MATLAB будет решить метод конечных разностей для этой конкретной проблемы. Я знаю, что если у нас есть линейное ОДУ, т.е. y'' + (e^x)y = 0
, с теми же граничными условиями, то программа довольно проста. Скажем, мы используем разбиение отрезка [0,1] на 20 равных подынтервалов, то следующий код будет работать:
N = 19;
h = 1/N;
x = linspace(0, 1, N+1)';
A(1,1) = 1;
F(1) = 0;
for k=2:N
A(k,k-1) = -1/h^2;
A(k,k) = 2/h^2+exp(x(k));
A(k,k+1) = -1/h^2;
F(k) = 0;
end
A(N+1, N+1)=1;
F(N+1) = 0;
U = A\F';
Однако, кажется, что мой вопрос очень отличается от этого простого примера, потому что мы имеют дело с системами нелинейных уравнений. Как мы должны формулировать код в этом случае?