Matematické Fórum

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

#1 06. 09. 2016 20:15

Gilgraen
Zelenáč
Příspěvky: 4
Reputace:   
 

Matlab - script pro výpočet kombinačního čísla

Hezký večer, mám příklad do školy z Matlabu, už nad tím sedím nějakou dobu a nevím si rady.

Vytvořte M-funkci o dvou vstupních proměnných a jedné výstupní proměnné pro výpočet kombinačních čísel, tj. $(\frac{n}{k}) = \frac{(n-k+1)(n-k+2)...n}{k!}$. Ošetřete, aby se výpočet kombinačních čísel prováděl jen z hodnot vhodných celých nezáporných čísel a aby se při zadání jiných hodnot objevilo chybové hlášení 'Ze zadaných hodnot kombinační číslo nelze určit!'.

Zkoušela jsem

function[N]=nchoosek (n, k)
%CombiCislo
if isscalar(n)&isreal(n)&(n>=0)&floor(n)==n
N=1;
for k
N=(n-k+n)/factorial(k) ;
end
else
error('Ze zadaných hodnot kombinační číslo nelze určit!')
end

Ale hází chybu. Prosím můžete mi někdo poradit? Děkuju moc

PS: Omlouvám se za zlomek místo kombinace, ale tu tady neumím napsat.

Offline

  • (téma jako vyřešené označil(a) Gilgraen)

#2 09. 09. 2016 20:52

Formol
Místo: Praha
Příspěvky: 782
Pozice: krotitel mikroskopů (UHIEM 1. LF UK)
Reputace:   42 
 

Re: Matlab - script pro výpočet kombinačního čísla

↑ Gilgraen:
Ahoj,
tvoje podmínka ignoruje, že máš omezení i na k. Tedy správná podmínka bude:

Code:

  if isscalar(n)&isreal(n)&(n>=0)&(floor(n)==n)&isscalar(k)&isreal(k)&(k>=0)&(floor(k)==k)&(n>=k)

Potom se rozhodně podívej na cyklus for, protože to máš hodně divně. Asi ti něco vypadlo při přepisování. "for k" mi octave nebere... Každopádně ten vzorec v cyklu máš také špatně.

Jde o to, jestli se nějak implicitně předpokládá, že bys měl na té funkci procvičit cykly. Pokud ne, tak bude lepší, když si kombinační číslo přepíšeš do ekvivalentního tvaru:



Pak stačí jen vypočítat tři faktoriály a máš výsledek.

Pokud si máš procvičit cykly, tak "zapomeň" na funkci pro výpočet faktoriálu a vypočítej si čitatel:

Code:

N = 1
for i=(n-k+1):n
  N=N*i;
endfor

Podobně si v cyklu for i=1:n vypočítáš i faktoriál.... Mimochodem, tyhle dva cykly můžeš pomocí podmínky spojit do jednoho. Zkus si to jako cvičení udělat.


Доктор сказал «в морг» — значит в морг!

Offline

 

#3 10. 09. 2016 07:47

Gilgraen
Zelenáč
Příspěvky: 4
Reputace:   
 

Re: Matlab - script pro výpočet kombinačního čísla

↑ Formol: Děkuju moc. Už to chápu .

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson