matlab迭代问题设方程 4x^4-4x^2=02.用迭代法求的所有根,设迭代函数为f(x)=(3x^3-x)/(4x

问题描述:

matlab迭代问题
设方程 4x^4-4x^2=0
2.用迭代法求的所有根,设迭代函数为f(x)=(3x^3-x)/(4x^2-2)
1)验证取该迭代函数的正确性;
2)分别取初值为-1.1,-1,-0.9,….,0.9,1,1.1,观察迭代结果,是否得到了原方程的根;
3)由2),总结出使得迭代序列收敛到每个根时,初值的范围,比如要使迭代序列收敛到0(方程的一个根)初值应该在什么集合中选取,找出每个根的这样的初值集合.寻找的方法,可以是理论分析方法或数值实验方法
1个回答 分类:数学 2014-10-11

问题解答:

我来补答
用这两句代码
syms x
solve(4*x^4-4*x^2)
求得根:
ans =
0
0
1
-1
1)验证取该迭代函数的正确性
就是把根代进去,看是否能得到0
root =
0 1 -1
牛顿法,初始值p0=0
误差限10^-6,结果误差|p-p0|=
0
用牛顿法求得方程的根为
0
牛顿法,初始值p0=1
误差限10^-6,结果误差|p-p0|=
0
用牛顿法求得方程的根为
1
牛顿法,初始值p0=-1
误差限10^-6,结果误差|p-p0|=
0
用牛顿法求得方程的根为
-1
plus =
0 1 -1
故该函数正确.
代码:
root=[0,1,-1]
f=@(x)(3*x.^3-x)./(4*x.^2-2);
plus=zeros(1,size(root,2));
for counter=1:size(root,2)
n0=80;
p0=root(counter);
disp(['牛顿法,','初始值p0=',num2str(p0)])
for i=1:n0
p=f(p0);
if abs(p-p0)
 
 
展开全文阅读
剩余:2000