магма компьютерная алгебра система локальные и глобальные переменные

function Max(x)
    max := 0; L := [];
    for i := 1 to x do
        P2<x,y,z> := ProjectiveSpace(Rationals(),2);
        C_i := Curve(P2, x^3+y^3-i*z^3);
        E_i, C_itoE_i := EllipticCurve(C_i);
        gen := Generators(E_i);
        if max eq #gen then
            max := #gen;
        end if;
    end for;
    return max;
end function;

Когда я запускаю это (Max(100)) он говорит мне, что max = 0. Однако я знаю, что #gen = 1 и 2 в разных местах и, следовательно, #gen > 0. У меня возникли трудности с локализацией max. Он считает max вне операторов if и for отличным от max внутри операторов for и if и, таким образом, не обновляет max. Я не уверен, как в синтаксисе magma CAS я могу исправить это. Может ли кто-нибудь помочь мне понять синтаксис Magma в отношении этого аспекта? Я попытался поставить локальный макс; внутри цикла и операторов if, но дал мне синтаксическую ошибку.


person Adam Staples    schedule 15.10.2014    source источник
comment
Кроме того, почему нет тега для magma cas? magma — это язык программирования более высокого уровня (система компьютерной алгебры)/программное обеспечение. На мой взгляд, это должна быть опция тегов.   -  person Adam Staples    schedule 15.10.2014
comment
Не существует тега для всего, что кто-то может захотеть. Есть теги для самых популярных вещей. Возможно, это первый вопрос о магме. Кажется, это стоит 1400 долларов США.   -  person President James K. Polk    schedule 21.10.2014


Ответы (1)


Я не знаю магму, но если это похоже на другие процедурные компьютерные языки, то похоже, что у вас есть простая ошибка в вашем коде. линии:

    if max eq #gen then
        max := #gen;
    end if;

следует изменить на

    if #gen > max then
        max := #gen;
    end if;

используя любой правильный синтаксис для оператора «больше».

person President James K. Polk    schedule 21.10.2014
comment
Да, мой профессор на следующий день указал мне на это, и вы правы! Когда я узнал, я почувствовал себя довольно глупо, лол. Да я понимаю, почему это › чем сейчас. - person Adam Staples; 22.10.2014