// Learn more about F# at http://fsharp.org
// See the 'F# Tutorial' project for more help.
let DataX=[|1.0;2.0;3.0;4.0|]
let DataY=[|4.5;5.7;7.3;8.5|]
let rec pi1 x i re j=
if j==4 then re
elif i==j then pi1 x i re j+1
else pi1 x i (re*x-re*DataX.[j]) j+1
let rec pi2 (i re j)=
if j>==4 then re
elif i==j then pi2 i re j+1
else pi2 i re*(DataX.[j]-DataX.[i]) j++
let fl (x i)=
pi1 x i 1 0 / pi2 i 1 0
let rec Lagrange (x sum i)=
if i==4 then sum
else Lagrange x sum+(fl x i) i+1
[<EntryPoint>]
let main argv =
printfn "%A\n\n" argv
printf "%f" Lagrange 1.4 0 0
0 // return an integer exit code
F#を触ってみたのですが
F#を触ってみたのですが
ラグランジュ補間をやってみようと思って自分なりに調べながら書き書きしてたのですが、どうもよくわからなくなったので
エラーが出たりしたのですが何をどう直せばいいのかよくわからないもので、何がどう間違っているのか
Re: F#を触ってみたのですが
更新
治らず
// Learn more about F# at http://fsharp.org
// See the 'F# Tutorial' project for more help.
let DataX=[|1.0;2.0;3.0;4.0|]
let DataY=[|4.5;5.7;7.3;8.5|]
let rec pi x i re j=
if j==4 then re
elif i==j then pi x i re j+1
else pi x i re*(x-DataX.[j]) j+1
let fl x i=
DataY.[i] * (pi x i 1.0 0) / (pi DataX.[i] i 1.0 0)
let rec Lagrange x sum i=
if i==4 then sum
else Lagrange x sum+(fl x i) i+1
[<EntryPoint>]
let main argv =
printfn "%A\n\n" argv
printf "%f" Lagrange 1.4 0.0 0
0 // return an integer exit code
Re: F#を触ってみたのですが
実行結果の正しさは知りませんが、とりあえずコンパイルエラーを潰してみました。
// Learn more about F# at <!-- m --><a class=\"postlink\" href=\"http://fsharp.org\">http://fsharp.org</a><!-- m -->
// See the 'F# Tutorial' project for more help.
let DataX=[|1.0;2.0;3.0;4.0|]
let DataY=[|4.5;5.7;7.3;8.5|]
let rec pi x i re j=
if j=4 then re
elif i=j then pi x i re (j+1)
else pi x i (re*(x-DataX.[j])) (j+1)
let fl x i=
DataY.[i] * (pi x i 1.0 0) / (pi DataX.[i] i 1.0 0)
let rec Lagrange x sum i=
if i=4 then sum
else Lagrange x (sum+(fl x i)) (i+1)
[<EntryPoint>]
let main argv =
printfn "%A\n\n" argv
printf "%f" (Lagrange 1.4 0.0 0)
0 // return an integer exit code
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: F#を触ってみたのですが
// Learn more about F# at <!-- m --><a class=\"postlink\" href=\"http://fsharp.org\">http://fsharp.org</a><!-- m -->
// See the 'F# Tutorial' project for more help.
let DataX=[|1.0;2.0;3.0;4.0|]
let DataY=[|4.5;5.7;7.3;8.5|]
let rec pi x i re j=
if j=4 then re
elif i=j then pi x i re (j+1)
else pi x i (re*(x-DataX.[j])) (j+1)
let fl x i=
DataY.[i] * (pi x i 1.0 0) / (pi DataX.[i] i 1.0 0)
let rec Lagrange x sum i=
if i=4 then sum
else Lagrange x (sum+(fl x i)) (i+1)
let rec loop n =
if n>7.0 then 0
else
printf "%f : %f\n" n (Lagrange n 0.0 0)
loop (n+0.1)
[<EntryPoint>]
let main argv =
printfn "%A\n\n" argv
loop 0.0
0 // return an integer exit code
引数に式を入れるときは()で囲まなければならないのですね。あと==ではなく=と書くと。
ありがとうございました。