1、 秦九韶算法 2 、二分法 3 、拉格朗日插值 4 、埃特金算法 5 、复化梯形法
6、复化辛甫生算法 7 、二阶龙格库塔方法 8 、四阶龙格库塔方法 9、改进的
欧拉方法 10、迭代法 11、埃特金加速方法: 12、牛顿迭代法 13、追赶法
14、雅克比迭代 15、蛋白质设计: 17 高斯消去法 :
1、 秦九韶算法
P11.3 利用秦九韶算法求多项式 ,在 x=3 时的值。
程序:
#include
#include
void main()
{float a[100],v,x;
int n,i,k;
scanf("%d%f",&n,&x);
for(i=0;i<=n;i++)
scanf("%f",&a[i]);
v=a[n];
k=1;
do
{v=x*v+a[n-k];
k=k+1;
}
while(k<=n);
printf("v=%f",v);}
运行结果:
2、二分法
1
P11.1 用二分法求方程法 x*x*x-x-1=0 在 [1,2] 内的近似根,要求误差不超过
#include
#include
float fun(float);
void main()
{float a,b,c,x,y,y1;
scanf("%f%f%f",&a,&b,&c);
y1=fun(a);
do
{x=(a+b)/2;
y=fun(x);
{if(y*y1>0)
a=x;
else
b=x;}}
while((b-a)>=c);
printf("%f,%f\n",x,y);
}
float fun(float m)
{float n;
n=m*m*m-m-1;
return(n);
}
运行结果:
2
3、拉格朗日插值
程序:
#include
main()
{float a,b,t,x[100],y[100];
int n,i,j,k;
scanf("%f%d",&a,&n);
for(i=0;i<=n;i++)
scanf("%f%f",&x[i],&y[i]);
k=0;
b=0;
for(k=0;k<=n;k++)
{t=1;
for(j=0;j<=n;j++)
{if(j!=k)
t=t*(a-x[j])/(x[k]-x[j]);}
b=b+t*y[k];
}
printf("%f\n",b);
}
4 、埃特金算法
程序:
#include
#include
main()
3
{float a,b,c,x[100],y[100];
int i,j,n,k;
scanf("%d%f",&n,&a);
for(i=0;i<=n;i++)
scanf("%f%f",&x[i],&y[i]);
for(k=1;k<=n;k++)
{for(i=k;i<=n;i++)
y[i]=y[k-1]+(y[i]-y[k-1])*(a-x[k-1])/(x[i]-x[k-1]);}
printf("%f\n",y[n]);
}
5、复化梯形法
P95.9 设 , 用复化梯形法求积分 的近似值
程序:
#include
#include
double fun(double);
void main()
{
double a,b,h,s,x,y;
int n,k;
scanf("%lf%lf%d",&a,&b,&n);
h=(b-a)/n;
s=0;
x=a;
y=fun(x);
for(k=1;k<=n;k++)
{s=s+fun(x);