Да, я здесь ошибся, Математика такие задачи в принципе решать может (для простейшего примера у меня получилось). Видимо, дело здесь в другом. Возможно, задача слишком навороченная и не исключены ошибки в условии. Буду сам ещё разбираться. Тем ни мение приведу здесь этот пример в упрощенном варианте, когда одну и ту же систему ОДУ метод DSolve решает, а метод NDSolve не решает. В более сложном варианте, когда уравнения уже нелинейные, методу DSolve эта задача тоже не посилам.
Короче, вот пример, здесь это решается и строится соот-щий график:
Код:
b1 = 2; b2 = 3;
q1 = 2; q2 = 4;
n1 = 3; n2 = 1;
s = DSolve[{
p1''[x] + p1[x]/b1 == 0,
p2''[x] + p2[x]/b2 == 0,
q1 - p1'[0] == q2 - p2'[0],
n1*p1[0] == n2*p2[0],
p1[-1] == 1,
p2[1] == 1
}, {p1, p2}, x]
f[x_] := p1[x] /. s;
f[x]
Plot[f[x], {x, 0, xm}, PlotRange -> {-3, 3}, AxesLabel -> {"x", "p"}];
Тоже самое, но численно, уже не решаемо:
Код:
xm = 2;
b1 = 2; b2 = 3;
q1 = 2; q2 = 4;
n1 = 3; n2 = 1;
s = NDSolve[{
p1''[x] + p1[x]/b1 == 0,
p2''[x] + p2[x]/b2 == 0,
q1 - p1'[0] == q2 - p2'[0],
n1*p1[0] == n2*p2[0],
p1[-1] == 1,
p2[1] == 1
}, {p1, p2}, {x, -xm, xm}]
f[x_] := p1[x] /. s;
f[x]
Plot[f[x], {x, 0, xm}, PlotRange -> {-3, 3}, AxesLabel -> {"x", "p"}];
пишет
Цитата:
NDSolve::"ndv": "For a boundary value problem, only nth order single linear ordinary differential equations is supported."
и ещё много всего.
Какие здесь возможны варианты?