c语言中 是什么意思二分法求根

二分法求解非线性方程的困惑
[问题点数:20分]
二分法求解非线性方程的困惑
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
本帖子已过去太久远了,不再提供回复功能。C语言二分法求解 牛人来救我_数值分析吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:506贴子:
C语言二分法求解 牛人来救我收藏
f(x)=x^6-5x^5+3x^4+x^3-7x^2+7x-20=0&&区间是[-2,5],&步长h=0.2,误差在0.000001内,刚接触数值分析老师突然给来个这题,希望有人帮下,给点思路,感激不尽!&
1楼 17:05&|
快试试吧,可以对自己使用挽尊卡咯~◆◆
#include&stdio.h&#include&math.h&#include&conio.h&void main(){&&& float a,b,c;&&& float f(float x);&&&&&& for(i=1,a=0,b=1;i&=15;i++)&& {&&&&& c=(a+b)/2;&&&&& if(f(c)*f(a)&0)&&&&& b=c;&&&&& else&&&&& a=c;&&&& cout&&a&&b;&&& }&&& getch();&&& return 0;}
float f(float x){&&&&&&&&&& y=x*x*x*x*x+x-1;&&&&& return(y);}&&
3楼 19:50&|
快试试吧,可以对自己使用挽尊卡咯~◆◆
步骤如下:Beginstep 1:输入n。step 2:定义f(x)= x^2-n。step 3:输入区间左端点a、右端点b及计算误差d。step 4:判断f(a)=0,若 是,则a就是方程的根。&&&&&&&&&&&&&&&&&&&& 若 否,next step。step 5:判断f(b)=0,若 是,则b就是方程的根。&&&&&&&&&&&&&&&&&&&& 若 否,next step。step 6:判断f(a)* f(b)&0,若 是,next step。&&&&&&&&&&&&&&&&&&&&&&&&&& 若 否,输出错误提示,结束程序。step 7:令m=(a+b)/2。step 8:判断f(m)=0,若 是,则m是x^2-n=0的根。&&&&&&&&&&&&&&&&&&&& 若 否,next step。step 9:判断f(a)*f(m)&0,若 是,则根在(a,m)之间。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 令 b=m,则根在新区间(a,b)上。&&&&&&&&&&&&&&&&&&&&&&&&& 若 否,则根在(m,b)之间。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 令 a=m,则根在新区间(a,b)上。step 10:判断(a-b)&d,若 否,返回step 7,继续区间取半的循环过程。&&&&&&&&&&&&&&&&&&&&&&&&& 若 是,则在区间(a,b)上任意取值均为满足条件的近似根,一般可以取(a+b)/2。step 11:输出结果。End
4楼 19:57&|
程序好像有点问题
5楼 16:38&|
快试试吧,可以对自己使用挽尊卡咯~◆◆
1、for中的约束条件有问题;2、cout位置不对,在那儿输出干什么?
6楼 22:57&|
快试试吧,可以对自己使用挽尊卡咯~◆◆
再说了程序也没用math头文件中的函数
7楼 22:58&|
快试试吧,可以对自己使用挽尊卡咯~◆◆
8楼 10:53&|
Private Sub Form_Click() Dim x1 As Single Dim x2 As Single
'必须保证X1对于函数得绝对的正值
'必须保证X2对于函数得绝对的负值
x = qg(x1, x2) Print xEnd SubPrivate Function hs(x As Single) As Single
hs = x ^ 6 - 5 * x ^ 5 + 3 * x ^ 4 + x ^ 3 - 7 * x ^ 2 + 7 * x '定义求根函数End FunctionPrivate Function qg(z1 As Single, z2 As Single) As Single
'二分法求根 Do
If hs(z1) * hs((z1 + z2) / 2) & 0 Then
z2 = (z1 + z2) / 2
ElseIf hs(z1) * hs((z1 + z2) / 2) & 0 Then
z1 = (z1 + z2) / 2
End If Loop Until Abs((z1 - z2) / (z1 + z2)) &= 0.001qg = (z1 + z2) / 2End Function该法使用VB编写,控制相对误差限不超过千分之一,如果你对精度有要求,可以改变参数类型。
10楼 10:16&|
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
内&&容:使用签名档&&
想了解更多关于 ”数值分析“的信息,请&或C语言用二分法求解的具体程序_百度知道
C语言用二分法求解的具体程序
C语言二分法求方程实根,f(x)=x^6+5x^5+3x^4+x^3-7x^2+7x-20=0,根的区间是[-2,5]步长为h=0.2,误差不大于0.000001
给出具体的程序,谢谢!
提问者采纳
double power(double x,int n) { double result=1; for (i=0;i&n;i++) result*=x; } main() { double lx,rx,x,s; lx=-2;rx=5; do { x=(lx+rx)/2; s=power(x,6)+power(x,5)*5+power(x,4)*3+power(x,3)-x*x*7+7*x-20; if (s&0) rx=x; else lx=x; } while (fabs(s)&0.000001); printf(&%f\n&,x); }
其他类似问题
二分法的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c语言二分法求根_百度知道
c语言二分法求根
#include &stdio.h&void main(){ float y1,y2,y3,h,l,m; h=10;l=-10; do { m=(h+l)/2; y1=2*h*h*h-4*h*h+3*h-6; y2=2*l*l*l-4*l*l+3*l-6; y3=2*m*m*m-4*m*m+3*m-6; if(y1*y3&0)l=m; if(y2*y3&0)h=m; } while(y1-y2&1e-6); printf(&x=%.2f&,m);}程序没结果??哪里错了吗?
提问者采纳
把float换成double即可,因为float精度不够,不能逼近到1e-6,所以你的程序在死循环里面出不来。
提问者评价
太给力了,你的回答完美解决了我的问题!
其他类似问题
二分法的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c语言中 的文章

 

随机推荐