基於C 的三次插值

2021-09-18 06:46:38 字數 1898 閱讀 3087

數值分析的上機作業,一開始想用matlab做,但是發現方向不對,所以就換成了c#,其餘的部分大都是窗體設計以及控制項的編碼,是個人而定,這裡只展示下

核心**

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.drawing;

using system.windows.forms;

namespace three_times_spline_interpolation

, y=;

public int edgecondition;        //1為第一種邊界條件,2為第一種邊界條件,3為第一種邊界條件

public float head, tail;

public int nodenum;

public void cauc(panel p)   //定義陣列,影象編輯

k[0] = ((y[1] - y[0]) / (x[1] - x[0]) - head) * 6 / (x[1] - x[0]); //頭節點的6倍的差商,g(0)

k[nodenum] = (tail - (y[nodenum] - y[nodenum - 1]) / (x[nodenum] - x[nodenum - 1])) * 6 / (x[nodenum] - x[nodenum - 1]);    //g(num)

for (int b = 1; b< nodenum; b++)

i_j_k[0] = (x[nodenum] - x[nodenum - 1]) / (x[1] - x[0] + x[nodenum] - x[nodenum - 1]);     //以下是三次樣條求解

i_j_k[1] = 1 - i_j_k[0];

i_j_k[2] = (i_j_k[0] * (y[1] - y[0]) / (x[1] - x[0])+i_j_k[1]*(y[nodenum]-y[nodenum-1])/(x[nodenum]-x[nodenum-1]))*3;

drawpic(x, y, solveequation(i, j, k, nodenum, edgecondition,i_j_k), p);

float solveequation(float i, float j, float k, int n, int edgecondition, float i_j_k)

switch (edgecondition)

m[n]=(float)0.5*(k[n]-m[n-1]);

//e=m[0]-temp;

p++;

}break;

case 2:         //第二種邊界條件

k[1] = k[1] - i[0] * head;

k[n - 1] = k[n - 1] - j[n - 1] * tail;

i[1] = 0;

j[n - 1] = 0;

m[0] = head;

m[n] = tail;

for (int p = 1; p < 100; p++)

}break;

case 3:         //第三種邊界條件

float q = new float[n];

for(int a =0;afor (int p = 1; p < 100; p++)

q[n - 1] = (float)0.5 * (i_j_k[2]-i_j_k[1]*q[0]-i_j_k[0]*q[n-2]);

}break;

}return m;

}void drawpic(float x, float y, float m, panel p)      //畫圖了}}

catch }}

}

三次樣條插值 c

include include include include using namespace std double zuigan double a,double b,double c,double f,int n 追趕法求線性方程組 for int i 0 ifor int i n 2 i 0 i...

三次樣條插值

條件 1 輸入 x y f x 0 leq i leq n 2 要求擬合的曲線 s x 滿足 對於任意的 1 leq i leq n 1 在 x 處一階二階導數連續,s x 也連續,且 s x f x s x f x 求解過程 設 s m 對於區間 x x s x 是 x x 上的線性函式,所以設 ...

三次樣條插值介紹

樣條插值是一種工業設計中常用的 得到平滑曲線的一種插值方法,三次樣條是其中用的較為廣泛的一種。樣條插值最初是用於函式擬合 對於平面上的離散點,進行函式擬合時,一種簡單粗暴的方法就是不光滑的直線來將離散的點相連,即我們通常所說的線性擬合。線性擬合會存在乙個問題,擬合出來的函式不夠 光滑 為了讓線條更加...