1:
第二章
(1)
二分法求解非线性方程:
#include
#include
#define f(x) ((x*x-1)*x-1)
void main()
{
float a,b,x,eps;
int k=0;
printf("intput eps\n");/*
容许误差
*/
scanf("%f",&eps);
printf("a,b=\n");
for(;;)
{scanf("%f, %f",&a ,&b);
if(f(a)*f(b)>=0) /*
判断是否符合二分法使用的条件
*/
printf("
二分法不可使用
,
请重新输入
:\n");
else break;
}
do
{
x=(a+b)/2;
k++;
if(f(a)*f(x)<0) /*
如果
f(a)*f(x)<0
,则根在区间的左半部分
*/
b=x;
else if(f(a)*f(x)>0)
/*
否则根在区间的右半部分
*/
a=x;
else break;
}while(fabs(b-a)>eps);/*
判断是否达到精度要求
,
若没有达到
,
继续循环
*/
x=(a+b)/2; /*
取最后的小区间中点作为根的近似值
*/
printf("\n The root is x=%f, k=%d\n",x,k);
}
运行结果:
intput eps
0.00001
a,b=
2,-5
The root is x=1.324721, k=20
Press any key to continue
总结:本题关键在于两个端点的取值和误差的判断,此程序较容易。二分法收敛速度较快,
但缺点是只能求解单根。
(2)
牛顿法求解非线性方程:
#include
#include
float f(float x)
/*
定义函数
f(x) */
本文介绍了使用C语言通过二分法和牛顿法解决非线性方程的方法。首先,展示了二分法的实现,包括容许误差输入、二分条件判断及精度检查。接着,简述了牛顿法在求解非线性方程中的应用。二分法因其简单快速的特点,适用于求解单根问题,而牛顿法则是一种更通用的迭代方法。
618

被折叠的 条评论
为什么被折叠?



