if (p==ff3)n=2;
printf("x[0] = %.4f, x[1] = %.4f, ",m,n);
while (1)
{
if (fabs(m-n)a=p(n)*(n-m);
b=p(n)-p(m);
c=a/b;
x2=n-c;
m = n;
n = x2;
printf("x[%d] = %.4f, ",k,x2);
k++;
if (k%3==0) printf("\\\\n");
}
if (k%3!=0) printf("\\\\n");
printf("iteration times: %d, roots: %.4f\\\\n ",k-2,n);return 0; }main() {printf("x*x-exp(x),\\\\n");answer(ff1);printf("x*exp(x)-1,\\\\n");answer(ff2);printf("lg(x)+x-2,\\\\n");answer(ff3);return 0; } (3)实验结果及分析
2、割线法 (1)程序设计 #include #include float gexian(float,float); float f(float); main() {
int i,j;
float x1=2.2;
float x2=2,x3;
scanf("%d",&i);
if(i==1) printf("%f",x1);
else if(i==2) printf("%f",x2);
else
{
for(j=3;j{
x3=gexian(x1,x2);
x1=x2;
x2=x3;
}
printf("%f",gexian(x1,x2)) ;
}} float f(float x) { return (x*x-exp(x)); }
float gexian(float x1,float x2) { return (x2-(f(x2)/(f(x2)-f(x1)))*(x2-x1)); } (3)实验结果及分析
四、总结
了解和学习了二分法和牛顿迭代法的思想以及程序设计的方法 , 比较了迭代法和牛顿法的特点:牛顿法收敛速度较快 , 但对初值选取要求较高;割线法计算量少 。
习题三:
3线性方程组数值解法
一、实验目的
(1)熟悉求解线性方程组的有关理论和方法;
(2)会编制列主元消去法 , LU分解法 , 雅可比及高斯-赛德尔迭代法的程序; (3)通过实际计算 , 进一步了解各种方法的优缺点 , 选择合适的数值方法 。
二、实验内容
1、用列主元消去法解方程组
2、用LU分解法解方程组
三、实验步骤、程序设计、实验结果及分析
1、用列主元消去法解方程组 (1)程序设计 #include #include void ColPivot(float*,int,float[]); void ColPivot(float*c,int n,float x[]) {int i,j,t,k;float p;for(i=0;ik=i;
for(j=i+1;j if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))
k=j;
if(k!=i)
for(j=i;j {
p=*(c+i*(n+1)+j);
*(c+i*(n+1)+j)=*(c+k*(n+1)+j);
*(c+k*(n+1)+j)=p;
}
for(j=i+1;j{
p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
for(t=i;t*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
}}for(i=n-1;i>=0;i--){
for(j=n-1;j>=i+1;j--)
(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));
x[i]=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));} } void main() {int i;float x[4];float c[4][5]={1,1,0,3,4,2,1,-1,1,1,3,-1,-1,3,-3,-1,2,3,-1,4};
ColPivot(c[0],4,x);for(i=0;iprintf("x[%d]=%f\\\\n",i,x[i]); } (2)实验结果及分析
(1)题
(2)题
2、用LU分解法解方程组 (1)程序设计 #include void main() {float x[4];int i;float a[4][5]={48,-24,0,-12,4,
-24,24,12,12,4,
0,6,20,2,-2,
-6,6,2,16,-2};void DirectLU(float*,int,float[]);DirectLU(a[0],4,x);for(i=0;ifor(i=r;rfor(k=0;k*(u+r*(n+1)+i)-=*(u+r*(n+1)+k)*(*(u+k*(n+1)+i));
- 财务主管的辞职报告怎么写?
- 农村口腔社会实践报告写法怎么样?
- 中药专业社会实践报告怎么写?
- 文秘专业毕业实习报告怎么写?
- 当售货员的社会实践报告如何写?
- 思想理论政治课社会实践报告怎么写?
- 家庭体验社会实践报告格式怎么样?
- 因病的辞职报告如何写?
- 保洁员的辞职报告怎么写?
- 交通安全调查社会实践报告怎么写?