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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)