matlab编程,用双点弦截法求x^3-3x-1=0在x0=2附近的根,要求准确到四位有效数字

matlab编程,用双点弦截法求x^3-3x-1=0在x0=2附近的根,要求准确到四位有效数字,第1张

第一个m文件:

function

y=f(t)

y=t^3-3*t-1

写好第一个m文件并保存成bangf后,再写下面的m文件,其中双点初值分别取为1和2:

i=0

%迭代此处记数

t1=1

%迭代初值t1

t2=2

%迭代初值t2

while

i<=100

y=t2-bangf(t2)/(bangf(t2)-bangf(t1))*(t2-t1)%弦截法迭代格式

if

abs(y-t2)>10^(-6)

%收敛判据

t1=t2

t2=y

else

break

end

i=i+1

end

fprintf('\n%s%.6f\t\t%s%d%','待求根x=',y,'迭代次数i=',i)

%输出结果

点运行后(run)后,结果显示:

待求根x=1.879385

迭代次数i=5>>

准确解是1.87938524

参考资料里面的matlab代码部分就是由我编辑的。

题主给出方程可以使用数值分析的方法来解决。由于该方程是一个比较特殊的方程,应考虑合适的数值方法(如弦截法),分析该方程求和式,可以发现x在100-1000之间有最大值,其值 x=732.79727,y = -5.55e-16。

实现思路:

1、自定义f(x)函数,其内容①利用symsum函数求Σ值;②利用eval函数计算f(x)值

2、自定义secant弦截法函数,根据弦截法的迭代公式编写。

3、运行主代码

x0=100.5x1=1205tol=1e-4%tol误差

x=secant(x0,x1,tol)

y=fun(x) %验证y是否等于0

4、运行结果

牛顿法

>>x=newton(0,0.0001)

n =

5

x =

1.36880810782267

弦截法

>>secant(0,2,0.0001)

n =

7

ans =

1.36880810782137


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

原文地址: http://outofmemory.cn/yw/7784273.html

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

发表评论

登录后才能评论

评论列表(0条)

保存