编程论坛's Archiver

talenttao208 发表于 2007-11-17 17:05

[求助]看看用分段LAGRANGE插值法近似正旋函数?

<P>想利用插值法来近似一个正旋函数,但是输出的结果总是0????<BR>#include&lt;stdio.h&gt;<BR>#include&lt;math.h&gt;<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",&amp;value);<BR>      for(i=0;i&lt;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&lt;n;i++)<BR>        if(value&gt;=x[i]&amp;&amp;value&lt;=x[i+1])<BR>        {<BR>            m=i+1;<BR>            break;<BR>        }<BR>    return (m);<BR>}</P>

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.