nickkolok / chas-ege

Свободный тренажёр к ЕГЭ
GNU General Public License v3.0
10 stars 24 forks source link

Уравнения 09 №8.13-8.18, 10.13-10.18 #1585

Closed VeronikaKit closed 2 weeks ago

VeronikaKit commented 6 months ago

image image image image

(function() { retryWhileError(function() {
    let a=sluchch(1,10).pm();
    let b=sluchch(1,20).pm();
    let c=sluchch(1,40).pm();
    let d=(-b+Math.sqrt(b**2-4*a*c))/(2*a);
    let e=-(b+Math.sqrt(b**2-4*a*c))/(2*a);
    genAssertZ1000((b**2-4*a*c>=0),'По условию');
    genAssertZ1000(d,'Корень не должен быть слишком дробным');
    genAssertZ1000(d+e, 'Сумма корней не должна быть слишком дробной');
    genAssertZ1000(e, 'Корень не должен быть слишком дробным');
    NAtask.setEquationTask({
            parts: [a+'x^2+'+b+'x+'+c, 0],
        roots: [d,e],
        handleMultipleRoots: 'randomExceptList',
    });
}, 20);})();
nickkolok commented 6 months ago

А вот здесь, Вероника, Вы неправы, причём неправы дважды. Во-первых, Вы немножечко недорезали. Задания 9 и 11 - это отдельный шаблон. Присмотритесь внимательнее: у 8 и 10 старший коэффициент всегда 1, а у 9 и 11 средний коэффициент равен сумме крайних (со знаком "плюс" или "минус"). Так что это два разных шаблона. Во-вторых, квадратное уравнение лучше генерить не так. Лучше сначала сгенерить хорошие корни, с которыми всё точно будет правильно, а потом уже по ним вычислить коэффициенты уравнения. По Виету, если угодно.

VeronikaKit commented 6 months ago
(function() { retryWhileError(function() {
    let d=sluchch(1,30).pm();
    let e=sluchch(1,30).pm();
    let b=-(d+e);
    let c=d*e;
    genAssertZ1000((b**2-4*c>=0),'По условию');
    genAssertZ1000(d,'Корень не должен быть слишком дробным');
    genAssertZ1000(e, 'Корень не должен быть слишком дробным');
    NAtask.setEquationTask({
                    parts: ['x^2+'+b+'x+'+c, 0],
                roots: [d,e],
                handleMultipleRoots: 'randomExceptList',
    });
}, 20);})();
nickkolok commented 6 months ago

См. #1583 Кроме того, а нужно ли тут вообще проверять дискриминант? Мы же вроде корни-то сгенерировали, значит, они есть и вещественны.

VeronikaKit commented 6 months ago
(function() { retryWhileError(function() {
    let d=sluchch(1,30).pm();
    let e=slKrome(d,1,30).pm();
    let b=-(d+e);
    let c=d*e;
    genAssertZ1000(d,'Корень не должен быть слишком дробным');
    genAssertZ1000(e,'Корень не должен быть слишком дробным');
    NAtask.setEquationTask({
            parts: ['x^2+'+b+'x+'+c, 0],
        roots: [d,e],
        handleMultipleRoots: 'randomExceptList',
    });
}, 20);})();
nickkolok commented 6 months ago

https://oge.sdamgia.ru/problem?id=311438

nickkolok commented 6 months ago

@SugarHedgehog , прошу ревью.

VeronikaKit commented 5 months ago

https://oge.sdamgia.ru/problem?id=311438

SugarHedgehog commented 5 months ago

image Воткнуть проверку

nickkolok commented 5 months ago

Да, таких ситуаций нужно избегать. Хинт: использовать slKrome

VeronikaKit commented 5 months ago
(function() { retryWhileError(function() {
    let d=sluchch(1,30).pm();
    let e=slKrome(d,1,30).pm();
    let b=-(d+e);
    let c=d*e;
    genAssert(b!=0, 'Нужно два решения');
    genAssert(c!=0, 'Нужно два решения');
    genAssertZ1000(d,'Корень не должен быть слишком дробным');
    genAssertZ1000(e,'Корень не должен быть слишком дробным');
    NAtask.setEquationTask({
            parts: ['x^2+'+b+'x+'+c, 0],
        roots: [d,e],
        handleMultipleRoots: 'randomExceptList',
    });
}, 20);})();
SugarHedgehog commented 4 months ago

Прекрасно работает

VeronikaKit commented 4 months ago

https://math-oge.sdamgia.ru/problem?id=311438