2014-01-15 5 views
2

나는 초보자입니다. 내가 원하는문자열을 수학 방정식으로 변환 하시겠습니까?

cos(x+1)+ ln(x)

그래서 우리는

double x = -10; 
for (int i=0; i<100; i++) { 
double y=Math.cos(x+1)+Math.log(x) 
x=x+0.5   
} 

로 변환됩니다 : 나는 예를 들어 내 그래픽 계산기 의 입력이 될하기 위해 수학 방정식으로 문자열을 변환 할 변환 방법 알아보기

고맙습니다.

+1

무엇으로 변환 하시겠습니까? – Maroun

+0

중복 : http : // stackoverflow.com/questions/21137526/convert-a-string-into-mathematical-function-of-x-fx – laalto

답변

1

파서를 먼저 작성해야합니다. buil 귀하의 입력 표현의 트리를 땡. 그런 다음이를 사용하여 코드를 생성 할 수 있습니다.

는하지만, 쓰기 파서 : 당신은 당신의 표현의 구문을 설명하는 작은 형식적인 문법이 필요

1

잘 가지 않는다 "나는 초보자 해요", 당신은 당신의 입력 문자열을 변환해야 AST 표현에 대한 표현.

http://en.wikipedia.org/wiki/Abstract_syntax_tree

마지막으로 당신은 매개 변수의 특정 값에 대한 AST를 평가하는 과정이 필요합니다.

1

순수한 자바에서는 간단하지 않습니다. 여기에는 좋은 답변이있는 비슷한 질문이 많이 있습니다. 대부분의 솔루션은 인터프리터에서 표현식을 평가하거나 표현식을 구문 분석 (일부 라이브러리를 사용할 수 있음)하거나 심지어 포격하는 것과 관련이 있습니다. 나는 이것을하기 위해 안드로이드에서 무엇이 가능한지 알지 못한다. 그러나 이것에 대한 좋은 대답이 많이있다. 다음과 같이 시작하는 것이 좋습니다. Evaluating a math expression given in string form

2

이렇게하려면 Java에서 "즉시 사용 가능한"해결책이 없습니다.

그러나 : 필수 답 : 구글 -> "수식 자바로 문자열을 변환"처음 몇 대답은 (같은 : What's a good library for parsing mathematical expressions in java?을) 꽤 좋은 필수 대답 2 :로 문자열을 변환하는 그물에 꽤 많은 라이브러리가있다 수학 표현식을 사용하면 규칙에 따라 주제를 벗어날 수 있으므로 처음 몇 번의 히트 곡을 추천합니다.

대개 수신 할 형식을 선택하고 해당 형식에 대한 고유 파서를 작성하는 것이 좋습니다.

0

나는 정확한 것을 NCalc을 사용하여 만들었습니다. 사용자의 문자열 표현식을 전달하고, 변수를 평가할 값으로 바꾼 다음 Evaluate 메서드를 사용하고 이중으로 구문 분석합니다. 입력 주어진 예

private double Function(double t, double y) 
    { 
     NCalc.Expression expression = new NCalc.Expression(this.Expression); 
     expression.Parameters["t"] = t; 
     expression.Parameters["y"] = y; 

     double value; 

     double.TryParse(expression.Evaluate().ToString(), out value); 

     return value;   
    } 

, t = 0.5 및 y = 1 식 "4 * 및 y + 탄 (2 * t)"우리는 문자열 "4 * 1 + 탄을 평가할 것이다 (2 * .5) "NCalc 사용.

NCalc는 사용자의 문자열을 구문 분석 할 수 없거나 함수의 데이터 유형이 다른 경우 예외를 throw합니다. 나는 그것을 연마하고있다.

나는 또한 같은 질문을했다 here.

관련 문제