나는 초보자입니다. 내가 원하는문자열을 수학 방정식으로 변환 하시겠습니까?
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
}
로 변환됩니다 : 나는 예를 들어 내 그래픽 계산기 의 입력이 될하기 위해 수학 방정식으로 문자열을 변환 할 변환 방법 알아보기
고맙습니다.
나는 초보자입니다. 내가 원하는문자열을 수학 방정식으로 변환 하시겠습니까?
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
}
로 변환됩니다 : 나는 예를 들어 내 그래픽 계산기 의 입력이 될하기 위해 수학 방정식으로 문자열을 변환 할 변환 방법 알아보기
고맙습니다.
파서를 먼저 작성해야합니다. buil 귀하의 입력 표현의 트리를 땡. 그런 다음이를 사용하여 코드를 생성 할 수 있습니다.
는하지만, 쓰기 파서 : 당신은 당신의 표현의 구문을 설명하는 작은 형식적인 문법이 필요
잘 가지 않는다 "나는 초보자 해요", 당신은 당신의 입력 문자열을 변환해야 AST 표현에 대한 표현.
http://en.wikipedia.org/wiki/Abstract_syntax_tree
마지막으로 당신은 매개 변수의 특정 값에 대한 AST를 평가하는 과정이 필요합니다.
순수한 자바에서는 간단하지 않습니다. 여기에는 좋은 답변이있는 비슷한 질문이 많이 있습니다. 대부분의 솔루션은 인터프리터에서 표현식을 평가하거나 표현식을 구문 분석 (일부 라이브러리를 사용할 수 있음)하거나 심지어 포격하는 것과 관련이 있습니다. 나는 이것을하기 위해 안드로이드에서 무엇이 가능한지 알지 못한다. 그러나 이것에 대한 좋은 대답이 많이있다. 다음과 같이 시작하는 것이 좋습니다. Evaluating a math expression given in string form
이렇게하려면 Java에서 "즉시 사용 가능한"해결책이 없습니다.
그러나 : 필수 답 : 구글 -> "수식 자바로 문자열을 변환"처음 몇 대답은 (같은 : What's a good library for parsing mathematical expressions in java?을) 꽤 좋은 필수 대답 2 :로 문자열을 변환하는 그물에 꽤 많은 라이브러리가있다 수학 표현식을 사용하면 규칙에 따라 주제를 벗어날 수 있으므로 처음 몇 번의 히트 곡을 추천합니다.
대개 수신 할 형식을 선택하고 해당 형식에 대한 고유 파서를 작성하는 것이 좋습니다.
나는 정확한 것을 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.
무엇으로 변환 하시겠습니까? – Maroun
중복 : http : // stackoverflow.com/questions/21137526/convert-a-string-into-mathematical-function-of-x-fx – laalto