matlab数值分析程序--高等数学,数值代数的matlab实现-文字版, matlab电子书, 和matlab 有关的电子书:

2.8.2 抛物线法的MATLAB程序

2.8.2  抛物线法的MATLAB程序

抛物线法的MATLAB主程序

function [k,piancha,xdpiancha,xk,yk]=paowu(x1,x2, x3,tol,ftol,gxmax)

X=[x1, x2, x3];

for i=1: gxmax

h0= X(1)- X (3); h1= X (2)- X (3);

u0= fnq (X (1))- fnq (X (3) );

u1= fnq (X (2))- fnq (X (3));

c= fnq (X (3));

fenmu= h0^2* h1- h1^2* h0; afenzi= u0* h1- u1* h0;

bfenzi= u1*h0^2-u0*h1^2;

a= afenzi/ fenmu; b= bfenzi/ fenmu;

deta=b^2-4*a*c;

cha=[abs(X(3)-X(1)),abs(X(3)-X(2)),abs(X(2)- X(1))];

piancha =min(cha); xdpiancha= piancha/( abs (X(3))+eps);

if deta<0

disp('提示:根的判别式值为负数.'),detakf=sqrt(deta);

elseif deta<=0

disp('提示:根的判别式值为零.'),detakf=0;

else

disp('提示:根的判别式值为正数.'),detakf=sqrt(deta);

end

if b<0

           detakf=- detakf;

end

z=-2*c/(b+ detakf);

xk= X(3)+ z;q1= xk - X (1); q2= xk - X (2);

    q3= xk - X (3);

if abs(q2)< abs(q1)

X1=[X(2), X(1), X(3)]; X= X1;Y= fnq(X);

end

if abs(q3)< abs(q1)

X2=[X(1), X(3), X(2)]; X= X2;Y= fnq(X);

end

X(3)= xk; Y(3)=fnq(X(3));

yk= Y(3); [i piancha xdpiancha xk yk]

  if (abs(yk)<ftol)&(( piancha <tol)|(xdpiancha< tol))

        k=i;  X(3)= xk; Y(3)=fnq(X(3));yk= Y(3);

      return;

end

end

if i>gxmax

     disp('请注意:迭代次数超过给定的最大值gxmax,请重新输入初始值x1,x2,x3')

  return;

end

P=[i,piancha,xdpiancha,xk,yk]';

 

例2.8.1  用抛物线法求方程e的一个实根的近似值,使精确到.

解 先用作图法确定初始值x01,x02和x03,然后在MATLAB工作窗口输入程序

>> [k,piancha,xdpiancha,xk,yk]= paowu (-0.4,-0.3, -0.5,1e-4, 1e-4,100)

运行后输出结果

提示:根的判别式值为正数.

ans =

  Columns 1 through 4

   1.00000000000000   0.10000000000000   0.20000000000000  -0.39066350562239

  Column 5

  -0.00005581900299

提示:根的判别式值为正数.

ans =

  Columns 1 through 4

   2.00000000000000   0.00933649437761   0.02389906977038  -0.39064638365394

  Column 5

  -0.00000000923532

提示:根的判别式值为正数.

ans =

  Columns 1 through 4

   3.00000000000000   0.00001712196845   0.00004382983990  -0.39064638082059

  Column 5

   0.00000000000000

k =

     3

piancha =

    1.712196845282676e-005

xdpiancha =

    4.382983989938760e-005

xk =

  -0.39064638082059

yk =

    2.220446049250313e-016

即,迭代k =3次,得到精度为的根的近似值xk =-0.390 6,其函数值为yk =2.220 4e-016,xk的相邻最小偏差为piancha =1.712e-005,其相对误差为xdpiancha =4.383 0e-005.


欢迎转载,转载请注明来自一手册:http://yishouce.com/book/3/3020802.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1