Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím Vás a prosím moc o pomoc s následujícím příkladem: Napište proceduru v Maplu, kerá k zadanému číslu n náležející do N vrátí(určí) počet cifer.
Moc děkuji všem alespoň za snahu.:-( Už nad tím přemýšlím 3 dny. Pájka.
Offline
↑ jarrro:
Strašně moc Vám děkuji. Ale potřebovala bych vytvořit celou proceduru vytvořit takovýmto podobným způsobem-viz jiný příklad:
Vytvořte proc.,která k danému vektoru (bod v n-rozměrném prostoru) vypočte jeho eukleidovskou normu, tj. jeho vzdálenost od počátku.
> eukl:=proc(sez);
> s:=0:
> for i from 1 to nops(sez) do:
> s:= s+sez[i]^2:
> end do:
> evalf(sqrt(s));
> end proc;
> eukl([4,3,8]);
Offline
↑ Pájka:
Jednoduše to přepíšeš:
pocet := proc (sez); local a; a := log[10](sez)+1; floor(evalf(a)); end proc; pocet(54321);
Offline
↑ gladiator01:
Opravdu to funguje, jsem Vám moc vděčná za pomoc. Prosím, můžete mi ještě říci, k čemu slouží příkaz floor a proč se za n dosadí 10?
Moc děkuji a přeji hezký den.
Offline
↑ Pájka:
Za n se dosadí zadané číslo (to sez), 10 je základ logaritmu - kdyby tam to deset nebylo, tak by maple počítal jako s ln, ne log.
floor - potřebuju jenom celou část, toho čísla, které ti vyjde.
Offline
Zkoušela jsem sama vytvořit další proceduru, nějak mi to vyšlo, ale bohužel ne dobře, a vypadá to mé řešení dost krkolomně..:-( Mohli byste mi, prosím, někdo poradit, kde tam mám chybu nebo jak jinak příklad řešit?
Zadání: Napište proceduru, která zjistí největší společný dělitel dvou čísel a,b pomocí Eukleidova algoritmu:Eukleidův algoritmus: Vyjděte od dvojic čísel a,b. Vždy, když máte dvojici tvořenou různými čísly, vytvořte dvojici novou tak, že vezmete menší z čísel staré dvojice a rozdíl těchto čísel. Opakujte tak dlouho, až budou obě čísla stejná. Toto stejné číslo je NSD(a,b).
Moje řešení:
> pocet:=proc(a,b):
> dokonale:=false;
> if a[i]<b[i] then a[i+1]:=a[i];
> if a[i]<b[i] then b[i+1]:=b[i]-a[i];
> if a[i]>b[i] then a[i+1]:=b[i];
> if a[i]>b[i] then b[i+1]:=a[i]-b[i];
> if a[i]=b[i] then dokonale:=true;
> end if;
> end if;
> end if;
> end if;
> end if;
> end proc;
> pocet(8,12); Error, (in pocet) cannot evaluate boolean: 8[i]-12[i] < 0
Děkuji velice všem za snahu.
Offline
↑ Pájka:
a je jedno číslo (8) a ne pole - tak s ním nemůžeš zacházet jako se polem, ne? A také nikde nevidím jakou má to i hodnotu.
(jestli se to takhle v maple dělá a já říkám blbost, tak promin)
Příště si pro nový příklad založ nové téma.
Offline
↑ gladiator01:
No ano, já tomu programování rozumím totiž asi jak koza petrželi, a pak ať člověk dělá z toho zápočet. Hodiny nad tím každý den sedím, ale nic nedokážu sama vytvořit.:-(
Příště založím nové téma, pardon, já to tu moc neznám jak to funguje..
A jaký tedy má být správně postup té procedury? Děkuji Vám.
Offline
↑ Pájka:
Třeba nějak takhle:
pocet := proc (a, b); local y, x; y := a; x := b; while y <> x do if y < x then x := x-y; elif x < y then y := y-x; end if; end do; end proc; pocet(8, 12)
to <> je nerovná se
Offline
↑ gladiator01:
To je naprosto úžasné, za takovou chvilku jak jste na to mohl přijít?:-(
Offline
↑ Pájka:
Vždyť je to jednoduché, jestli to je v pořádku tak označ téma za vyřešené. Ty na to asi prostě nemáš hlavu. Proto ti to nejde.
Offline
↑ gladiator01:
Právě mám tomu bohužel málo teorie, ve škole jsme udělali jen spoustu jednoduchoučkých příkladů a u zápočtu nás šokovali úplně odlišnou obtížností příkladů. Tak už to chodí. A k Maplu je jen anglická příručka.
Offline