数值计算c语言常用,数值计算C语言常用小程序.doc

PAGE

PAGE 7

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、二分法

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);

}

?

运行结果:

?

?

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()

{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);

x=x+h;

s=s+fun(x);

}

s=(h/2)*s;

printf("s=%lf\n",s);

}

double fun(double m)

{double n;

n=exp(-m)*sin(4*m)+1;

return(n);

}

运行结果:

?

?

6、复化辛甫生算法

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);

x=x+h/2;

s=s+4*fun(x);

x=x+h/2;

s=s+fun(x);}

s=(h/6)*s;

printf("s=%lf\n",s);

}

double fun(double m)

{double n;

n=exp

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值