c语言 ,急切!!!!!!在线等待!!

来源:百度知道 编辑:UC知道 时间:2024/06/26 03:07:06
#include<stdio.h>
#include<math.h>
void main()
{
float a=1.0,b=2.0,x,y,f(x);
y=double log(double x) +2*x-3,f(x)=y;
do
{
float c=(a+b)/2;
if(f(a)*f(c)<0)
{
b=c;
}
else
{
a=c;
}continue;
}while(f(x)<0.00001);
printf("%f",x);
}哪里不对阿 5.12 用二分法求方程ln x+2x-3=0的近似解。
提示:二分法的求解过程是:
(1)选择一个求解区间(a, b),使得f (a)•f (b) <0;
(2)取x = (a + b) / 2,若f (x)≈0则x为近似解,输出x,程序结束;
(3)若f (x)•f (a) <0则令b=x,否则令a=x,转到(2)继续求解。

#include<stdio.h>
#include<math.h>
double f( double x ) {
return log(x) + 2 * x - 3;
}

int main() {
double a=1.0,b=2.0,x;
do {
x=(a+b)/2;
if (f(a)*f(x)<0) {
b =x;
} else {
a=x;
}
} while ( fabs( f(x) )>0.0000000001); // f (x)≈0 应该是 f(x) 的绝对值小于一个很小的数
printf("%f",x);
return 0;
}
基本上同意二楼的观点,但二楼的程序好象是算不出来结果吧,在二楼的思路上进行了修改,你试试看
另外欢迎楼主加入C++初学者QQ群:83456901
我们都是C++初学者,我们的共同目标是学习好C++,本群就是大家共同交流、提高的好平台

我来改一下吧,定义函数这块,可能你不太熟悉吧

#include<stdio.h>
#include<math.h>
double f( double x )
{
return log(x) + 2 * x - 3;
}

int main()
{
double a=1.0,b=2.0;
do
{
double x=(a+b)/2;
if(f(a)*f(x)<0)
{
b=x;
}
else
{
a=x;
}
}while( fabs( f(x) )<0.00001); // f (x)≈0 应该是 f(x) 的绝对值小于一个很小的数
printf("%f",x);
r