1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【kintone】標準機能だけで2次方程式を解くアプリ

Last updated at Posted at 2020-11-06

kintoneを使っていて思いませんか?
あ~、2次方程式が解けたらなぁ・・・(´-`).。oO

思いませんよね?

今回は前回の平方根を求めるアプリを流用して、
2次方程式の解を求めるアプリを作ってみたいと思います。

前回の記事↓
【kintone】標準機能だけで平方根の計算をしてみる

アプリを作る

では2次方程式を解くアプリを作っていきましょう。

前回作成した平方根アプリを再利用して作成

前回作成した平方根アプリを再利用します。

image.png

(1)フィールドA(数値)を削除します。

image.png

(2)計算フィールド持ってきて、フィールドコードをAにして一旦保存します。
image.png

(3)今変更したフィールドコードAをDに変更します。そうです、これが判別式Dになります。

フィールドDの計算式は

b*b - 4*a*c

とします。解の公式にでてくる、判別式$D=b^2-4ac$というやつです。

※解の公式ってこういうやつです。→   $x = \frac{-b \pm \sqrt{b^2-4ac} }{2a}$

(4)x0~x9フィールドの計算式のAだったところがDに変わっていることを確認します。
image.png

(5)下図&下表のようにフィールドを追加します。

image.png

フィールド種類 フィールドコード 計算式 備考
数値 a なし
数値 b なし
数値 c なし
文字列(1行) 求める方程式 この表の下に書いてます
文字列(1行) IF(a=0,"X = " & X1,IF( rD>=0, "X1 = " & X1 & " / X2 = " & X2 , "解無し")) & IF(D=0,"(重解)","")
計算 D bb - 4a*c 作成済
計算 rD IF(D>0, x9,IF(D=0,0,-1)) Aの平方根フィールドを書き換えるとよいです。
計算 X1 IF(a=0,-c/b, IF(D>=0, (-b+rD)/(2*a),0)) 解の公式による。フィールドコードのXは大文字
計算 X2 IF(a=0,0,IF(D>=0, (-b-rD)/(2*a),0)) 解の公式による。フィールドコードのXは大文字

↓求める方程式フィールドの計算式(このフィールド自体、なくても良いんだけどせっかくなので)

IF(a=1, "x^2" , IF(a=0,"", IF(a=-1, "-x^2", a & "x^2") ) )
 & IF(a=0,IF(b=1, "x" , IF(b=0,"", IF(b=-1, "x", b & "x") ) )  ,
IF(b=1, " +x" , IF(b=0,"", IF(b=-1, " -x",IF(b>0, " +" & b & "x"," " & b & "x")) ) ))
& IF(AND(a=0,b=0),"aとb両方0にしちゃだめ"  ,IF(c=0, "", IF(c>0, " +"&c , " "&c))& "= 0")

できた&まとめ

これで、アプリを公開!(保存?)して試してみると、ほら!
方程式を解くことができます。(誰得)

2jihou.gif

ここからちょっといじって虚数解にも対応させてみました。
もしかしたらいつか記事にするかもしれません・・・。

2jihoukyo.gif

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?