« 玉を落として弾む回数とそれまでの時間で重力加速度gを計算する式(Fermat Libratyより)を実際に導出してみた。跳ね返り係数で表されるのか! | トップページ | 松屋でうまとろ豚たま牛めし豚汁生野菜セット(ご飯大盛)を食す。 »

2020年12月 9日 (水)

ExcelのLET関数を使って、2次方程式の解を式のまま解く(複素解も実数解もどちらでも計算できる)

こういうニュースを見た。

Excelの数式言語で独自のカスタム関数を定義できる「LAMBDA」をMicrosoftが発表

おお、ラムダ式が使えるようになるのか。

調べていくうちに、LET関数というのもすでに実装されているとのこと。

「Excel」の新関数「LET」が正式版に ~“変数”を使って可読性と計算速度をアップ

なるほど。ちょっとこれを使って何かやってみよう。

適当な複雑さは、、、2次方程式くらい?

複素解になる可能性があるのでifによる場合分けもあるしちょうどよさそう。

ネストもインデントも付けられるというのも便利そう。

LET関数(数式で変数を使う)

ではやってみた。

a*x^2+b*x+c=0を解くわけですが、a,b,cの入力セルにa_,b_,c_と名前を付けたうえで、、、

これ。このままセルにコピペするといいです。プラスの方とマイナスの方。

=LET(
  a,a_,
  b,b_,
  c,c_,
  det,LET(a,a_,b,b_,c,c_,b^2-4*a*c),
  IF(det>0,
    (-b+SQRT(det))/(2*a),
    COMPLEX(-b/(2*a),SQRT(-det)/(2*a))
  )
)

=LET(
  a,a_,
  b,b_,
  c,c_,
  det,LET(a,a_,b,b_,c,c_,b^2-4*a*c),
  IF(det>0,
    (-b-SQRT(det))/(2*a),
    COMPLEX(-b/(2*a),-SQRT(-det)/(2*a))
  )

)

 

結果:複素解のとき

Excellet02

実数解のとき

Excellet03

いちいち区別しなくても一瞬で解が求まる。

これ、結構便利な機能かも。実用的な使い方考えよう。

« 玉を落として弾む回数とそれまでの時間で重力加速度gを計算する式(Fermat Libratyより)を実際に導出してみた。跳ね返り係数で表されるのか! | トップページ | 松屋でうまとろ豚たま牛めし豚汁生野菜セット(ご飯大盛)を食す。 »

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 玉を落として弾む回数とそれまでの時間で重力加速度gを計算する式(Fermat Libratyより)を実際に導出してみた。跳ね返り係数で表されるのか! | トップページ | 松屋でうまとろ豚たま牛めし豚汁生野菜セット(ご飯大盛)を食す。 »

最近の記事

2021年3月
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
フォト
無料ブログはココログ