« あれ?住吉大社(種貸社)って一寸法師の発祥の地なの?知らなかった。 | トップページ | 長岡天神の満開の桜(2022年4月2日昼&ライトアップされた夜)そして万博記念公園&ららぽーとエキスポシティの桜 »

2022年4月 1日 (金)

ExcelでLAMBDA関数が使えるようになった(14) REDUCEやSCANを使えば反復計算もできる、ということでニュートン・ラフソン法をやってみる。関数f(x)と導関数、初期値を与えると一気に計算してくれる。

反復計算をしたいがどうやったら、、、と思っていたらREDUCEやSCANを使えばできそうということが分かった。

※REDUCE 各値に LAMBDA を適用し、アキュムレーターに合計値を返すことで、配列を累積値に減らします。   

https://support.microsoft.com/ja-jp/office/reduce-%E9%96%A2%E6%95%B0-42e39910-b345-45f3-84b8-0642b568b7cb

※SCAN LAMBDA を各値に適用して配列をスキャンし、各中間値を持つ配列を返します。  

https://support.microsoft.com/ja-jp/office/scan-%E9%96%A2%E6%95%B0-d58dfd11-9969-4439-b2dc-e7062724de29

関数f(x)と導関数f'(x)、初期値を与えると一気に計算してくれるようにしよう。で一番簡単な2の平方根を求めるには

f(x)=x^2-2, f'(x)=2xとすればいい。

こんな感じ。nで反復数を変えられる。

Lambdanewton1

テキストデータ:

n = 10;
f = lambda(x, x^2 - 2);
fd = lambda(x, 2*x);
Newton = lambda(x, 
            let(s, sequence(n),
                reduce(x, s, 
                    lambda(x, dummy,
                        x - f(x)/fd(x)
                    )
                )
            )
        );

Newton2 = lambda(x, 
            let(s, sequence(n),
                scan(x, s, 
                    lambda(x, dummy,
                        x - f(x)/fd(x)
                    )
                )
            )
        );

 

実行例。初期値を引数にとるNewtonとするとREDUCEが使われていきなり最終結果が、Newton2とすると経過まで計算できる。

Lambdanewton2

さてなぜこれをやろうと思ったかというと(続く)。

過去にやったもの:

ExcelでLAMBDA関数が突然使えるようになった。4段4次のルンゲクッタ法がワークシートだけ(VBA使わずに)で簡単に計算できるようになった。まずはローレンツ方程式を計算してみる。

ExcelでLAMBDA関数が突然使えるようになった(2) 5次のルンゲクッタフェールベルグ法でローレンツ方程式をワークシートだけで(VBA使わずに)計算

ExcelでLAMBDA関数が突然使えるようになった(3) LET、SEQUENCE、IFSと組み合わせてワンライナー(1セル)で数値積分(シンプソンの積分公式)を計算

ExcelでLAMBDA関数が突然使えるようになった(4) LET、SEQUENCE、IFSと組み合わせてクロソイド曲線を計算するオリジナルの関数を作る。セルに=Clothoid_X(A2)とか入れるだけで計算できる。

ExcelでLAMBDA関数が突然使えるようになった(5)なんと再帰まで使える。階乗とフィボナッチ数列で試してみた。

ExcelでLAMBDA関数が使えるようになった(7) 離散フーリエ変換(DFT=Discrete Fourier Transform)(修正版)と逆変換(IDFT)をLAMBDA、LET、SEQUENCE、MAKEARRAY、MAP、複素数関数(IMEXP,IMPRODUCTなど)を組み合わせてVBAも分析ツールもなしに関数として実現する。

ExcelでLAMBDA関数が使えるようになった(8) 4段4次のルンゲクッタ法をLAMBDAだけ(VBAもセルの計算も使わずに)で実現、RK4(t, x, y, z)だけで次の時間ステップが計算できるようにした。例はもちろんローレンツ方程式。

ExcelでLAMBDA関数が使えるようになった(9)リーマン・ゼータ関数ζ(z)をLAMBDA、REDUCE、SEQUENCE、複素数関数を組み合わせて=Zeta(1/2+2i)などで計算できるようにした。

ExcelでLAMBDA関数が使えるようになった(10) Sパラメータのような複素数データの実部・虚部のRIとデシベル、位相のdBを2列を選択するだけで dB2RI(範囲), RI2dB(範囲)でLAMBDA, MAKEARRAY,LETを使って相互に計算できるようにする。

ExcelでLAMBDA関数が使えるようになった(9の追記)リーマン・ゼータ関数ζ(z)をLAMBDA、REDUCE、SEQUENCE、複素数関数を組み合わせて=Zeta(1/2+2i)などで計算できるようにしたので、それをMAP関数を使って3次元グラフにしてみる。

ExcelでLAMBDA関数が使えるようになった(11) 複数のセルの並びから1つ飛ばしとか2つ飛ばしとかでデータを取り出す関数PickOut(範囲、何行ずつか、何列ずつか)を作った。よく変なデータの並びで取り出すのがめっちゃ困ることがあるので。

ExcelでLAMBDA関数が使えるようになった(12) VBAを使わずに複素行列の積、逆行列などをLET, MAKEARRAY, INDEXと実行列のMMULT, MINVERSEなどを組み合わせて実現する(IMMULT, IMINVERSE)

ExcelでLAMBDA関数が使えるようになった(13) 工程能力指数Cpkと平均と標準偏差、最大、最小、変動係数CVを一度に求める関数DataAnalysisを作った。=DataAnalysis(データ範囲, 上限値, 下限値)のようにつかう。

 

« あれ?住吉大社(種貸社)って一寸法師の発祥の地なの?知らなかった。 | トップページ | 長岡天神の満開の桜(2022年4月2日昼&ライトアップされた夜)そして万博記念公園&ららぽーとエキスポシティの桜 »

パソコン・インターネット」カテゴリの記事

学問・資格」カテゴリの記事

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

コメント

コメントを書く

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

« あれ?住吉大社(種貸社)って一寸法師の発祥の地なの?知らなかった。 | トップページ | 長岡天神の満開の桜(2022年4月2日昼&ライトアップされた夜)そして万博記念公園&ららぽーとエキスポシティの桜 »

最近の記事

最近のコメント

2024年12月
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        
フォト
無料ブログはココログ