2014-12-22 2 views
0

다음과 같은 문제를 자동화하기위한 프로그래밍 언어와 방법을 찾고 있습니다. 변수 g = GM/r^2와 변수 g = 9.8, M = 5E25, G = 6.7E-11 중 하나를 제외한 모든 값을 연결하는 수식이 주어지면 어떻게 루틴을 프로그래밍 할 수 있습니까? a) 알 수없는 변수를 식별합니다. b) 기호식으로 공식을 해결합니다. c) 마지막으로 알려진 변수의 값을 대체하고 알 수없는 변수에 대한 방정식을 푸십시오. 저는 프로그래밍 전문가입니다. 그리고 내 마음에 온 유일한 것은 속도가 느린 프로세스였습니다. 속도가 느린 프로세스였습니다. 느린 프로세스에서 하나의 값을 설정하지 않은 변수를 검사하고 그 값에 따라 수식의 적절한 재배치를 사용합니다 알 수없는 것을 계산합니다. (예 : 우리의 경우, 프로그램은 변수가 변수를 확인한 후 알 수 없음을 확인할 때까지 동일한 수식을 사용하지만 r = sqrt (GM/g)을 계산할 준비가 됨 확신합니다. 이 작업을 수행하는 데는 빠른 언어가 있지만 저는 알아 내지 못합니다. 미리 도움을 주셔서 감사합니다.수식과 솔버로 기호 계산

답변

0

글쎄, 여기에 Maxima을 사용하는 한 가지 방법이 있습니다.

eq : g = G * M/r^2; 
known_values : [g = 9.8, M = 5e25, G = 6.7e-11]; 
eq1 : subst (known_values, eq); 
remaining_var : listofvars (eq1); 
solve (eq1, remaining_var); 
    => [r = -5000000*sqrt(670)/7, r = 5000000*sqrt(670)/7] 

당신은 그에서 부동 소수점 값을 얻을 수있는 기능 float을 사용할 수 있습니다.

아마도 Sympy 또는 다른 것으로 처리 할 수도 있습니다.

0

이렇게 간단한 경우 제안하는 접근 방식이 적절합니다.

"느린"프로세스는 알 수없는 변수 (컴파일 된 언어 사용)를 찾기 위해 10 나노초 정도 걸릴 수 있으므로 걱정할 필요가 없습니다.

실제로 기호 계산 프로그램은

g=GM/r² 
G=gr²/M 
M=gr²/G 
r=√GM/g 


// C code 
if (g == 0) g= G * M/(r * r); 
else if (G == 0) G= g * r * r/M; 
else if (M == 0) M= g * r * r/G; 
else r= Math.sqrt(G * M/g); 

는 예를 들어, 무료 Microsoft Mathematics이 그것을 할 수있는 대부분의 프로그래밍 언어에서 retranscript 수, 명시 적 공식을 유도 할 수 있습니다. 그러나이 특별한 경우에는 손으로 직접하십시오.

내장 스크립트가있는 완전히 통합 된 솔루션의 경우 Mathematica, Mathcad, Maple and the like을 생각해보십시오.