エクセルにて、3次スプラインのマクロを組みました。
結果がところどころしか表示されません。
何度見直しても自分では間違いがわかりません。
どなたか、間違い箇所がわかりませんでしょうか。
A列には5行目から、0-720までの721個の少数値
0
1.005586592
2.011173184
B列には5行目から、721個の少数値
5.83
5.69
5.66
D列には5行目から、0-720まで、1ずつ増加の整数値
0
1
2
E列には補間値をマクロから代入
以下マクロです。
お手数をおかけしますが、目を通して指摘していただけませんでしょうか。
Sub 補間_3次スプライン()
Dim i As Long
Dim h(1000) As Double
Dim dif1(1000) As Double
Dim dif2(1000) As Double
Dim data_count As Long
Dim lngDataEnd As Long
Dim dataX(1000) As Double
Dim dataY(1000) As Double
Dim x, y, yy0, yy1, yy2, yy3 As Double
lngDataEnd = ThisWorkbook.Sheets("3次スプライン").Range("A65536").End(xlUp).Row
data_count = lngDataEnd - 5
For i = 1 To data_count
dataX(i) = ThisWorkbook.Sheets("3次スプライン").Cells(i + 4, 1)
dataY(i) = ThisWorkbook.Sheets("3次スプライン").Cells(i + 4, 2)
Next i
h(0) = 0
dif2(0) = 0
On Error Resume Next
For i = 1 To data_count
h(i) = dataX(i) - dataX(i - 1) '//間隔を計算
dif1(i) = (dataY(i) - dataY(i - 1)) / h(i) '//一次微分を計算
Next i
For i = 1 To data_count
'二次微分を計算
dif2(i) = (dif1(i + 1) - dif1(i)) / (dataX(i + 1) - dataX(i - 1))
Next i
i = 1
For x = 0 To 720
If x < dataX(i) Then
yy0 = dif2(i - 1) / (6 * h(i)) * (dataX(i) - x) * (dataX(i) - x) * (dataX(i) - x) '第1項
yy1 = dif2(i) / (6 * h(i)) * (x - dataX(i - 1)) * (x - dataX(i - 1)) * (x - dataX(i - 1)) '第2項
yy2 = (dataY(i - 1) / h(i) - h(i) * dif2(i - 1) / 6) * (dataX(i) - x) '第3項
yy3 = (dataY(i) / h(i) - h(i) * dif2(i) / 6) * (x - dataX(i - 1)) '第4項
y = yy0 + yy1 + yy2 + yy3
ThisWorkbook.Sheets("3次スプライン").Cells(x + 4, 5) = y
Else: i = i + 1
End If
Next x
End Sub
No.1ベストアンサー
- 回答日時:
3次スプラインの計算式は確認していないので、それは置いておくとして、
結果がところどころしか表示されない原因は、最後のほうの
If x < dataX(i) Then
の部分ではないでしょうか。
この方法では、「If x < dataX(i) Then」を満たさなければ、そのxの行は表示されません。
次のようにしてはどうですか。
i = 1
For x = 0 To 720
Do Until x < dataX(i)
i = i + 1
If i > data_count Then Exit Do
Loop
If i > data_count Then Exit For
yy1 = ・・・・・
・・・・・・・
ThisWorkbook.Sheets("3次スプライン").Cells(x + 4, 5) = y
Next x
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
誕生日にもらった意外なもの
みなさんがもらった誕生日プレゼントで面白いものがあったらぜひ教えてください!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エクセルでの補間方法について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フェラする時に、男に喉奥まで...
-
風俗には何歳ぐらいまで、行っ...
-
首吊りに使われる縄は太いほど...
-
性行為の時、女性の膣の奥にあ...
-
レズじゃないけど女と性的な事...
-
50代男性です。彼女も50代のW不...
-
既婚男性が、何回以上、特定の...
-
ソープは基本ゴムあり挿入だと...
-
男はSEXを拒否されると、ど...
-
お互い初エッチてどのような流...
-
セフレと別れて後悔
-
結婚して10年近く経っている...
-
女性は何歳頃まで感じることが...
-
女性はなぜ喘ぐんですか?
-
妻が元風俗嬢なのですが、仕事...
-
女の子の体って何であんなにフ...
-
太った男性は正常位でセックス...
-
女の人から見てソープ嬢ってど...
-
ソープに行った夫。私が取るべ...
-
AV観るのにSEXしないのはなぜで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フェラする時に、男に喉奥まで...
-
首吊りに使われる縄は太いほど...
-
風俗には何歳ぐらいまで、行っ...
-
性行為の時、女性の膣の奥にあ...
-
レズじゃないけど女と性的な事...
-
50代男性です。彼女も50代のW不...
-
ソープは基本ゴムあり挿入だと...
-
女性は何歳頃まで感じることが...
-
男はSEXを拒否されると、ど...
-
既婚男性が、何回以上、特定の...
-
女性はなぜ喘ぐんですか?
-
お互い初エッチてどのような流...
-
結婚して10年近く経っている...
-
女の子の体って何であんなにフ...
-
我慢汁が出ない彼氏※下ネタです...
-
セフレと別れて後悔
-
ソープに行った夫。私が取るべ...
-
くだらない質問ですがすみませ...
-
妻が元風俗嬢なのですが、仕事...
-
連れ子との行為について。 私は...
おすすめ情報