用二分法求方程(2x^3)-(4x^2)-3x+1=0的最大的根

用二分法求方程(2x^3)-(4x^2)-3x+1=0的最大的根... 用二分法求方程(2x^3)-(4x^2)-3x+1=0的最大的根 展开
snyhs
2010-02-26 · TA获得超过9655个赞
知道大有可为答主
回答量:2150
采纳率:100%
帮助的人:1174万
展开全部
先找到a、b,使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f[(a+b)/2],
现在假设f(a)<0,f(b)>0,a<b
①如果f[(a+b)/2]=0,该点就是零点,
如果f[(a+b)/2]<0,则在区间((a+b)/2,b)内有零点,(a+b)/2=>a,从①开始继续使用
中点函数值判断。
如果f[(a+b)/2]>0,则在区间(a,(a+b)/2)内有零点,(a+b)/2=>b,从①开始继续使用
中点函数值判断。
这样就可以不断接近零点。
通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。
给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:
1 确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ.
2 求区间(a,b)的中点c.
3 计算f(c).
(1) 若f(c)=0,则c就是函数的零点;
(2) 若f(a)·f(c)<0,则令b=c;
(3) 若f(c)·f(b)<0,则令a=c.
4 判断是否达到精确度ξ:即若┃a-b┃<ξ,则得到零点近似值a(或b),否则重复2-4.

1.
设f(x)=2x^3-4x^2-3x+1
f’(x)=6x^2-8x-3
X=(4±√34)/6时,f’(x)=0,即f(x)在X=(4±√34)/6处有拐点,
当x>(4+√34)/6时,f’(x) >0, f(x)单调递增;
当(4-√34)/6<x<(4+√34)/6时,f’(x) <0,f(x)单调递减;
当x<(4-√34)/6时,f’(x) >0, f(x)单调递增。
即f(x)=2x^3-4x^2-3x+1在以上三个区间内各有一个根。且最大根在x>(4+√34)/6区间内。

2.
在x>(4+√34)/6区间内找2个点使f(a)f(b) <0,如a=2,b=3,f(2)=-5<0,f(3)=10>0,则在(2,3)内有0点,中点为5/2;

3.
f(5/2)= -0.25 <0,f(5/2)f(3) <0,,则在(5/2,3)内有0点,中点为11/4;

4.
f(11/4)= 4.09375>0,f(5/2)f(11/4) <0,,则在(5/2,11/4)内有0点,中点为21/8;

5.
f(21/8)= 1.73828125>0,f(5/2)f(21/8) <0,,则在(5/2,21/8)内有0点,中点为41/16;

6.
f(41/16)= 0.69970703125>0,f(5/2)f(41/16) <0,,则在(5/2,41/16)内有0点,中点为81/32;

7.
f(81/32)= 0.21392822265625>0,f(5/2)f(81/32) <0,,则在(5/2,81/32)内有0点,中点为161/64;

8.
f(161/64)= -0.02074432373046875<0,f(81/32)f(161/64) <0,,则在(81/32,161/64)内有0点,中点为323/128;

9.
f(323/128)= 0.09591197967529296875>0,f(161/64)f(323/128) <0,,则在(161/64,323/128)内有0点,中点为645/256;

10.
f(645/256)= 0.03741419315338134765625>0,f(161/64)f(645/256) <0,,则在(161/64,645/256)内有0点,中点为1289/512;

11.
f(1289/512)= 0.00829257071018218994140625>0,f(161/64)f(1289/512) <0,,则在(161/64,1289/512)内有0点,中点为2577/1024;

12.
f(2577/1024)= -0.00623646192252635955810546875<0,f(2577/1024)f(1289/512) <0,,则在(2577/1024,1289/512)内有0点,中点为5115/2048;

13.
f(5155/2048)= 0.00102540734224021434783935546875>0,f(2577/1024)f(5155/2048) <0,,则在(2577/1024,5155/2048)内有0点,中点为10309/4096;

14.
f(10309/4096)= -0.0026061889657285064458847045898438<0,f(10309/4096)f(5155/2048) <0,,则在(10309/4096,5155/2048)内有0点,中点为20619/8192;

15.
f(20619/8192)= -0.0026061889657285064458847045898438<0,f(10309/4096)f(5155/2048) <0,,则在(10309/4096,5155/2048)内有0点,中点为20619/8192≈2.517;

16.
f(2.517)= -0.000311174<0,f(2.517)f(5155/2048) <0,,则在(2.517, 2.5171)内有0点,中点为2.51705;

17.
f(2.51705)= 0.00043264045525>0,f(2.517)f(2.51705) <0,,则在(2.517, 2.51705)内有0点,中点为2.517025;

2.517025为最大根。
厦门鲎试剂生物科技股份有限公司
2023-08-01 广告
计算过程如下:首先,计算4个数值的和:∑Xs = 0.3 + 0.2 + 0.4 + 0.1 = 1然后,计算 lg-1(∑Xs/4):lg-1(∑Xs/4) = lg-1(1/4) = -1其中,lg表示以10为底的对数,即 log10。... 点击进入详情页
本回答由厦门鲎试剂生物科技股份有限公司提供
ki...c@yahoo.com.cn
2010-02-25 · TA获得超过190个赞
知道答主
回答量:112
采纳率:0%
帮助的人:64.6万
展开全部
二分法是纯折腾人,高考不考的。你省省吧,要是真考了你拿刀砍我。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秀逗狂战士
2010-03-06
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
方程式为:f(x) = 0,示例中f(x) = 1+x-x^3
使用示例:
input a b e: 1 2 1e-5
solution: 1.32472
源码如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
double f(double x)
{
return 1+x-x*x*x;
}
int main()
{
double a = 0, b = 0, e = 1e-5;
printf("input a b e: ");
scanf("%lf%lf%lf", &a, &b, &e);
e = fabs(e);
if (fabs(f(a)) <= e)
{
printf("solution: %lg\n", a);
}
else if (fabs(f(b)) <= e)
{
printf("solution: %lg\n", b);
}
else if (f(a)*f(b) > 0)
{
printf("f(%lg)*f(%lg) > 0 ! need <= 0 !\n", a, b);
}
else
{
while (fabs(b-a) > e)
{
double c = (a+b)/2.0;
if (f(a)* f ( c ) < 0)
b = c;
else
a = c;
}
printf("solution: %lg\n", (a+b)/2.0);
}
return 0;
}
例:C++语言[类C编写].
|f(x)|<10^-5 f(x)=2x^3-4x^2+3x-6
#include"iostream"
#include"stdio.h"
#include"math.h"
#define null 0
double fx(double); //f(x)函数
void main()
{
double xa(null),xb(null),xc(null);
do
{
printf("请输入一个范围x0 x1:");
std::cin>>xa>>xb; //输入xa xb的值
printf("%f %f",xa,xb);
}
while(fx(xa)*fx(xb)>=0); //判断输入范围内是否包含函数值0
do
{
if(fx((xc=(xa+xb)/2))*fx(xb)<0) //二分法判断函数值包含0的X取值区间
{
xa=xc;
}
else
{
xb=xc;
}
}
while(fx(xc)>pow(10.0,-5)||fx(xc)<-1*pow(10.0,-5));//判断x根是否在接近函数值0的精确范围内
printf("\n 得数为:%f",xc);
}
double fx(double x)
{
return(2.0*pow(x,3)-4.0*pow(x,2)+3*x-6.0);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式