Комментарии 35
Лично мне в первую очередь интересно почитать о том, как такая идея пришла, что автор думает о ее применимости и как можно полученные примеры назвать арифметическими?
А уже потом, если понравится, можно знакомиться с тем, как это реализовано.
Ща добавлю)
Я использовал генерацию формул для тестирования корректности алгоритма взятия производных и упрощения выражений. Ожидаемые значения брались из WolframAlpha с помощью API, а актуальные — из моего алгоритма. Подробней здесь: Математические выражения в .NET (разбор, дифференцирование, упрощение, дроби, компиляция).
![](https://habrastorage.org/webt/ki/mi/i3/kimii3awrzb3zbhesqj_dyjzwfa.png)
Искусство создания примеров, это Искусство оно должно что то показывать. А случайный набор числе и действий это хаус.
Вы абсолютно правы, есть небольшая ошибочка. Спасибо, хотя лучше это помечать в диалогах.
как это посчитать?Технически посчитать можно, если представить сумму в замкнутом виде: Sqrt(5.5)*(1 — a + b)*(a + b)/10, где a и b пределы суммирования. В итоге получим -6649*Sqrt(5.5)/1000.
Откуда у вас взялось значение 5.5
?
А вообще да: можно обобщить любое вычисление, для этого нужно найти непрерывную функцию зависимости i-того значения от числа i. Для факториала, например, это гамма-функция. В данном случае все проще, так как формула суммы выражается через арифметическую прогрессию, в которую можно вставлять любые числа, не только целые.
Ну так это дело наживное, так сказать). Можно поиграться с параметрами, сделать все попроще, получать что-то типа
Это, честно говоря, не ко мне. Так рисует латех. Хотя я с вами безусловно согласен.
\[ ( \big( \Big( \bigg( \Bigg( \],
\[\left(
\left[
\left\langle
\left\{
\left\uparrow
\left\lceil
\left|
\left\lfloor
\right\rfloor
\right|
\right\rceil
\right\downarrow
\right\}
\right\rangle
\right]
\right)\]
Особенно здорово, если скобки автоматически подбирают свой размер под выражение, которое они окружают. Парные команды \left и \right включают режим
подобной подстройки.
Е.М. Балдин. Компьютерная типография LaTeX
А я вот уже давно ищу какой-нибудь вменяемый генератор примеров по математике, чтобы своих школьников гонять дома дополнительно.
Пока это была арифметика первых классов — без проблем генерировал.
Но сейчас это 8-й и 9-й класс… Нагенерировать релевантных примеров становится не так-то и просто...
Может кто-то сталкивался с чем-то похожим?
А каких видов должны быть примеры? Наверное восьмиклассникам арифметика уже не нужна? Кастомные уравнения может быть? Ну например за 10 минут пишется штука, которая по n корням выдает многочлен, обладающий такими корнями.
Ну тут уже сложный вопрос. Возможно у меня мозги криво устроены, чтобы быстро решать такие задачки :-)
А темы постоянно новые. Это и квадратные уравнения. И системы уравнений. И тригонометрия.
Ну и алгебра с геометрией не за горами :-)
Вообще неплохая идея кому-нибудь для сайта. Генерировать по учебной программе примеры. И с разным уровнем сложности :-)
А то по программированию тренажёров уже пруд пруди на любой вкус, а по школьной программе как-то грустно...
Наляпал для многочленов
from IPython.display import display, Math
import random
def mutmul(arr, dep):
if dep == 1:
return sum(arr)
r = []
for i in range(len(arr)):
r.append(arr[i] * mutmul(arr[i + 1:], dep-1))
return sum(r)
def spow(v, p):
if p == 0:
return ""
if p == 1:
return v
return v + "^" + str(p)
def polynom(roots):
mroots = [-i for i in roots]
coefs = [mutmul(mroots, i + 1) for i in range(len(mroots))]
r = [spow("x", len(mroots))]
for i, c in enumerate(coefs):
s = str(c) + spow("x", len(coefs) - i - 1)
r += [s]
r = "+".join(r)
r = r.replace("+-", "-")
return r
for i in range(10):
roots = [random.randint(-10, 10) for i in range(random.randint(1, 5))]
display(Math("$" + polynom(roots) + "=0" + "$"))
![](https://habrastorage.org/webt/sp/ji/ry/spjiry0sf1tdb81a1j0giu2yiz8.png)
Учителям, репетиторам, да и просто родителям, которые заботятся о будущем своих детей ;-)
- Не обязательно только в числах. Можно же и комбинировать темы между собой. Причём разнообразным образом.
- Разные дети усваивают по разному. Некоторым надо много попыток, прежде чем они смогут уверенно пользоваться конкретными приёмами
- Если надо нагенерить контрольную на целый класс? А если перездача и надо новые примеры?
- А если надо повторить материал, чтобы не забылся?
Короче моя практика показывает (хоть я и не учитель), что если примеры каждый раз разные и отличаются не "только числами", то результат гораздо выше. Но вот нагенерировать такие примеры не всегда так уж просто. И ладно я хоть ITшник. А как быть людям вообще далёким от IT, но желающим дать своим детям путёвку в жизнь?
Портянки нужны для автоматизма.
Но эти примеры очень простые, нужны скобки, комбинация скобок.
Генератор простых арифметических примеров для чайников и не только