二分法编译
‘壹’ 一个c++编程问题-二分法求方程的根
//---------------------------------------------------------------------------
#include<iostream>
using namespace std;
double func (const double x);
double findRoot( double first, double last,const double e); /*注意这里,应盯正该是分号而不是冒号*/
int main ()
{
double a,b ,c,root;
cout<<"Input a ";
cin>>a;
cout<<"Input b";
cin>>b;
cout<<"Input c";
cin>>c;
root=findRoot(a,b,c);
cout<<罩则宏"物册The root is"<<root<<endl;
return 0;
}
double func(const double x)
{
double y;
y=x*(x+5)*(x-1);
return y;
}
double findRoot(double first, double last,const double e)
{
double mid,y0,y1,y2;
mid=(first+last)/2;
while((last-first)>e)
{
y0=func (mid);
y1=func(first);
y2=func(last);
if (y0==0) return mid;
else if(y0*y1<0) last=mid;
else first=mid; /*注意这里*/
mid=(first+last)/2;
}
return mid;
}
//---------------------------------------------------------------------------
‘贰’ 我的二分法求近似根的用c语言写的程序代码,编辑编译没有错误,没有警告,但程序运行到循环体就不走了
#include <stdio.h>中宽
#include <math.h>
#define eps 0.0001
double f (double x)
{
double y;
y=x*x*x-x-1;
return(y);
}
main()
{
int i=0;double t;int a,b;
printf("这是一个用二分法求函数近似根的程序(精确度为10^-4)铅毕!请用户输入区间两个端点a和b的值:\卖激亮n");
scanf("%d,%d",&a,&b);
for(;fabs(b-a)>eps;)
{
t=(a+b)/2;
i++;
if(f(a)*f(t)<0)
a=t;
else
b=t;
}
printf("函数近似根为%.4f\n",t);
printf("二分的次数为%d\n",i);
}
你写反了
‘叁’ c语言编程 二分法解方程
这段代码是求解方程f(x)=0在区间[-10,10]上的根的数值解。
方法的思想就是:念野一直选取区间中间的数值,如果发弊高没现中间的函数值与一侧函数值租纳,异号,那么说明解在这个更小的区间中,采用eps=1e-5作为区间的极限大小,通过迭代的方法求解这个方程的数值解。
所以了解了上述思想,那么else if(f(a)*f(c)<0) b=c; 说明的是 f(a)和f(c)异号,那么使用b=(a+b)/2缩小迭代区间,继续迭代;同理else a=c;说明f(a)和f(c)同号,那么使用a(a+b)/2缩小迭代区间,继续迭代!
‘肆’ c++一个二分法的代码....编译程序时 会出现这个警告statement has no effect,然后运行之后是空白啊
#include<iostream>
usingnamespacestd;
intfind(int,int[],int);
intmain()
{
inta[]={1,23,32,34,43,54,66,78,80,88,89,90,98};
intcheck=find(43,a,13);
if(check==13)//比较大小是==
{
cout<<"没有查找到数据 ";
}
else
cout<<"43在数组a中的位置是:"<<check+1<<endl;
return0;
}
intfind(intm,inta[],intn)
{
into=0,h=n-1,i;
while(o<=h)//是o<=h,不是0
{
i=(o+h)/2;
if(a[i]==m)
{
returni;
}
elseif(a[i]<m)
{
o=i+1;//o=i+1
}
elseif(a[i]>m)
h=i-1;//h=i-1
}
returnn;
}
有逻辑问题
‘伍’ c语言二分法求根
二分法计算函数f(x)=x*x*x*x+2*x*x*x-x-1;
本程序在turbo c或c++下编译:
#include "stdio.h"
#include <math.h>
float f(float x)
{float y;
y=x*x*x*x+2*x*x*x-x-1;
return y;
}
void main()
{float a=0,b=0,h,y,x;
int k,n0;
printf("please input qujian a and b");
scanf("%f%f%d",&a,&b,&n0); /*输入含根区间a,b,循环次数n0 */
for(k=0;k<=n0;k++)
{ x=(a+b)/2;
h=(b-a)/2;
y=f(x);
if(h<10e-6||fabs(y)<10e-6)
{ printf("k=%d,x=%f,y=%f",k,x,y);
break; } /*输出分半次数k,函数的根x,及x对应的函数值.*/
else
{if(f(a)*f(x)<0)
b=x;
else a=x;
}
}
}