资源描述:
《matlab编程实现二分法_牛顿法_黄金分割法_最速下降matlab程序代码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.word可编辑.用二分法求解内的极小值点,要求准1.function[td]=erfenfa(a,b)k=1;%记录循环次数whileabs(a-b)>0.0005c=(a+b)/2;C(k)=c;%存储每次循环中点c的值ifff(c)<0a=c;endifff(c)==0t1=c;break;endifff(c)>0b=c;endk=k+1;endt=(a+b)/2;%最终符合要求的值d=f(t);%最优解Ckfunctiony=f(t)y=t^4-2*t^2-4*t;functiony=ff(t)y=4
2、*t^3-4*t-4;运行结果>>[td]=erfenfa(1,1.5)C=Columns1through9.专业.专注..word可编辑.1.25001.37501.31251.34381.32811.32031.32421.32621.3252Column101.3247k=11t=1.3250d=-5.72901.黄金分割法f(x)=x3-2x+1初始区间[0,3],收敛精度0.5function[t,f]=huangjinfenge(a,b)m=1-(sqrt(5)-1)/2;t2=a+m*(b-a)
3、f2=g(t2);t1=a+b-t2f1=g(t1);whileabs(t1-t2)>0.5iff1[t,f]=huangjinfenge(0,3)t2=1.1459t1=1.8541t1=1.1459t2=0.7
4、082t=.专业.专注..word可编辑.0.9271f=-0.0574>>1.用牛顿法求解初始迭代点为x0=0.4,要求准确到小数点后第5位小数function[t1,d]=Newton(t0)t=t0-ff(t0)/fff(t0);k=1;%记录迭代次数T(1)=t;%存储迭代点whileabs(t-t0)>0.000005t0=t;t=t0-ff(t)/fff(t);k=k+1;T(k)=t;endt1=t0;d=f(t1);kTfunctiony=f(x)y=9*x^2-sin(x)-1;functi
5、ony=ff(x)y=18*x-cos(x);functiony=fff(x)y=18+sin(x);运行结果>>[t1,d]=Newton(0.4).专业.专注..word可编辑.k=3T=0.05860.05550.0555t1=0.0555d=-1.0277>>1.最速下降法验证课本上的例题求解初始迭代点为x0=0.4,要求准确到小数点后第5位小数function[G,g,X,F]=zuisu(X0)F(1)=f(X0);%存储x点处的值G(:,1)=h(X0);%存储梯度向量g(1)=norm(G(:
6、,1));%存储梯度模长X(:,1)=X0;%存储x值A=[2,0;0,8];forj=1:2X(:,j+1)=X(:,j)-(G(:,j)'*G(:,j))/(G(:,j)'*A*G(:,j))*G(:,j);F(j+1)=f(X(:,j+1));G(:,j+1)=h(X(:,j+1));g(j+1)=norm(G(:,j+1));end.专业.专注..word可编辑.if(G(:,2)'*G(:,1)<1E-10&G(:,3)'*G(:,2)<1E-10)disp(['相邻两搜索方向是正交的'])endf
7、unctiony=f(X)y=X(1)^2+4*X(2)^2;functionn=h(X)n=[2*X(1),8*X(2)]';运行结果>>[G,g,X,F]=zuisu(X0)相邻两搜索方向是正交的G=2.00001.47690.22158.0000-0.36920.8862g=8.24621.52240.9134X=1.00000.73850.11081.0000-0.04620.1108F=.专业.专注..word可编辑.5.00000.55380.0613>>.专业.专注.