2017-05-02 22 views
-1

私は非合理的な数(平方根など)と複素数を扱うJavaでプログラムを作っています。私は数値計算でプログラムを作ろうとしていましたが、丸め誤差があります。記号的に記憶された数学的な値

  • I:(。つまり、格納値を何丸めはこれらの性質を持っている行われませんように)、このようなsqrt(2)iを使用するなどして評価しません - 象徴値を格納することができますこれを行う方法はあります数学の方程式を評価する必要はありません、私はオペレータが
  • をオーバーロードしたくないいない変数
  • との表現は
  • を使用する分画、複素数、Matriciesと根/大国
  • は好ましくは簡単に持っている必要があります簡単になりますそれができるときの表現
  • あなたはJavaがサポートしているスクリプト言語でこれらの式を指定して保存することができ表現
+1

質問がオフトピックですスタックオーバーフローのために、彼らは有害な回答やスパムを引き付ける傾向があります。代わりに、問題を説明し、それを解決するためにこれまでに何が行われているかを記述します。 – GhostCat

+0

"オペレータのオーバーロードが嫌いです。" - Javaはオペレータのオーバーロードをサポートしていないため、良いです。 (文字列の連結を容易にするために、Stringクラスだけが '+'演算子のオーバーロードを持っています。) –

+0

評価が遅れても、精度は向上しません。 –

答えて

1

次の手順を使用して問題を解決することができます:ブック、ツール、ソフトウェアライブラリ、チュートリアルや他のオフサイトのリソースをお勧めしますか見つけるために私たちを求めて

import org.matheclipse.core.eval.ExprEvaluator; 
import org.matheclipse.core.expression.F; 
import org.matheclipse.core.interfaces.IExpr; 
import org.matheclipse.parser.client.SyntaxError; 
import org.matheclipse.parser.client.math.MathException; 

public class SymbolicSO43739728 { 

    public static void main(String[] args) { 
     try { 
      ExprEvaluator util = new ExprEvaluator(); 
      // (3/4)*(4/3)*Sqrt(2)*I 
      IExpr formula = F.Times(F.QQ(3, 4), F.QQ(4, 3), F.Sqrt(F.ZZ(2)), F.CI); 

      // symbolic evaluation 
      IExpr result = util.evaluate(formula); 
      // print: I*Sqrt(2) 
      System.out.println(result.toString()); 

      // numerical evaluations 
      result = util.evaluate(F.N(formula)); 
      // I*1.4142135623730951 
      System.out.println(result.toString()); 

     } catch (SyntaxError e) { 
      // catch Symja parser errors here 
      System.out.println(e.getMessage()); 
     } catch (MathException me) { 
      // catch Symja math errors here 
      System.out.println(me.getMessage()); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } catch (final StackOverflowError soe) { 
      System.out.println(soe.getMessage()); 
     } catch (final OutOfMemoryError oome) { 
      System.out.println(oome.getMessage()); 
     } 
    } 
} 
0

から数値を取得する - javascriptの、ルビー、パイソン、グルーヴィー、など私はあなたには、いくつかは、きちんと見つけることができますかなり確信していますあなたが言及したより高度な数学機能を評価できるPythonの数学ライブラリです。 JavaのSymja project

関連する問題