matlab二分法求方程x^3-x-1=0
由介值定理,若一个函数在某个区间的两端点异号,则该函数在该区间内有根存在。求根的一种方法—二分法就是基于此原理而来。所谓二分法就是将已给区间两等分,取中点的函数值作为近似...
由介值定理,若一个函数在某个区间的两端点异号,则该函数在该区间内有根存在。求根的一种方法—二分法就是基于此原理而来。所谓二分法就是将已给区间两等分,取中点的函数值作为近似值,若求得的近似值不满足精度要求,确定二分后新的有根区间,然后检查新的近似值是否达到精度要求,依此类推。用二分法求方程x3-x-1=0在区间[1,1.5]内的一个实根,要求两次近似值之间的误差不超过0.001。
哪位亲知道这道题的解法请告诉我,谢谢啦 展开
哪位亲知道这道题的解法请告诉我,谢谢啦 展开
4个回答
展开全部
这是源代码:
在matlab中保存为:bisection.m
function rtn=bisection(fx,xa,xb,n,delta)
% Bisection Method
% The first parameter fx is a external function with respect to viable x.
% xa is the left point of the initial interval
% xb is the right point of the initial interval
% n is the number of iterations.
x=xa;fa=eval(fx);
x=xb;fb=eval(fx);
disp(' [ n xa xb xc fc ]');
for i=1:n
xc=(xa+xb)/2;x=xc;fc=eval(fx);
X=[i,xa,xb,xc,fc];
disp(X),
if fc*fa<0
xb=xc;
else xa=xc;
end
if (xb-xa)<delta,break,end
end
>>f='x^3-x-1';
>>bisection(f,1,1.5,20,10^(-3))
[ n xa xb xc fc ]
1.0000 1.0000 1.5000 1.2500 -0.2969
2.0000 1.2500 1.5000 1.3750 0.2246
3.0000 1.2500 1.3750 1.3125 -0.0515
4.0000 1.3125 1.3750 1.3438 0.0826
5.0000 1.3125 1.3438 1.3281 0.0146
6.0000 1.3125 1.3281 1.3203 -0.0187
7.0000 1.3203 1.3281 1.3242 -0.0021
8.0000 1.3242 1.3281 1.3262 0.0062
9.0000 1.3242 1.3262 1.3252 0.0020
从结果可以看出,
这个解为:1.3262
在matlab中保存为:bisection.m
function rtn=bisection(fx,xa,xb,n,delta)
% Bisection Method
% The first parameter fx is a external function with respect to viable x.
% xa is the left point of the initial interval
% xb is the right point of the initial interval
% n is the number of iterations.
x=xa;fa=eval(fx);
x=xb;fb=eval(fx);
disp(' [ n xa xb xc fc ]');
for i=1:n
xc=(xa+xb)/2;x=xc;fc=eval(fx);
X=[i,xa,xb,xc,fc];
disp(X),
if fc*fa<0
xb=xc;
else xa=xc;
end
if (xb-xa)<delta,break,end
end
>>f='x^3-x-1';
>>bisection(f,1,1.5,20,10^(-3))
[ n xa xb xc fc ]
1.0000 1.0000 1.5000 1.2500 -0.2969
2.0000 1.2500 1.5000 1.3750 0.2246
3.0000 1.2500 1.3750 1.3125 -0.0515
4.0000 1.3125 1.3750 1.3438 0.0826
5.0000 1.3125 1.3438 1.3281 0.0146
6.0000 1.3125 1.3281 1.3203 -0.0187
7.0000 1.3203 1.3281 1.3242 -0.0021
8.0000 1.3242 1.3281 1.3262 0.0062
9.0000 1.3242 1.3262 1.3252 0.0020
从结果可以看出,
这个解为:1.3262
展开全部
这是源代码:
在matlab中保存为:bisection.m
function
rtn=bisection(fx,xa,xb,n,delta)
%
Bisection
Method
%
The
first
parameter
fx
is
a
external
function
with
respect
to
viable
x.
%
xa
is
the
left
point
of
the
initial
interval
%
xb
is
the
right
point
of
the
initial
interval
%
n
is
the
number
of
iterations.
x=xa;fa=eval(fx);
x=xb;fb=eval(fx);
disp('
[
n
xa
xb
xc
fc
]');
for
i=1:n
xc=(xa+xb)/2;x=xc;fc=eval(fx);
X=[i,xa,xb,xc,fc];
disp(X),
if
fc*fa<0
xb=xc;
else
xa=xc;
end
if
(xb-xa)<delta,break,end
end
>>f='x^3-x-1';
>>bisection(f,1,1.5,20,10^(-3))
[
n
xa
xb
xc
fc
]
1.0000
1.0000
1.5000
1.2500
-0.2969
2.0000
1.2500
1.5000
1.3750
0.2246
3.0000
1.2500
1.3750
1.3125
-0.0515
4.0000
1.3125
1.3750
1.3438
0.0826
5.0000
1.3125
1.3438
1.3281
0.0146
6.0000
1.3125
1.3281
1.3203
-0.0187
7.0000
1.3203
1.3281
1.3242
-0.0021
8.0000
1.3242
1.3281
1.3262
0.0062
9.0000
1.3242
1.3262
1.3252
0.0020
从结果可以看出,
这个解为:1.3262
在matlab中保存为:bisection.m
function
rtn=bisection(fx,xa,xb,n,delta)
%
Bisection
Method
%
The
first
parameter
fx
is
a
external
function
with
respect
to
viable
x.
%
xa
is
the
left
point
of
the
initial
interval
%
xb
is
the
right
point
of
the
initial
interval
%
n
is
the
number
of
iterations.
x=xa;fa=eval(fx);
x=xb;fb=eval(fx);
disp('
[
n
xa
xb
xc
fc
]');
for
i=1:n
xc=(xa+xb)/2;x=xc;fc=eval(fx);
X=[i,xa,xb,xc,fc];
disp(X),
if
fc*fa<0
xb=xc;
else
xa=xc;
end
if
(xb-xa)<delta,break,end
end
>>f='x^3-x-1';
>>bisection(f,1,1.5,20,10^(-3))
[
n
xa
xb
xc
fc
]
1.0000
1.0000
1.5000
1.2500
-0.2969
2.0000
1.2500
1.5000
1.3750
0.2246
3.0000
1.2500
1.3750
1.3125
-0.0515
4.0000
1.3125
1.3750
1.3438
0.0826
5.0000
1.3125
1.3438
1.3281
0.0146
6.0000
1.3125
1.3281
1.3203
-0.0187
7.0000
1.3203
1.3281
1.3242
-0.0021
8.0000
1.3242
1.3281
1.3262
0.0062
9.0000
1.3242
1.3262
1.3252
0.0020
从结果可以看出,
这个解为:1.3262
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我做过这个题,就是这个原理, 既然你知道了,就算算呀。不过用matlab 可以直接解得。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a=[1 0 -1 -1];
roots(a)
或者
solve('x^3-x-1=0')
roots(a)
或者
solve('x^3-x-1=0')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询