2017-05-11 16 views
3

x1[1]x2[1]을 대신 입력하는 기능을 설정하는 데 어려움이 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.Maple - 방정식으로 대체

내 코드는 다음과 같습니다 F에서

restart; 
with(LinearAlgebra); 
x1[1] := -2+1606*alpha; 
x2[1] := 2+400*alpha; 
f := proc (alpha) options operator, arrow; (-x1[1]^2+1)^2+100*(-x1[1]^2+x2[1])^2 end proc; 

출력은 x1[1]x2[1] 잎 원하는대로 -2+1600*alpha2+400*alpha로를 대체하지 않습니다.

f(0);

는 아래 함수에 의해 g 같이 I 물리적 자신에 -2+1606*alpha 2+400*alpha 및 대체 할 수 409

의 원하는 출력을 제공하지 않는다. 이것이 내가 무엇을 원하는지는 모르겠지만, x1[1]x2[1]이로 설정되어 있고 수동으로하지 않기를 바란다.

g := proc (alpha) options operator, arrow; (1-(1606*alpha-2)^2)^2+100*(2+400*alpha-(1606*alpha-2)^2)^2 end proc 
g(0); 

여기서 g(0);은 원하는대로 409를 제공합니다.

내 그림에 메이플 출력이 나타나는 방식에 대한 아래 사진을 첨부했습니다. 당신이 식에 연산자 절차를 적용 할 때

enter image description here

+1

안녕하세요 학생 201. 나는 너의 질문을 좋아한다. 그것은 잘 생각하고 적절하게 독자의 상상력에 아무것도 남기지 않습니다. 하지만 한 노트 : 백틱 (')으로 인라인 코드를 포맷 할 수 있습니다. – Therkel

답변

2

, 단풍 나무는 전에 평가를한다. 식

f2 := alpha -> (-x1[1]^2+1)^2+100*(-x1[1]^2+x2[1])^2; 

다음 메이플 모든 alpha 찾고있는 "화살표"표기를 사용하는 것과 동일하다

f := proc (alpha) options operator, arrow; (-x1[1]^2+1)^2+100*(-x1[1]^2+x2[1])^2 end proc; 

있다. 아무 것도 없다. 그런 다음 f(0)을 호출하면 표현식은 연산자 호출로 (존재하지 않는) alpha으로 평가됩니다. 따라서 x에 대해서는 f(x) = f(0)입니다. From the help page :

옵션 화살표의 사용은 또한 매개 변수 목록에 운영자 식 이외의 지역 이름을 추가 메이플 단순화 규칙을 사용하지 않습니다. 이 옵션은 모듈에는 의미가 없습니다.

대신에, 당신이 할 수있는 것은 평가 표현의 연산자를 반환 unapply 연산자를 사용합니다. 함수 내용으로 변수 expr을 정의하면이 과정이 조금 더 명확 해집니다.

expr := (-x1[1]^2+1)^2+100*(-x1[1]^2+x2[1])^2; 

f := alpha -> expr; 
h := unapply(expr, alpha); 

h(0); # returns 409