C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのベッセルの補間


補間は、既知の値の間にある未知の値の推定手法の一種です。 補間は、既知のデータポイントの離散セットの範囲の間に新しいデータポイントを構築するプロセスです。

補間を使用するアプリケーションまたは理由は、計算コストを削減できる可能性があるためです。特定の値を計算する式(関数)が複雑すぎたり、計算にコストがかかる場合は、補間を使用することをお勧めします。いくつかのデータポイントは元の関数を使用して計算され、残りは補間を使用して推定できます。これらは完全に正確ではないかもしれませんが、かなり近いです!

したがって、基本的にここでは、計算コストの削減と単純さが、補間エラーによる損失を上回っています。

ベッセルの補間式

f(u) = {(f(0)+f(1))/2} + {u - ½}𝛥f(0) + {u(u-1)/2!}{(𝛥2 f(-1) + 𝛥2 f(0))/2} + {u(u-1)(u - ½)/3!}𝛥3f(-1) + {u(u+1)(u-1)(u-2)/4!}{(𝛥4f(-2) + 𝛥4f(-1))/2}+..

ここ、

f(0)は原点であり、通常は中点です。

u =x --f(0)/ h、 ghは差の間隔です

バッセルの補間を説明するプログラム-

#include <iostream>
using namespace std;
float calU(float u, int n){
   if (n == 0)
      return 1;
   float result = u;
   for (int i = 1; i <= n / 2; i++)
      result = result*(u - i);
   for (int i = 1; i < n / 2; i++)
      result = result*(u + i);
   return result;
}
int factorial(int n){
   if(n == 1)
      return 1;
   return n * factorial(n-1);
}
int main(){
   int n = 6;
   float x[] = { 50, 51, 52, 53, 54, 55 };
   float y[n][n];
   y[0][0] = 8.000;
   y[1][0] = 7.746;
   y[2][0] = 7.674;
   y[3][0] = 7.571;
   y[4][0] = 7.469;
   y[5][0] = 7.231;
   for (int i = 1; i < n; i++)
      for (int j = 0; j < n - i; j++)
         y[j][i] = y[j + 1][i - 1] - y[j][i - 1];
   float value = 53.2;
   float sum = (y[2][0] + y[3][0]) / 2;
   int index;
   if (n % 2)
      index = n/2;
   else
      index = n/2 - 1;
   float u = (value - x[index]) / (x[1] - x[0]);
   for (int i = 1; i < n; i++) {
      if (i % 2)
         sum+= (((u-(0.5))*calU(u, i - 1)*y[index][i])/factorial(i));
      else
         sum+= ((calU(u, i)*(y[index][i]+y[-- index][i])/(factorial(i)*2)));
   }
   cout<<"Value at "<<value<<" found using Bessels's interpolation is "<<sum;
   return 0;
}

出力

Value at 53.2 found using Bessels's interpolation is 7.54985

  1. C++の識別子

    C ++識別子は、変数、関数、クラス、モジュール、またはその他のユーザー定義アイテムを識別するために使用される名前です。識別子は、文字AからZまたはaからzまたはアンダースコア(_)で始まり、その後に0個以上の文字、アンダースコア、および数字(0から9)が続きます。 C ++では、識別子内に@、$、%などの句読文字を使用できません。 C ++は、大文字と小文字を区別するプログラミング言語です。したがって、Manpowerとmanpowerは、C++では2つの異なる識別子です。 受け入れ可能な識別子の例を次に示します- mohd Piyush abc move_na

  2. LinuxでのC++の最高のIDEは何ですか?

    大きなプロジェクトは、単なるテキストエディタでは管理が困難です。このような場合にIDEを使用すると、生産性が向上し、フラストレーションが軽減される可能性があります。 IDEにはさまざまな種類があり、ニーズに合ったものを選択する必要があります。 Linux上のC++に最適なIDEは1つではありません。ツールは賢く選ぶ必要があります。 Linux用の人気のあるIMOの最高のIDEのリストは次のとおりです。 C /C++開発用のNetbeans- Netbeansは、C /C++および他の多くのプログラミング言語向けの無料のオープンソースで人気のあるクロスプラットフォームIDEです。コミュニテ