数学建模社区-数学中国

标题: MATLAB求解牛顿法 [打印本页]

作者: ivanlover    时间: 2011-3-27 19:39
标题: MATLAB求解牛顿法
老是报错,不知道错哪里了,求帮助。
  1. function F=Newton(a,b,TOL)
  2. N=100;
  3. TOL1=0.01;
  4. k=1;
  5. FA=f(a);
  6. flag=1;
  7. while (b-a)/2 >= TOL1 && k<N
  8.     c=(a+b)/2;
  9.     FP=f(c);
  10.     if abs(FP)<TOL
  11.         p=c;
  12.         flag=2;
  13.         break
  14.     elseif sign(FA)*sign(FP)>0
  15.         a=c;
  16.         FA=FP;
  17.     else
  18.         b=c;
  19.     end
  20.     k=k+1;
  21. end
  22. p=c;
  23. p0=c;
  24. p1=zeros(N,1);
  25. p2=zeros(N,1);
  26. for m=1:N
  27.     p1(m)=p0-f(p0)/g(p0);
  28.     p2(m)=p1(m)-f(p1(m))/g(p1(m));
  29.     p(m+1)=p0-(p1(m)-p0)*(p1(m)-p0)/(p2(m)-2*p1(m)+p0);
  30.     if abs(p(m+1)-p0)<TOL
  31.         flag=0;
  32.         F=[p f(p);[p1 0];[f(p1) 0];[p2 0];[f(p2) 0]];
  33.         break
  34.     else
  35.         p0=p(m+1);
  36.     end
  37. end
  38. if k==N
  39.     fprintf('The Bisection method failed after %d iterations.\n',N);
  40.     F=[a f(a) b f(b)];
  41.     return
  42. end
  43. if flag==2
  44.     fprintf('The Newton`s method failed after %d iterations.\n',N);
  45.     F=[p f(p) [p1;0] [f(p1);0] [p2;0] [f(p2);0]];
  46. end
  47. F;
复制代码


作者: ivanlover    时间: 2011-3-27 19:56
走过路过,千万帮我做做………………
作者: jjc616    时间: 2011-3-27 23:23

作者: ivanlover    时间: 2011-3-28 23:33
回复 jjc616 的帖子

经过两个小时的努力,程序的问题顺利解决啦




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5