「1/2+1/3と引数を渡して、5/6という返り値を得る」という汎用のライブラリってありますでしょうか?
現状では1/2+1/3=0.5+0.33333333=0.833333333と計算
↓
continued fractions(http://mathforum.org/library/drmath/view/51886.h …
の手法で分数に変換してます。
しかし、近似解であり厳密解でないため、収束条件をかえると違う値を返してきます。
「MathematicaやMapleというalgebra softwareをC#から呼び出す」と簡単に実装できるのですが
単に分数計算するためだけなのに○十万円するのはちょっと、。。
で、
(1)商用であってもいいんだけど、できれば1万円以下
(2).netから呼べる。
(3)分数の厳密解を返す
みたいなものをご存知のかたがおられましたらよろしくご教示ください。
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
若干ずれた回答かもしれませんが、外部から他の数式処理システム呼び出してもよく、市販の数式処理ソフトが高価な事が問題なのであれば、Maximaのようなフリーのものを使うというのはダメでしょうか?
私はMaximaしか使ったことありませんし、外部から呼び出したことはないので、連携のしやすさなどはちょっとわからないのですが、フリーの数式処理ソフトは結構あるみたいですよ。
http://ja.wikipedia.org/wiki/%E6%95%B0%E5%BC%8F% …
この回答への補足
みなさんご回答ありがとうございました。
「Maximaにお伺いをたてる→答えをもらう」方式で解決させました。
後学のために記すと、
1.SocketServerを作って、任意のポート(m_PortNum)をlistenする。
2.1.のあと、maxima.bat -s m_PortNumとすると、MaximaがClientになってSocketServerに自動接続する(IPアドレスをどのように処理and/or指定するのかは不明だが、ローカルPC同士なので127.0.0.1で決め打ち?)
3.ServerとMaxima間でtalk開始。
MaximaがMathematicaやMapleに劣らない強力なツールであることも分かりました。
ありがとうございます。
Maximaには十分ポテンシャルがあるようですね。
ただ.netとの連携がMathematicaやMapleほどではないようです。
Googleすると http://www.math.utexas.edu/pipermail/maxima/2009 …
という記事をみつけました。
ややダサい連携方式のようにも思えますが、この方法とNo2さんご指摘のRuby方式と
両者を比較して実現可能性が高いもので作りこみたいと思います。
No.4
- 回答日時:
C#なら、分子と分母を持ったクラスに定義して、演算子をオーバーロードして分数計算するようにすれば、そんなに難しいことでは無いと思うのですが。
例えば、class rとして定義。
コンストラクタとして
r(int 分子, int 分母)
r(int 分子) // 分母=1
とすれば
> {(5.5+25/15)÷73.7+12/15}-152 }
→ ( r(5,10) + r(25) / r(15) ) / r(737,10) + r(12)/r(15) - r(152) )
でいいはずです。
整数の桁を考えなければ、そんなに難しいことじゃないですよ。
No.3
- 回答日時:
「式を (文字列かなにかで) 与えたら計算してくれる」というのと「(単に) 計算する」というのとでは難易度が違うのでねぇ.
後者は, 例えば Gnu MP のラッパーがあるみたいなのでそれでなんとかできないかな. 前者も, たぶん (構文解釈として) 調べればあるんじゃないかなぁ.
No.2
- 回答日時:
rubyという言語はrationalという型(クラス)をもっています。
これは、分数を計算するための型です。
---------------------------------
a = Rational(1,2)
b = Rational(1,3)
c = a + b
p c
-------------------------
上記はrubyのコードですが
a = 1/2
b = 1/3
c = a+ b
cの内容を表示
を行なっています。
上記を実行すると
5/6が結果として得られます。
rubyのこの機能を使用すればよいかと思います。
尚、C#から直接呼び出したい場合は、
マイクロソフトからironruby(.NETで動作するruby互換のスクリプトエンジン)
が提供されています。
以下のURLを参照ください。
ironruby
http://ironruby.net/
Rational クラス
http://www.ruby-lang.org/ja/old-man/html/Rationa …
ruby本家
http://www.ruby-lang.org/ja/
C#からironrubyを呼び出す方法
http://www.m-tea.info/2009/12/c-ironruby-1.html
No.1
- 回答日時:
(b/a)+(d/c)=(ad+bc)/acですね。
そこで、分母と分子をメンバーとして持つような構造体を
typedef struct {
int bunbo;
int bunshi;
} bunsuu;
のように定義して、
bunsuu f(bunsuu x, bunsuu y);
というプロトタイプを持つ関数を書けばよいのではないでしょうか。
そういう話ではなくて、別のことをおっしゃっていますか?
早々の解答ありがとうございます。
>そういう話ではなくて、別のことをおっしゃっていますか?
質問文がやや誤解させるもので申し訳ございません。
構造型を定義して、自前で通分・約分する関数を作って、演算オペレータを解釈して、{}()の優先順位を判断して...は正しい方向性かと思います。
しかし、たとえば{(5.5+25/15)÷73.7+12/15}-152みたいな式を与えて、
分数での厳密解を得るものは難しくて、私には作れそうもありません。
で、{(5.5+25/15)÷73.7+12/15}を与えると答え=○○/△△を返す汎用ライブラリがあれば..
ということであります。
既述したように○十万円する数式処理システムは、一発で解答を出す由でありますが
如何せん庶民には手が届きません~~
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- 生物学 【生命科学】ヒトが1日に消費するATP量?(精度を変えて再計算) 3 2022/10/07 18:48
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- 物理学 単位変換?次元解析?について質問です 1 2022/04/10 21:31
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- 投資・株式の税金 一般口座で同一銘柄の総平均法のことで 1 2023/02/27 22:08
- 統計学 不偏分散について 3 2022/03/29 15:57
- 数学 虚数単位:i、この4乗根を求める解答したものの疑問です。 1 2022/10/25 00:43
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
C言語の課題で、1年の秒数を計...
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
C言語についてです。 再帰を使...
-
VBとVBAの違い
-
傾いた四角形内の範囲の条件式
-
骨折リスク評価のFRAXについて...
-
チェックデジット計算できる関...
-
入射角反射角
-
バッチファイルでウインドウを...
-
C++言語で、レナードジョーン...
-
2進数の乗算をc言語で計算した...
-
べき乗の計算が遅い理由
-
数値計算の高速化 (cos, sin, exp)
-
Vba Cells.Findについて教えて...
-
ExcelのマクロVBA動作を軽くす...
-
VBAの再計算が反映されない件に...
-
fortran πについて
-
C言語についての質問です。 ル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
Visual C++でdebugとreleaseで...
-
変化させるセルが変化しない
-
骨折リスク評価のFRAXについて...
-
C# 計算処理中に実行中ウィン...
-
VBAでの勤務時間計算
-
べき乗の計算が遅い理由
-
C言語についてです。 再帰を使...
-
Excel VBAにてFFT
-
数値計算の高速化 (cos, sin, exp)
-
VBとVBAの違い
-
VB6で正確なミリ秒を計測したい...
-
スレッド処理からダイアログを...
-
matlabで計算終了
おすすめ情報