k=i-1; xk=x(i);[(i-1) xk yk piancha xdpiancha]
return ;
end
end
if i>gxmax
disp('请注意:迭代次数超过给定的最大值gxmax 。')
k=i-1; xk=x(i);[(i-1) xk yk piancha xdpiancha]
return ;
end
[(i-1),xk,yk,piancha,xdpiancha]';
例 3 用牛顿切线法求方程01322
3=+-x x 在9.04.00和-=x 的近似根,要求精度310-=ε.
解
1)先将上面的主程序作为M 文件保存;
2)再保存如下的两个M 文件:
function y=fun(x)
y=2*x^3-3*x^2+1;
function y=dfun(x)
y=6*x^2-6*x;
3)最后在工作窗口输入命令
>> [k,xk,yk,piancha,xdpiancha]=newtonqx(-0.4,0.001, 0.001,100) 运行后输出初始值4.00-=x 和9.00=x 的迭代结果分别为:
k =3,xk =-0.5000,yk =-7.7025e-007,piancha =3.5825e-004,xdpiancha =7.1650e-004 k =7,xk =0.9993,yk =1.5903e-006,piancha =7.2896e-004,xdpiancha =7.2949e-004
1 高斯消元法及其MATLAB 程序
f unction [RA,RB,n,X]=gaus(A,b)
B=[A b]; n=length(b); RA=rank(A);
RB=rank(B);zhica=RB-RA;
if zhica>0,
disp('请注意:因为RA~=RB ,所以此方程组无解.')
return
end
if RA==RB
if RA==n
disp('请注意:因为RA=RB=n ,所以此方程组有唯一解.')
X=zeros(n,1); C=zeros(1,n+1);
for p= 1:n-1
for k=p+1:n
m= B(k,p)/ B(p,p);
B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);
end
end