Mathematica에서 함수를 어떻게 정의합니까?

Sep 28 2020

나는 쓸 때 W[f_] := Integrate[f[x], {x, 0, π}]나는 바로 그 결론을 내릴 수있다 W[Sin] = 2, W[Cos] = 0, W[Log] = π (-1 + Log[π])등 그러나 나는 정의 드릴 수 없습니다 W[Sin + Cos]또는 W[Sin[Sin]]등 도움을 주시기 바랍니다.

답변

4 RonaldMonson Sep 29 2020 at 11:18

문제는 기능이 기능에서 작동한다는 것입니다.

W[f_] := Integrate[f[x], {x, 0, Pi}]

W기능을 제공해야합니다. 표현식 Sin+Cos또는 Sin[Sin]이러한 WL 기능하지 않기 때문에 실패합니다. 기능적 공간에서 작업 할 때 우리는 구성 연산자 @*를 가지고 \*있지만 일반 표현식과 함께 작동하도록 조정 된 WL의 내장 함수를 사용하려는 경우 충분하지 않습니다. 그러나 기능 공간에서 작동하도록 WL의 기능을 채택하는 한 가지 방법은 FunctionalConstruct다음과 같습니다.

FunctionalConstruct[op_, fs__] := Function[x, op @@ Through[{fs}[x]]];
FunctionalConstruct[op_] := op;

f = FunctionalConstruct[Plus, Sin, Cos];
ga = FunctionalConstruct[Sin, Sin];
gb = FunctionalConstruct[Sin@*Sin];

이러한 명확한 적분에 대해 어떤면에서는 이제 간단히 작성하는 것이 더 자연 스러울 것입니다.

Integrate[f, {0, Pi}]
Integrate[ga, {0, Pi}]
Integrate[gb, {0, Pi}]

기능적 공간이지만 수학으로는 (기능 WRT 목적으로 표현 선회 부정 적분 가변 수를 사용하는 것이 매우 유용하기 때문에 x, y우리는 얻을 등)를 W자동 적분을 수행하기 전에 더미 변수 함수를 적용 :

W[f]
W[ga]
W[gb]

2

파이 StruveH [0, 1]

파이 StruveH [0, 1]

12 ΑλέξανδροςΖεγγ Sep 29 2020 at 03:27

올바른 헤드 / 기능을에 전달했는지 확인하십시오 W. 예를 들어, 적분의 여파 평가는 말할 것도없고 MMA에서 분명히 인식 할 수없는를 Sin[Sin] @ x제공합니다 Sin[Sin][x]. 따라서 하나의 선택적 솔루션이 될 수 있습니다.

W[Sin[#] + Cos[#] &]
W[Sin @* Sin]

@*컴포지션은 어디에 있습니까 ?

8 evanb Sep 29 2020 at 03:47

Sin인수를받는 것 --- Sin[7]은 숫자입니다.

반대로, Sin+Cos논쟁이 필요한 것이 아닙니다! 귀하의 기능은 예를 들어 평가하려고합니다. (Sin+Cos)[7]도움 없이는 이해하지 못합니다.

따라서 W의 인수를 적절하게 인수를 취하는 것으로 바꿔야합니다.

넌 말할 수있다

g[x]:= Sin[x]+Cos[x]
W[g]

예를 들면. 또는 순수 함수 (#)를 사용하여 익명으로 수행 할 수 있습니다.

W[Sin[#]+Cos[#]&]
4 CarlWoll Sep 29 2020 at 04:21

들어 Sin + Cos당신이 정의 할 수 있습니다 SubValues위해 CirclePlus:

CirclePlus[f_, g_][x] := f[x] + g[x]

그때:

W[Sin ⊕ Cos]

2