Binomialkoeffizient [matlab]

Neue Frage »

tigerbine Auf diesen Beitrag antworten »
Binomialkoeffizient [matlab]
Gibt es für einen Befehl?

Oder "muss" ich über die Fakultäten mit factorial ausweichen?

Danke,
tigerbine Wink
amoxypen Auf diesen Beitrag antworten »
Binomialk. in matlab
nein es gitb leider keine funktion in matlab dafür.
Aber diese läst sich mit der Formel für den Binomialk. selber implementieren.


function [b]=binomialk(n,k)
%Biniomialkoeffizient Berechnung des Binomialkoeffizienten
%
%Input : n,k Zahlen aus R
%Output: b Binomialkoeffiezent aus R

%Berechnung
b=(factorial(n))/(factorial(k)*factorial(n-k));


gespeicher wird das ganze als "binomialk.m" Datei in dem Ordner in welchen man es braucht.
Nun ist die Funktion "binomial(n,k)" über die Eingabe Shell verwendbar.
tigerbine Auf diesen Beitrag antworten »
RE: Binomialk. in matlab
Danke.
marodeur Auf diesen Beitrag antworten »
RE: Binomialk. in matlab
falsch! nchoosek

Zitat:
NCHOOSEK Binomial coefficient or all combinations.
NCHOOSEK(N,K) where N and K are non-negative integers returns N!/K!(N-K)!.
This is the number of combinations of N things taken K at a time.
When a coefficient is large, a warning will be produced indicating
possible inexact results. In such cases, the result is only accurate
to 15 digits for double-precision inputs, or 8 digits for single-precision
inputs.

NCHOOSEK(V,K) where V is a vector of length N, produces a matrix
with N!/K!(N-K)! rows and K columns. Each row of the result has K of
the elements in the vector V. This syntax is only practical for
situations where N is less than about 15.

Class support for inputs N,K,V:
float: double, single
tigerbine Auf diesen Beitrag antworten »
RE: Binomialk. in matlab
Noch besser.
SchnippSchnappp Auf diesen Beitrag antworten »

Mal eine ganz dumme Frage, wieso lassen sich große Fakultäten mit NCHOOSEK berechnen und mit der manuellen Methode b=(factorial(n))/(factorial(k)*factorial(n-k)); nicht?
 
 
HAL 9000 Auf diesen Beitrag antworten »

Das Problem ist der Wertebereich der darstellbaren Zahlen: 64 Bit Floatingpoint (in C/C++: double) gestattet nur Werte bis ca. , das reicht gerade mal bis .


Den Binomialkoeffizienten kann man aber auch geschickter berechnen, so dass nicht derart große Zwischenresultate auftauchen:

,

(übrigens gültig für beliebige reelle Zahlen und natürliche Zahlen ), vielleicht erledigt es Matlab intern auch auf diese Weise. Augenzwinkern
Leopold Auf diesen Beitrag antworten »

Zitat:
Original von HAL 9000
64 Bit Floatingpoint (in C/C++: double) gestattet "nur" Werte bis ca. , das reicht gerade mal bis .


Das ist nur

100000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000-mal

so viel wie Atome im Universum. Big Laugh
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »