用MATLAB程序编程:分析方程f(x)=sinx-x2=0正根的分布情况,并用二分法求正根近似值,使误差不超过0.01.

用MATLAB程序编程:分析方程f(x)=sinx-x2=0正根的分布情况,并用二分法求正根近似值,使误差不超过0.01.,第1张

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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9978062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存