[求助]看看用分段LAGRANGE插值法近似正旋函数?
<P>想利用插值法来近似一个正旋函数,但是输出的结果总是0????<BR>#include<stdio.h><BR>#include<math.h><BR>#define n 4<BR>#define h 1<BR>#define a 0<BR>#define b 10<BR>main()<BR>{<BR> double jisuan(double *x,double value,double *y);<BR> long i;<BR> double x[n],y[n],c,value,chushi=0,f[b-a+1]={0,0.8415,0.9093,0.1411,-0.7568,-0.9589,-0.2794,0.6570,0.9894,0.4121,-0.5440};<BR> char zifu;</P><P> printf("the input value is:");<BR> scanf("%f",&value);<BR> for(i=0;i<n;i++)<BR> {<BR> x[i]=chushi;<BR> chushi=x[i]+h;<BR> y[i]=f[0+h*i];<BR> }<BR> c=jisuan(x,value,y);<BR> printf("\n the output value is: %f",c);<BR> return;<BR>}</P>
<P><BR>double jisuan(double *x,double value,double *y)通过这个子函数进行近似计算<BR>{<BR> long chaxun(double value,double *x);<BR> double s; long m;<BR> m=chaxun(value, x);<BR> s=(x[m]-value)/h*y[m-1];<BR> s=s+(value-x[m-1])/h*y[m-1];<BR> return (s);<BR>}</P>
<P>long chaxun(double value,double *x)找出输入值所在的范围,因为近似的方法是分端拉哥郎日法<BR>{<BR> long i,m;<BR> for(i=0;i<n;i++)<BR> if(value>=x[i]&&value<=x[i+1])<BR> {<BR> m=i+1;<BR> break;<BR> }<BR> return (m);<BR>}</P>
页:
[1]
