人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

消費税込の値段から、消費税抜きの値段を求めたい場合、消費税込の値段が100円であった場合、100 = n * 1.05の解を求めれば良い訳ですが、

これをCで書くと、こんな感じ、
float tax(int total) {
return (float)total/1.05;
}
int main()
{
float original = tax(100);
printf("%f\n", original);
}

Lispだとこんな感じ
(defun tax (x)
(/ x 1.05))
(tax 100)

Rubyでもこんな感じ
def tax(n)
n/1.05
end
p tax(100)

で、直感的に100 = n * 1.05のnの解を求めてくれるような数式は作れていなくて、一度数式を再構築してあげないと解を求められないかと思うのですが、

これをプログラムを利用して、100 = n * 1.05と書いた場合、nが簡単に求められるようなプログラムを書くことは可能でしょうか?
言語は問いません。

●質問者: tomoyuki28jp
●カテゴリ:コンピュータ
✍キーワード:def Lisp Ruby TOTAL プログラム
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● garyo
●27ポイント

代数的に計算する(式を解く)のであればMathematicaを利用すれば良いでしょう。

http://cobalt.chem.es.osaka-u.ac.jp/miyasaka/joho/041012.html

式を解かずに値が知りたいのであれば

ニュートン法なりの近似計算をプログラムでかけば良いでしょう。

http://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%8...

ようはnの値を少しずつ変えて行き、式を満たすnを探すわけです。

◎質問者からの返答

早速のご解答どうもありがとうございます。

正にこういうことを求めていました。

新たなシステムを導入する必要がありるのですね。。普段利用しているプログラム言語で解決する方法があれば、と思っていたのですが。

大変参考になりました。

どうもありがとうございす!


2 ● pyopyopyo
●27ポイント

可能です. maxima や Mathematica を使うと簡単に書けます.

例えば maxima であれば,方程式 100=x*1.05 を x について解く場合は

solve([100=x*1.05], [x]);

と記述します.

maxima は,他にも,連立方程式,微分積分などいろいろな事が出来ます.詳細が以下のURLに良くまとまっているので, よろしかったら参考にしてください.

http://phe.phyas.aichi-edu.ac.jp/~cyamauch/maxima/

◎質問者からの返答

解答ありがとうございます!

サンプルコードまでつけて頂いて、大変参考になりました。

このシステムって、プログラム言語から呼び出すことはできたりしませんでしょうか?

今後とも宜しくお願いします。


3 ● m-nisi
●26ポイント

MATLABでも同様の事ができます

(SymbolicMathToolboxが入っていれば)

a = solve('100=n*1.05')

またPerlやRubyなどから呼び出して実行する事も可能です

(起動のための時間はかかりますが)

◎質問者からの返答

RubyからMathematicaを呼び出せることを確認とれました。(パッケージがちょっと古そうなのが気になりましたが。。)

貴重な情報どうもありがとうございました!


4 ● nineapple
●10ポイント

私はMathematicaをお勧めします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ