문제

메이플에서 프로그래밍 방식으로 테일러 다항식을 사용하려고하지만 다음은 작동하지 않는 것 같습니다 ...

T[6]:=taylor(sin(x),x=Pi/4,6);convert(T[6], polynom, x);
f:=proc(x)
  convert(T[6], polynom, x);
end proc;
f(1);

다음은 모두 작동하지 않습니다.

  • f:=convert(T[6], polynom);
  • f:=convert(T[6], polynom, x);
  • f:=x->convert(T[6], polynom);
  • f:=x->convert(T[6], polynom, x);.

의 정의로 변환의 출력을 복사하고 붙여 넣지 않고이 작업을 수행하는 방법이 있습니까? f?

도움이 되었습니까?

해결책

t를 함수로 정의하는 것도 당연할 수도 있습니다.

T:=y->subs(x=y,convert(taylor(sin(x),x=Pi/4,6),polynom));

T(1);

다른 팁

내가 당신을 올바르게 이해한다면, 이것은 당신이 원하는 것을 달성합니다.

f := proc(z)
    local p :: polynom;
    p := convert(T[6], polynom); 
    return subs(x = z, p)
end proc

절차와 서브와 관련된 몇 가지 초기 답변은 모든 입력에 대해 전체 Taylor 시리즈 파생과 Polynom으로의 전환을 수행합니다. 그것은 매우 비효율적입니다.

Taylor 결과 만 생성하고 Polynom으로 한 번만 전환하면됩니다. 그 결과로 손을 잡고 연산자를 만들 수 있습니다 (포인트에서 다항식을 평가함으로써 원하는만큼 많은 입력에 작용할 수 있습니다. 없이 Taylor 전체 답변을 다시 작성해야합니다).

아래는 인수 x에 대한 주어진 지점에서 평가할 절차 f를 작성하는 방법입니다. 그것은 (잘린) Taylor 시리즈를 계산하고 Polynom Just로 변환합니다. 한 번.

> f:=unapply(convert(taylor(sin(x),x=Pi/4,6),polynom),x):
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top