【发布时间】:2017-01-12 22:13:21
【问题描述】:
考虑以下边值问题:
y'' + e^y = 0 i.e. y(0) = y(1) = 0.
我很好奇 MATLAB 将如何解决这个特定问题的有限差分法。我知道如果我们有一个线性 ODE,例如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';
但是,我的问题似乎与这个简单的例子有很大不同,因为我们正在处理非线性方程组。在这种情况下我们应该如何制定代码?
【问题讨论】:
标签: matlab solver differential-equations