Matematizace - dedukční stromy

Slovní úlohy jsou řešeny rozložením na podproblémy, které jsou řešitelné pomocí jednoduchých početních operacích.

Žádné zavádění proměných. Žádné sestavování rovnic. Žádné složité výpočty.

Zápis řešení je ve formě dedukčního stromu a slouží jako strukturovaná reprezentace řešení úlohy.

Řešení úlohy je rozděleno na posloupnost jednoduchých kroků. Pořadí a návaznosti jednotlivých kroků definuje dedukčního strom, kde kroky jsou uzly stromu a vrchol stromu je konečný výsledek.

Podrobnosti a příklady, jak vytvořit dedukční strom zde

Příklad - slepičí hádanka

Parametrizace
Parametry dedukčního stromu může sloužit jako míra složitosti úlohy.

Predikáty

Predikáty umožňují formalní zápis situačního modelu úlohy.

Predikát Vlastnosti Příklad
C
container
(agent=Ája,
quantity=2,
entity=sešity)
Ája má 2 sešity
COMP
comparison
(agentA=Ája,
agentB=Honzík,
quantity=7,
entity=sešity)
Ája má o 7 sešitů více než Honzík
COMP RATIO
comparison by ratio
(agentA=Ája,
agentB=Honzík,
quantity=7,
entity=sešity)
Ája má 7 krát více sešitů než Honzík
COMP ANGLE
comparison between 2 angles
(agentA=alfa,
agentB=beta,
relationship="complementary")
Alfa je doplňkový úhel k beta.
COMP DIFF
comparison by difference
(agentMinuend=celkem,
agentSubtrahend=Honzík,
quantity=7,
entity=sešity)
Rozdíl mezi sešity celkem a Honzíkem je 7 sešitů./td>
TRANSFER
transfer between 2 agents
(agentSender=Ája,
agentReceiver=Honzík,
quantity=7,
entity=sešity)
Ája dala 7 sešitů Honzíkovi.
DELTA
delta
(agent=Ája,
quantity=7,
entity=sešity)
Ája změna v čase o 7 sešitů.
RATIO
part to whole comparison
(whole={agent:třída,entity:žáci},
part=chlapci,
ratio=1/4)
Ve třídě je 1/4 chlapců ze všech žáků.
COMPLEMENT
complement part of the whole
Pokud je ve třídě je 1/4 chlapců ze všech žáků, tak doplněk znamená, že ve tříde je 3/4 dívek ze všech žáků.
RATIOS
part to part comparison
(whole={agent:třída,entity:žáci},
parts=[chlapci,dívky],
ratios=[1,3])
Poměr chlapců a dívek ve třídě je 1:3 (1 chlapec ku 3 dívkám).
SCALE
scaling number or part to part scaling
Zvětšení. Zvětši 2 krát číslo 6 = 12. Dvojnásobné rozšíření poměru 1:3 je 2:6.
SCALE-INVERT
inverse scaling number or part to part scaling
Zmenšení. Zmenši 2 krát číslo 6 = 3. Dvojnásobné zkrácení poměru 2:6 je 1:3.
RATE
rate
(agent=Ája,
quantity=3,
entity=Kč,
entityBase=rohlík)
Každý rohlík, který má Ája, stojí 3 Kč.
QUOTE
quote
(agent=skupina,
agent=dvojice,
quantity=5)
Skupina rozdělena na 5 dvojic.
SUM
sum
(agentWhole=třída,
partAgents=[chlapci,dívky],
entityWhole=žáků)
Počet chlapců a dívek dohromady dává počet žáků ve třídě.
PRODUCT
product
(agentWhole=obsah obdélníku,
partAgents=[šířka,délka],
entityWhole=cm2)
Obsah obdelníku je produktem výšky a šířky.
PROPORTION
proportion
(inverse=true,
entities=[počet výrobků, počet pracovníků])
Nepřímá úměra platí mezi veličinami počet výrobků a počet pracovníků.
UNIT
convert unit
(unit=kg) Převod na kg.
GCD
Greatest Common Divisor
(agent=tyč,
entity=délka (m))
Největší možná délka (m) tyče.
LCD
Least Common Denominator
(agent=skupina,
entity=osob)
Nejmenší možná skupina osob.
COMMON SENSE
common sense
(description=...) Nepřímá uměrnost. Je vztah mezi veličinami, kde je obracený poměr veličin.

Odvozovací pravidla

Porovnávání

Porovnání - o kolik je větší / menší?

COMP

Porovnání podílem - kolikrát je větší / menší?

COMP-RATIO

Porovnání rozdílem - kolik je rozdíl?

COMP-DIFF

Porovnávání - část z celku

RATIO
COMPLEMENT

Porovnávání - poměry část ku časti

RATIOS
NTH-PART

Porovnávání - úhly

COMP-ANGLE

Škálování

SCALE
SCALE-INVERT

Posuny

SLIDE
SLIDE-INVERT

Stav a změna stavu

DELTA
TRANSFER
Predikát
DELTA
,
TRANSFER
není komutativní. Záleží na pořadí, které umožňuje representovat čas.

Rozdělování

RATE
QUOTA
10 : 2 = 5 může reprezentovat 2 různé věci
  • 2 díly velikosti 5m - znám počet skupin 2, rozdělení 10m tyče na 2 díly o délce 5m -
    RATE
  • 5 dílů velikosti 2m - znám velikost skupiny 2m, rozdělení 10m tyče po 2m na 5 dílů -
    QUOTA

Spojování

SUM
PRODUCT
PRODUCT-COMBINE

Převod jednotek

UNIT

Zaokrouhlování

ROUND

Nejmenší společný násobek

LCD

Největší společný dělitel

GCD

Výrazy

EVAL-EXPR

Vzory opakování

PATTERN

Square numbers

Triangular numbers

Rectangular numbers

Posloupnosti

SEQUENCE

Aritmetická

Kvadratická

Geometrická


Základní odvozovací vzory

Procenta

Parametrizace

Výpočet procentní části

Výpočet základu

Výpočet procent


Úměrnosti

Přímá úměrnost

Parametrizace

Nepřímá úměrnost

Parametrizace

Kombinovaná přímá a nepřímá úměrnost

Parametrizace

Porovnávání

Porovnávání s absolutním rozdílem

Parametrizace

Porovnání s relativním rozdílem

Parametrizace
Parametrizace

Porovnání s absolutním a relativním rozdílem

Parametrizace

Porovnání části k celku

Parametrizace

Porovnání více hodnot

Parametrizace

Porovnání A/B a porovnání B/C

Porovnání A/B a porovnání C/B

Porovnání B/A a porovnání B/C

Porovnání B/A a porovnání C/B

Měřítko

Parametrizace

Tělesa

Kvádr

Parametrizace

Válec

Parametrizace

Trojboký hranol

Parametrizace

Jak je to uděláno?

Můžete použít jako javascript module.


<script type="module">
import {cont, inferenceRule} from "https://www.cermatdata.cz/components/math.js";

const result = inferenceRule(
  cont("půjčka", 300, "Kč"),
  inferenceRule(
    cont("úrok", 20, "%"),
    cont("půjčka", 100, "%"),
    { kind: 'ratio' }
  )
);

//Výsledek: úrok = 60 Kč
console.log(`Výsledek: ${result.agent} = ${result.quantity} ${result.entity}`)

</script>

Dedukční strom

Obecný postup vytvoření dedukčního stromu ze zadání úlohy

Konkrétní příklad řešení pro zadání úlohy

import { comp, compRatio, nthPart, rate, ratios, sum } from "../../components/math.js";
import { axiomInput, deduce, last } from "../../utils/deduce-utils.js";

export function kytice() {
  //agent names and entities
  const kyticeAgent = "kytice";
  const chryzatemaAgent = "chryzantéma";
  const ruzeAgent = "růže";
  const staticAgent = "statice";

  const kusEntity = "kus";
  const entity = "cena";

  //axioms
  const rozdilRuze = axiomInput(comp(ruzeAgent, staticAgent, 2, kusEntity), 1);
  const RtoS = axiomInput(compRatio(ruzeAgent, staticAgent, 5 / 4), 2);
  const CHxS = axiomInput(ratios(kyticeAgent, [chryzatemaAgent, staticAgent], [3, 2]), 3);
  const ruzeRate = axiomInput(rate(chryzatemaAgent, 54, entity, kusEntity), 4)
  const chryzantemaRate = axiomInput(rate(chryzatemaAgent, 40, entity, kusEntity), 5)
  const staticeRate = axiomInput(rate(chryzatemaAgent, 35, entity, kusEntity), 6)

  //deduction
  const statice = deduce(
    rozdilRuze,
    RtoS
  )
  const chryzantem = deduce(
    last(statice),
    CHxS,
    nthPart(chryzatemaAgent)
  )
  const ruze = deduce(
    statice,
    rozdilRuze
  )

  return {
    deductionTree: deduce(
      deduce(ruze, ruzeRate),
      deduce(last(statice), staticeRate),
      deduce(chryzantem, chryzantemaRate),
      sum(kyticeAgent, [ruzeAgent, chryzatemaAgent, staticAgent], entity, entity)
    )
  }
}

Další příklady jsou zde

Reprezentace dedukčního stromu

Ke každé úloze lze zobrazit různé reprezentace dedukčního stromu

Vyzkoušej interaktivní rozhodovačku ve formě chatu po jednotlivých krocích s nutností volby z nabízených možností.