Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

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