
「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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
排他的論理和 BCC(水平パリテ...
-
水位変化の計算プログラムの作...
-
CとFORTRANの計算速度はどちら...
-
EXCELなどで「返す」という表現
-
C++ でファイルを消す関数(??)
-
C言語 log実装
-
エクセルで特定のセルのみを任...
-
VB6で正確なミリ秒を計測したい...
-
fortranでプログラムをつくった...
-
趣味で「乗換案内」みたいなソ...
-
Excel VBA TREND関数について
-
変化させるセルが変化しない
-
VBAで電卓を作成する
-
勤怠管理表を作成しています、...
-
関数を使わないで日付の計算を...
-
モジュラス103の計算とは何でし...
-
VBAでの勤務時間計算
-
C言語で N行*M列 の逆行列を求...
-
切り上げたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
CとFORTRANの計算速度はどちら...
-
C言語についてです。 再帰を使...
-
matlabで計算終了
-
エクセルで特定のセルのみを任...
-
Visual C++でdebugとreleaseで...
-
VBAで関数をつくる
-
数値計算の高速化 (cos, sin, exp)
-
引き放し法による除算アルゴリ...
-
傾いた四角形内の範囲の条件式
-
趣味で「乗換案内」みたいなソ...
-
三菱シーケンサー works2 の日...
-
バッチファイルでウインドウを...
-
y=(x^2 +3x+1)^4を微分の定義を...
-
VBAでの勤務時間計算
-
モジュラス103の計算とは何でし...
おすすめ情報