C语言高手请进 Newton法的程序运行不了啊

来源:百度知道 编辑:UC知道 时间:2024/06/04 07:56:47
#include<stdio.h>
#include<math.h>

void main()
{
void function1();//搜索法
void function2();//二分法
void function4();//牛顿法
int choice;
printf("请选择求解的方法:\n\t1.搜索法\n\t2.二分法\n\t3.牛顿法\n:");

switch(1)
{
case 1: function1();
case 2: function2();
case 4: function4();
}

}

void function1()//搜索法计算非线性方程的解
{
double expression1(double);
double lpoint=1.0,rpoint=2.0,step=0.0001;
while(expression1(lpoint)<-0.00001)
{
lpoint=lpoint+step;
}
printf("运用搜索法所求结果:%f\n",lpoint);

}

void function2()//二分法计算非线性方程的解
{
double expression1(double);
double lpoint=1,rpoint=2,mpoint;
mpoint=(lpoint+rpoint)/2;
while(fabs(expression1(mpoint))

//以后的说明去掉就行了

你程序的收敛条件有问题,应该是两次x的差值小于0.00001,而不是函数值小于0.00001收敛。

void function4()//牛顿法计算非线性方程的解
{
double expression1(double);
double expression2(double);
double x=1.5;
double x1;
do {
x1=x;
x=x1-expression1(x1)/expression2(x1);
} while (fabs(x-x1) > 0.00001);

printf("运用牛顿法所求结果:%f\n",x);

应该这样改一下:
scanf("%d", &choice);

switch(choice)
{
case 1: function1(); break;
case 2: function2(); break;
case 3: function4(); break;
}

在我电脑上可以运行