clc;clear
a=0;b=1;
fa=1-a-sin(a);
fb=1-b-sin(b);
c=(a+b)/2;
fc=1-c-sin(c);
if fafb>0,break,end
while abs(fc)>0510^(-4)
c=(a+b)/2;
fc=1-c-sin(c);
if fbfc>0
b=c;
fb=fc;
else
a=c;
fa=fc;
end
end
format long
fx=fc,x=c
结果:
fx =
-2414986223420179e-005
x =
0510986328125000
精确
>> x=solve('1-x-sin(x)')
x =
Matlab里面采用的算法我不知道是不是二分法,但是结果都很精确的。这里你可以尝试fzero命令解,当然你也可用solve命令。
syms x
f=@(x)x^4-3x+1;
x=fzero(f,03)
运行结果:
x =
0337666765642802
如果用solve的话:x=solve('x^4-3x+1','x')
运行结果
x =
13074861009619814743401358603156
033766676564280153320879436151842
12603179610870827670267000833439i - 082257643330239150377446511091699
- 12603179610870827670267000833439i - 082257643330239150377446511091699
这是个人的看法,希望对你有帮助。祝生活愉快!
function erfenfa(a,b)
s=(a+b)/2;
while b-a>1e-5
if fun(a)fun(s)>0
a=s;
elseif fun(a)fun(s)<0
b=s;
elseif fun(s)==0
disp(s);
end
s=(a+b)/2;
end
disp(s);
function y=fun(x)
y=x^3-2x-5;
end
end
使用方法:
dichotomy_fun=inline('x^3-3x^2-3','x') %自定义函数
dichotomy(dichotomy_fun,2,4,1e-4) %用二分法求解
运行结果:
这个定义一个函数。
f =@(x)x^3-3x^2-x+3;
的意思是说定义一个函数f(x),它只有一个自变量。
使用时,直接可以用f(1)它就是x=1时的函数值。
另外多参数可以是:
f=@(x,y)sqrt(x^2+y^2),求点到原点的距离。
%对称三对角矩阵特征值的二分法
program ex0001 integer n
real x1,x2,x,f1,f2,fx,eps
real,allocatable::d(,e(
write(,) "Please enter n:" read(,) n
allocate(d(n),e(n-1)) eps=10E-6 fx=10 do j=1,n d(j)=-2 end do do j=1,n-1 e(j)=1 end do
!write(,) "Please enter array d and e:" !read(,) d,e a1=d(1)-e(1) a2=d(1)-2e(1) a3=d(1)+e(1) a4=d(1)+2e(2) y1=min(a1,a2)
- 2 -
y2=max(a4,a3) y=(y2-y1)/n x1=y1 x2=y1+y
write(,)"矩阵的特征值为:" do m=1,n temp=x2
10 if(abs(fx)>eps) then x=(x1+x2)/2
f1=MValue(x1,n,d,e) f2=MValue(x2,n,d,e) fx=MValue(x,n,d,e)
if (fxf1>0) then x1=x else x2=x end if
go to 10 end if
print,"--------------------" write(,) x x1=temp x2=temp+y z=(x1+x2)/2
fx=MValue(z,n,d,e) end do
print,"--------------------"
contains
real function mValue(x,n,d,e) Integer n,i real x
real d(n),e(n-1),s(n) S(1)=x-d(1)
S(2)=(x-d(1))(x-d(2))-e(1)2
- 3 -
Do i=3,n
S(i)=(x-d(i))s(i-1)-e(i-1)2s(i-2) End do
mValue=s(n) return
End function mValue
end
这是程序,没排版的,自己排吧,绝对能用
先确定出根的大致区间(a,b),然后使用下面程序:(MATLAB实现)
while b-a>n
c=(a+b)/2;
if f(c)>=0
b=c;
else
a=c;
end
end
x=(a+b)/2
注:n 为你想得到的计算精度,f(x)为方程多项式
以上就是关于用MATLAB程序编程:分析方程f(x)=sinx-x/2=0正根的分布情况,并用二分法求正根近似值,使误差不超过0.01.全部的内容,包括:用MATLAB程序编程:分析方程f(x)=sinx-x/2=0正根的分布情况,并用二分法求正根近似值,使误差不超过0.01.、用二分法求方程x^4-3x+1=0的近似解matlab程序,误差不超过0.005,区间在0.3到0.4、求matlab程序。 二分法求方程x^3-2x-5=0在(2.3)内的根。要求误差不超过1/2乘1等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)