老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

c語(yǔ)言自帶的插值函數(shù) 什么是函數(shù)插值

求c語(yǔ)言寫(xiě)的雙三次插值函數(shù)

void

成都創(chuàng)新互聯(lián)主營(yíng)金城江網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都APP應(yīng)用開(kāi)發(fā),金城江h(huán)5微信平臺(tái)小程序開(kāi)發(fā)搭建,金城江網(wǎng)站營(yíng)銷推廣歡迎金城江等地區(qū)企業(yè)咨詢

SPL(int

n,

double

*x,

double

*y,

int

ni,

double

*xi,

double

*yi);

是你所要。

已知

n

個(gè)點(diǎn)

x,y;

x

必須已按順序排好。要插值

ni

點(diǎn),橫坐標(biāo)

xi[],

輸出

yi[]。

程序里用double

型,保證計(jì)算精度。

SPL調(diào)用現(xiàn)成的程序。

現(xiàn)成的程序很多。端點(diǎn)處理方法不同,結(jié)果會(huì)有不同。想同matlab比較,你需

嘗試

調(diào)用

spline()函數(shù)

時(shí),令

end1

1,

設(shè)

slope1

的值,令

end2

1

設(shè)

slope2

的值。

#include

stdio.h

#include

math.h

int

spline

(int

n,

int

end1,

int

end2,

double

slope1,

double

slope2,

double

x[],

double

y[],

double

b[],

double

c[],

double

d[],

int

*iflag)

{

int

nm1,

ib,

i,

ascend;

double

t;

nm1

=

n

-

1;

*iflag

=

0;

if

(n

2)

{

/*

no

possible

interpolation

*/

*iflag

=

1;

goto

LeaveSpline;

}

ascend

=

1;

for

(i

=

1;

i

n;

++i)

if

(x[i]

=

x[i-1])

ascend

=

0;

if

(!ascend)

{

*iflag

=

2;

goto

LeaveSpline;

}

if

(n

=

3)

{

d[0]

=

x[1]

-

x[0];

c[1]

=

(y[1]

-

y[0])

/

d[0];

for

(i

=

1;

i

nm1;

++i)

{

d[i]

=

x[i+1]

-

x[i];

b[i]

=

2.0

*

(d[i-1]

+

d[i]);

c[i+1]

=

(y[i+1]

-

y[i])

/

d[i];

c[i]

=

c[i+1]

-

c[i];

}

/*

----

Default

End

conditions

*/

b[0]

=

-d[0];

b[nm1]

=

-d[n-2];

c[0]

=

0.0;

c[nm1]

=

0.0;

if

(n

!=

3)

{

c[0]

=

c[2]

/

(x[3]

-

x[1])

-

c[1]

/

(x[2]

-

x[0]);

c[nm1]

=

c[n-2]

/

(x[nm1]

-

x[n-3])

-

c[n-3]

/

(x[n-2]

-

x[n-4]);

c[0]

=

c[0]

*

d[0]

*

d[0]

/

(x[3]

-

x[0]);

c[nm1]

=

-c[nm1]

*

d[n-2]

*

d[n-2]

/

(x[nm1]

-

x[n-4]);

}

/*

Alternative

end

conditions

--

known

slopes

*/

if

(end1

==

1)

{

b[0]

=

2.0

*

(x[1]

-

x[0]);

c[0]

=

(y[1]

-

y[0])

/

(x[1]

-

x[0])

-

slope1;

}

if

(end2

==

1)

{

b[nm1]

=

2.0

*

(x[nm1]

-

x[n-2]);

c[nm1]

=

slope2

-

(y[nm1]

-

y[n-2])

/

(x[nm1]

-

x[n-2]);

}

/*

Forward

elimination

*/

for

(i

=

1;

i

n;

++i)

{

t

=

d[i-1]

/

b[i-1];

b[i]

=

b[i]

-

t

*

d[i-1];

c[i]

=

c[i]

-

t

*

c[i-1];

}

/*

Back

substitution

*/

c[nm1]

=

c[nm1]

/

b[nm1];

for

(ib

=

0;

ib

nm1;

++ib)

{

i

=

n

-

ib

-

2;

c[i]

=

(c[i]

-

d[i]

*

c[i+1])

/

b[i];

}

b[nm1]

=

(y[nm1]

-

y[n-2])

/

d[n-2]

+

d[n-2]

*

(c[n-2]

+

2.0

*

c[nm1]);

for

(i

=

0;

i

nm1;

++i)

{

b[i]

=

(y[i+1]

-

y[i])

/

d[i]

-

d[i]

*

(c[i+1]

+

2.0

*

c[i]);

d[i]

=

(c[i+1]

-

c[i])

/

d[i];

c[i]

=

3.0

*

c[i];

}

c[nm1]

=

3.0

*

c[nm1];

d[nm1]

=

d[n-2];

}

else

{

b[0]

=

(y[1]

-

y[0])

/

(x[1]

-

x[0]);

c[0]

=

0.0;

d[0]

=

0.0;

b[1]

=

b[0];

c[1]

=

0.0;

d[1]

=

0.0;

}

LeaveSpline:

return

0;

}

double

seval

(int

n,

double

u,

double

x[],

double

y[],

double

b[],

double

c[],

double

d[],

int

*last)

{

int

i,

j,

k;

double

w;

i

=

*last;

if

(i

=

n-1)

i

=

0;

if

(i

0)

i

=

0;

if

((x[i]

u)

||

(x[i+1]

u))

{

i

=

0;

j

=

n;

do

{

k

=

(i

+

j)

/

2;

if

(u

x[k])

j

=

k;

if

(u

=

x[k])

i

=

k;

}

while

(j

i+1);

}

*last

=

i;

w

=

u

-

x[i];

w

=

y[i]

+

w

*

(b[i]

+

w

*

(c[i]

+

w

*

d[i]));

return

(w);

}

void

SPL(int

n,

double

*x,

double

*y,

int

ni,

double

*xi,

double

*yi)

{

double

*b,

*c,

*d;

int

iflag,last,i;

b

=

(double

*)

malloc(sizeof(double)

*

n);

c

=

(double

*)malloc(sizeof(double)

*

n);

d

=

(double

*)malloc(sizeof(double)

*

n);

if

(!d)

{

printf("no

enough

memory

for

b,c,d\n");}

else

{

spline

(n,0,0,0,0,x,y,b,c,d,iflag);

if

(iflag==0)

printf("I

got

coef

b,c,d

now\n");

else

printf("x

not

in

order

or

other

error\n");

for

(i=0;ini;i++)

yi[i]

=

seval(ni,xi[i],x,y,b,c,d,last);

free(b);free(c);free(d);

};

}

main(){

double

x[6]={0.,1.,2.,3.,4.,5};

double

y[6]={0.,0.5,2.0,1.6,0.5,0.0};

double

u[8]={0.5,1,1.5,2,2.5,3,3.5,4};

double

s[8];

int

i;

SPL(6,

x,y,

8,

u,

s);

for

(i=0;i8;i++)

printf("%lf

%lf

\n",u[i],s[i]);

return

0;

}

求用c語(yǔ)言編寫(xiě)牛頓插值法

牛頓插值法:

#includestdio.h

#includealloc.h

float Language(float *x,float *y,float xx,int n)

{

int i,j;

float *a,yy=0.0;

a=(float *)malloc(n*sizeof(float));

for(i=0;i=n-1;i++)

{

a[i]=y[i];

for(j=0;j=n-1;j++)

if(j!=i)a[i]*=(xx-x[j])/(x[i]-x[j]);

yy+=a[i];

}

free(a);

return yy;

}

void main()

{

float x[4]={0.56160,0.5628,0.56401,0.56521};

float y[4]={0.82741,0.82659,0.82577,0.82495};

float xx=0.5635,yy;

float Language(float *,float *,float,int);

yy=Language(x,y,xx,4);

printf("x=%f,y=%f\n",xx,yy);

getchar();

}

2.牛頓插值法#includestdio.h

#includemath.h

#define N 4

void Difference(float *x,float *y,int n)

{

float *f;

int k,i;

f=(float *)malloc(n*sizeof(float));

for(k=1;k=n;k++)

{

f[0]=y[k];

for(i=0;ik;i++)

f[i+1]=(f[i]-y[i])/(x[k]-x[i]);

y[k]=f[k];

}

return;

}

main()

{

int i;

float varx=0.895,b;

float x[N+1]={0.4,0.55,0.65,0.8,0.9};

float y[N+1]={0.41075,0.57815,0.69675,0.88811,1.02652};

Difference(x,(float *)y,N);

b=y[N];

for(i=N-1;i=0;i--)b=b*(varx-x[i])+y[i];

printf("Nn(%f)=%f",varx,b);

getchar();

}

留下個(gè)郵箱,我發(fā)給你:牛頓插值法的程序設(shè)計(jì)與應(yīng)用

牛頓的插值法用C語(yǔ)言怎么編寫(xiě)怎么編啊?

#include iostream.h

#include math.h

void main()

{

char L;

do

{

double M[100][100];

double x[100],y[100];

double X=1,xx=0,w=1,N=0,P,R=1;

int n;

cout"請(qǐng)輸入所求均差階數(shù):";

cinn;

for(int i=0;i=n;i++)

{

cout"請(qǐng)輸入x"i"的值:"endl;

cinx[i];

cout"請(qǐng)輸入y"i"的值:"endl;

ciny[i];

M[i][0]=x[i];

M[i][1]=y[i];

}

for( int j=2;j=n+1;j++)

{

for( i=1;i=n;i++)

{

M[i][j]=(M[i][j-1]-M[i-1][j-1])/(M[i][0]-M[i-j+1][0]);

}

}

for(i=1;i=n;i++)

{

cout"其"i"階均差為:"M[i][i+1]endl;

}

cout"請(qǐng)輸入x的值:x=";

cinxx;

for(i=0;in;i++)

{

X*=xx-x[i];

N+=M[i+1][i+2]*X;

P=M[0][1]+N;

}

cout"其函數(shù)值:y="Pendl;

for(i=0;in;i++)

{

w*=xx-x[i];

R=fabs(M[n][n+1]*w);

}

cout"其截?cái)嗾`差:R="Rendl;

coutendl"還想算其它插值嗎?是請(qǐng)按'y'否則按'n'"endl;

cinL;

}while(L=='y');

}

C語(yǔ)言實(shí)現(xiàn)拉格朗日插值法的問(wèn)題

下面是我所寫(xiě)的拉格朗日C語(yǔ)言實(shí)現(xiàn)的程序,經(jīng)運(yùn)行正確

#includestdio.h

int main()

{

float x,y;

float a[3]={100,121,144};

float b[3]={10,11,12};

int i,j,k=0;

float t;

y=0;

printf("請(qǐng)輸入x的值:");

scanf("%f",x);

for(k=0;k3;k++)

{

t=1;

for(j=0;j=2;j++)

if(j!=k)

{

t=((x-a[j])/(a[k]-a[j]))*t;

}

y=y+t*b[k];

}

printf("y=%f\n",y);

}

用C語(yǔ)言實(shí)現(xiàn)拉格朗日插值、牛頓插值、等距結(jié)點(diǎn)插值算法

#includestdio.h

#includestdlib.h

#includeiostream.h

typedef struct data

{

float x;

float y;

}Data;//變量x和函數(shù)值y的結(jié)構(gòu)

Data d[20];//最多二十組數(shù)據(jù)

float f(int s,int t)//牛頓插值法,用以返回插商

{

if(t==s+1)

return (d[t].y-d[s].y)/(d[t].x-d[s].x);

else

return (f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x);

}

float Newton(float x,int count)

{

int n;

while(1)

{

cout"請(qǐng)輸入n值(即n次插值):";//獲得插值次數(shù)

cinn;

if(n=count-1)// 插值次數(shù)不得大于count-1次

break;

else

system("cls");

}

//初始化t,y,yt。

float t=1.0;

float y=d[0].y;

float yt=0.0;

//計(jì)算y值

for(int j=1;j=n;j++)

{

t=(x-d[j-1].x)*t;

yt=f(0,j)*t;

//coutf(0,j)endl;

y=y+yt;

}

return y;

}

float lagrange(float x,int count)

{

float y=0.0;

for(int k=0;kcount;k++)//這兒默認(rèn)為count-1次插值

{

float p=1.0;//初始化p

for(int j=0;jcount;j++)

{//計(jì)算p的值

if(k==j)continue;//判斷是否為同一個(gè)數(shù)

p=p*(x-d[j].x)/(d[k].x-d[j].x);

}

y=y+p*d[k].y;//求和

}

return y;//返回y的值

}

void main()

{

float x,y;

int count;

while(1)

{

cout"請(qǐng)輸入x[i],y[i]的組數(shù),不得超過(guò)20組:";//要求用戶輸入數(shù)據(jù)組數(shù)

cincount;

if(count=20)

break;//檢查輸入的是否合法

system("cls");

}

//獲得各組數(shù)據(jù)

for(int i=0;icount;i++)

{

cout"請(qǐng)輸入第"i+1"組x的值:";

cind[i].x;

cout"請(qǐng)輸入第"i+1"組y的值:";

cind[i].y;

system("cls");

}

cout"請(qǐng)輸入x的值:";//獲得變量x的值

cinx;

while(1)

{

int choice=3;

cout"請(qǐng)您選擇使用哪種插值法計(jì)算:"endl;

cout" (0):退出"endl;

cout" (1):Lagrange"endl;

cout" (2):Newton"endl;

cout"輸入你的選擇:";

cinchoice;//取得用戶的選擇項(xiàng)

if(choice==2)

{

cout"你選擇了牛頓插值計(jì)算方法,其結(jié)果為:";

y=Newton(x,count);break;//調(diào)用相應(yīng)的處理函數(shù)

}

if(choice==1)

{

cout"你選擇了拉格朗日插值計(jì)算方法,其結(jié)果為:";

y=lagrange(x,count);break;//調(diào)用相應(yīng)的處理函數(shù)

}

if(choice==0)

break;

system("cls");

cout"輸入錯(cuò)誤!!!!"endl;

}

coutx" , "yendl;//輸出最終結(jié)果

}

用C語(yǔ)言編寫(xiě)一個(gè)線性插值程序

#include?stdio.h

double?Lerp(double?x0,double?y0,double?x1,double?y1,double?x)

{

double?dy?=?y1?-?y0;

if(dy?==?0){

printf("除0錯(cuò)誤!\n");

return?0;

}

return?x?*?(x1?-?x0)?/?dy;

}

int?main()

{

double?x0,x1,y1,y0,x,y;

printf("Inptu?x0?y0?x1?y1?x:");

scanf("%lf?%lf?%lf?%lf?%lf",x0,y0,x1,y1,x);

y?=?Lerp(x0,y0,x1,y1,x);

printf("y?=?%lf\n",y);

return?0;

}


網(wǎng)頁(yè)名稱:c語(yǔ)言自帶的插值函數(shù) 什么是函數(shù)插值
轉(zhuǎn)載來(lái)源:http://www.xueling.net.cn/article/dodshds.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 97在线播放视频 | 国产精品久久影视 | 51社区在线永久免费视频 | 欧美一二在线 | 美女让男人桶爽免费视频 | 污片在线观看免费 | 黄色片免费大全 | 日韩av最新网址 | 久久久久人 | 成人免费视频亚洲 | 国产口爆吞精在线视频观看 | av2018天堂网 | 69午夜免费福利 | eeuss鲁丝片AV无码 | 中文字幕制服狠久久日韩二区 | 推油少妇久久99久久99久久 | 国产区免费视频 | 一区二区播放 | 中国xxxx老师xxx在线 | 麻豆网站在线播放 | 免费成人午夜视频 | 日韩免费网站 | 黄频在线观看国产免费 | 午夜成熟看A级毛片 | 一级爽片| 九月婷婷人人澡人人添人人爽 | 极品久久久 | 一二三四视频在线观看中文版免费 | xxxx18hd护士hd护士 | 亚洲精品国产乱码久久久1区 | 男女边吃奶边做边爱视频 | 日韩一区二区a片免费观看 法国性xxxx精品hd | 久视频精品线在线观看的录制功能 | 精品久久久久久久中文字幕 | av在线播放一区二区 | 亚洲乱亚洲乱妇 | 国产人成高清在线视频99最全资源 | 亚洲欧美另类久久久精品能播放的 | 国产大片免费看 | 99热99 | 日韩欧美精品一区二区三区经典 |