C语言编程 现在实验课 急求啊 在线等!!!!!!!!!!!!!!!!
是计算方法的作业用二分法求Xe^X-1=0在[0,1]在[0,1]内的实根(ε=10^-5)。求程序啊快点啊大神们老师要看的而且我看我同学的设计的不是很多希望C语言不错的...
是计算方法的作业 用二分法求Xe^X-1=0在[0,1]在[0,1]内的实根(ε=10^-5)。
求程序啊 快点啊 大神们 老师要看的 而且我看我同学的设计的不是很多 希望C语言不错的大神门快帮帮我啊,跪求啦!!!!!!
用二分法求Xe^X-1=0在[0,1]在[0,1]内的实根(ε=10^-5)。 展开
求程序啊 快点啊 大神们 老师要看的 而且我看我同学的设计的不是很多 希望C语言不错的大神门快帮帮我啊,跪求啦!!!!!!
用二分法求Xe^X-1=0在[0,1]在[0,1]内的实根(ε=10^-5)。 展开
展开全部
/*
方程的根为 : 0.567143
*/
#include <stdio.h>#include <math.h>
double function(double x) { return x * exp(x) - 1.0;
}
int search(double low,double high,double *root) { double mid,val;
while(low <= high) {
mid = (high + low)/2;
val = function(mid);
if(fabs(val) <= 1E-6) {
*root = mid;
return 1;
}
if(val < 0.0) low = mid;
if(val > 0.0) high = mid;
}
return 0;
}
int main() { double root;
if(search(0,1,&root))
printf("方程的根为 : %lf\n",root);
else printf("在给定区间内无根。\n");
fflush(stdin);
getchar();
return 0;
}
方程的根为 : 0.567143
*/
#include <stdio.h>#include <math.h>
double function(double x) { return x * exp(x) - 1.0;
}
int search(double low,double high,double *root) { double mid,val;
while(low <= high) {
mid = (high + low)/2;
val = function(mid);
if(fabs(val) <= 1E-6) {
*root = mid;
return 1;
}
if(val < 0.0) low = mid;
if(val > 0.0) high = mid;
}
return 0;
}
int main() { double root;
if(search(0,1,&root))
printf("方程的根为 : %lf\n",root);
else printf("在给定区间内无根。\n");
fflush(stdin);
getchar();
return 0;
}
更多追问追答
追问
这是C语言么?我现在大二 好像里面有一些有难度的函数啊 而且好像最后的结果应该是0.567146
追答
这是标准的C语言代码,没有掺杂任何编译器的特色内容。
运行的结果可用电脑上的计算器进行验证,之所以最后一位不同,可能是控制精度的不同造成的,你是否注意到我的代码的控制精度是1E-6,而不是1E-5?
展开全部
#include<stdio.h>
#include<math.h>
void main()
{
float x0,x1,x2,fx0,fx1,fx2;
printf("input x1,x2");
scanf("%f %f",&x1,&x2);
fx1=x1*pow(2.7,x1)-1;
fx2=x2*pow(2.7,x2)-1;
do
{
x0=(x1+x2)/2;
fx0=x0*pow(2.7,x0)-1;
if((fx0*fx1)<0)
{
x2=x0;
fx2=fx0;
}
else
{
x1=x0;
fx1=fx0;
}
}while(fabs(fx0)>1e-5);
printf("x= %f",x0);
}
你只要输入他的两个区间就行了
#include<math.h>
void main()
{
float x0,x1,x2,fx0,fx1,fx2;
printf("input x1,x2");
scanf("%f %f",&x1,&x2);
fx1=x1*pow(2.7,x1)-1;
fx2=x2*pow(2.7,x2)-1;
do
{
x0=(x1+x2)/2;
fx0=x0*pow(2.7,x0)-1;
if((fx0*fx1)<0)
{
x2=x0;
fx2=fx0;
}
else
{
x1=x0;
fx1=fx0;
}
}while(fabs(fx0)>1e-5);
printf("x= %f",x0);
}
你只要输入他的两个区间就行了
追问
有错误。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
顶了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询