this Pochhammer function을 말하는 것으로 가정합니다. pochhammer
(대문자로 변환하지 않음)은 의 일부이며, Matlab의 Symbolic Math Toolbox에서 사용할 수있는 별도의 환경입니다. Matlab 명령 창에 mupad
을 입력하면 MuPAD에 액세스 할 수 있습니다.
그러나 일반적인 Matlab 사용자와 마찬가지로 Matlab 자체에서 pochhammer
함수를 사용하여 프로그램을 사용하려면 발견 한대로 일반적인 명령 창이나 편집기에서 일반 명령 창이나 편집기에서 실행할 수 없습니다. 대신
evalin(symengine,'pochhammer(-3,2)')
또는
feval(symengine,'pochhammer',-3,2)
는
more here을 참조하십시오 더 많은 유연성을 사용해야합니다. 이것들은 모두 결과로 기호 숫자를 반환하며 스칼라 입력에 대해서만 작동합니다. 사용 배정도 출력을 필요로하고 (만 두 번째 작동
n
를) 벡터 입력이있는 경우도 쓸 수 있도록
mfun('pochhammer',-3,-3:3)
이, MuPAD의 map
기능을 사용하는 것과 같습니다 :
feval(symengine,'map',sym(-3:3),'n->pochhammer(-3,n)')
그러나 상징적 인 수학으로 작업하지 않는 경우에는 완전히 배정도 솔루션 대신이 함수를 사용할 이유가 없습니다. Pochhammer symbol 두 gamma
함수의 비율로 간단하게 정의되며, 동일한 크기 또는 스칼라이어야 (x
및 n
효율적으로 구현 될 수있다 - 또한 둘 x
도 x-n
제로 어디 gamma function 정수 이하일 수 없다) 단수 : 정수이다
poch = @(x,n)gamma(x+n)./gamma(x);
n
경우와 x
당신은 출력이 정확히 정수인지 확인 round
를 사용해야합니다. 유일한 단점은 x
및/또는 n
의 충분히 큰 값에 대해이 순진 구현이 Inf
(또는 NaN
)으로 오버플로된다는 것입니다. 이 경우 기호 버전을 사용하는 것과 같은 다른 작업을 수행해야합니다 (다시 캐스팅 할 때 Inf
을 반환하거나 반환하지 않을 수도 있음). n
(스칼라 n>=0
)의 정수 값를 들어, 다음과 같이도 정수이이 gamma
버전보다 최대 20 배 느린 될 수 있음을
poch = @(x,n)prod(bsxfun(@plus,x(:),0:n-1),2);
주를 사용할 수 있습니다.
코드 수정에 도움이 필요하면 작동하지 않는 코드를 표시해야합니다. 누군가가 당신에게 작업 코드를 건네기를 원한다면, 당신은 틀린 장소에 있습니다. –