Я не знаток Матлаба, но могу предложить решение для данного случая. Посмотрите на картинку в оффтопе.
(Оффтоп)
Наклонные прямые линии задаются уравнениями
. Каждой прямой соответствует своё
, и оно указано в жёлтых кружочках. Одновременно кружочки отмечают целочисленные решения уравнения для "своих"
.
Например, кружочек с числом
стоит на прямой
, а его координаты
— решение этого уравнения.
Будем перечислять решения в порядке возрастания
(т.е. убывания
). Сначала учтём условие
, но проигнорируем условие
. Тогда для каждого
получится следующее.
1) Имеется решение с минимальным значением
. Обозначим это значение
. Оно равно
или
, и определяется остатком от деления
на
. (Это видно по картинке: например,
для значений
, которые идут "через 4".) Зная
, сразу находим соответствующее
.
2) Если
— решение, то следующее решение будет
. Тогда общая формула для всех решений будет
Дальше легко найти максимальное
, при котором выполняется условие
. Ниже в скрипте оно обозначено
nf. Соответствующие
обозначены
xf и
yf. Если
nf получилось отрицательным, то решений нет, скрипт в этом случае выдаёт пустую матрицу.
В итоге:
n=25;
x0=4-mod(n,4);
y0=(n-3*x0)/4;
nf=floor((y0-1)/3);
xf=x0+nf*4;
yf=y0-nf*3;
x=x0:+4:xf;
y=y0:-3:yf;
Sol=[x' y']