还剩6页未读,继续阅读
文本内容:
其次章作业冬WEEK2陈杨3110100040名目1问题叙述12问题分析13问题求解21二分法22试位法33不动点迭代法44Newton-Raphson法55割线法:76不同方法的比较81,问题叙述图a是载荷为线性分布的均质梁,如图b所示该梁的挠度曲线方程是y=%-x5+2L2%3-服12QEIL其中,wO=
2.5kN/cmE=50000kN/cm2为弹性模量,I=30000cm4为转动惯量,L=600cm为杆长请计算出该杆的最大挠度值提示杆最大挠度值在满意心=0的x处达到dx2问题分析将原函数求导后,得/=y=-一小」4—6片/+5/.则原问题变为求120EILfx=0时的x的值,即求L4—6L2x2+5%4=时的*的值再比较不同x下的yx值,取其中的最大值即为问题的解3问题求解1二分法在确定方程感爱好的根值区间后,找到一个两端点函数值异号的子区间并考察该子区间的中点的函数值,反复采用根的存在性定理,循环减半根估量区间,递归求得确定精度下的根的估量值在Matlab中先作图来确定根的大致范围,然后再用二分法求精确解观看图可知,该方程有2个解x=600可能是其中的一个解带入验证得fx=O.说明x=600的确为方程的一个解依据挠度的物理含义,x=600时,由于该点被固定,所以弯曲变形时横截面形心沿与轴线垂直方向的线位移即挠度为0因此这个解应舍去则由图可知,另一个解200300下面用二分法求出x的精确解Matlab程序如下formatlong;tic;clc;1=600;f=@x5*x.A4-6*lA2*x.A2+l.A4;%定义要求解的函数a=200;b=300;delta=5e-ll;%定义上下界,容限为㊀ps[cerryc]=bisectffbdelta;w0=
2.5;e=50000;i=30000;g=@x-w0/120夫㊀夫i*1*-x.人5+2夫工人2*x人3-1人4夫x;%计算最大挠度fevalgc;disp[c;err;yc;gc];toe;其中子函数bisect的代码如下function[cerryc]=bisectfabdelta%Input-fisthefunctioninputasastring1f1%-aandbareth㊀leftandright㊀ndpoints%-deltaisthetolerance%Output-cisthezero%-yc=fc%-erristheerrorestimateforcya=fevalfa;yb=fevalfb;ifya*yb0errorinvalidinput!;elsemaxl=l+roundlogb-a-logdelta/log2;fork=l:maxlc=a+b/2;yc=fevalfc;ifyc==Oa=c;b=c;elseifyb*yc〉Ob=c;yb=yc;elsea=c;ya=yc;endifb-adeltabreakendendendc=a+b/2;err=absb-a;yc=fevalfc;㊀nd2试位法最终运行结果为:与二分法不同,每次区间的划分点不在中点,而是两区间函数值点连线与x轴的交点递归地做这样的划分求解最终的结果Matlab程序如下clear;clc;x_l=200;%theinitialvalueoftheleftboundofxis0x_r=300;%theinitialvalueoftherightboundofxis1x_c=x_r;%x_cisthecrosspointofthetwobound-lineandthex-axisx_t=0;%x_tisthetargetROOToftheeqatione_a=5e-ll;%thetolerancei=0;%iterationtag1=600;f=@x5*x.A4-6*lA2*x.A2+l.A4;%definethefunctiontobesolvedwhileabsx_t-x_ce_ax_t=x_c;%updatethetargetvaluewiththecrosspointiffx_t==0break;elsex_c=x_r-fx_r*x_l-x_r/fx_l-fx_r;%getthecrosspointiffx_c*fx_r0x_l=x_c;㊀Is㊀x_r=x_c;endendi=i+1;enderr=x_t-x_c;w0=
2.5;e=50000;i=30000;g=@x-w0/120*e*i*l*-x.A5+2*lA2*xA3-lA4*x;%calculatethebiggestdeflectiondisp[i;xt;err;fxt;gxt;]运行结果如下:3不动点迭代法依据不动点法收敛法则,对于函数fx当时,不动点法是收敛的而对于/x=5d—6小/+乙4xe200300作Ex图像得观看到在x£200300时,尸龙£-
7.8x108_7xl8不符合收敛的条件故此方程不能采纳不动点法下面用Matlab验证用不动点法是发散的主函数formatlong;clc;tic;1=600;f=@x5*x.人4-6*1人2*x.人2+
1.人4;%定义要求解的函数p0=260;tol=5e-ll;maxl=10000;%定义起始点,容限为5e-11即10位有效数字,迭代次数设为10000次[kp㊀rrP]=fixptfp0tolmaxi;w0=
2.5;e=50000;i=30000;g=@x-wO/120*e*i*l*-x.A5+2*lA2*xA3-lA4*x;%M/EEaxiz6AOSIEfevalgp;disp[p;err;fp;gp];toe;子函数fixtp function[kperrP]=fixptfpOtolmaxi%Input-gistheiterationfunction%-pOistheinitialguessforthefixed-point%-tolisthetolerance%-maxiisthemaximumnumberofiterations%Output-kisthenumberofiterationsthatwerecarriedout%-pistheapproximationtothefixed-point%-erristheerrorintheapproximation%-P1containsthesequence{pn}P1=pO;fork=2:maxlPk=fevalfPk-1;err=absPk-Pk-1;relerr=err/absPk+eps;p=Pk;iferrtol||relerrtolbreak;endendifk==maxidisp1maximumnumberofiterationsexceeded1endP=P;解得结果为p=NaNerr=NaN所以求解是发散的4Newton-Raphson法迭代法用迭代方程求解不动点在应用到对于求方程〃%二°的根上,最朴实的迭代方程构造是当在整个求根区间上满意〃⑹+[1|时,迭代算法是有效的为了加快收敛,同时令这时可以最快速度收敛,可以发觉,上面式子稍变形就可以得到即得到下面要使用的牛顿方法由此可见这一类迭代方法的“收敛性”意义上的最优进化即是牛顿方法对于其他构造迭代方程的方法这里就不再争论迭代方程是采纳肯定预定误差纥〃=5e-11使得结果小数点后有10位有效数字Matlab程序如下主函数formatlong;tic;clc;1=600;f=@x5*x.A4-6*lA2*x.A2+l.A4;%定义要求解的函数df=@x20*x.人3-4320000夫x;%定义求解函数的导数p0=200;epsilon=5e-ll;delta=5e-ll;maxl=10000;%定义起始点,容限为5e-11即10位有效数字,最大迭代次数10000次[pOerrky]=newtonffdfpOdeltaepsilonmaxi;w0=
2.5;e=50000;i=30000;g=@x-w0/120*e*i*l*-x.A5+2*lA2*xA3-lA4*x;%计算最大挠度fevalgp0;disp[k;p0;err;fp0;gpO];toe;子函数newton function[pOerrky]=newtonfdfpOdeltaepsilonmaxi%Input-fistheobjectfunctioninputasastring1f1%-dfisthederivativeoffinputasastring*df%-pOistheinitialapproximationtoazerooff%-deltaisthetoleranceforpO%-epsilonisthetoleranceforthefunctionvaluesy%-maxiisthemaximumnumberofiterations%Output-pOistheNewton-Raphsonapproximationtothezero%-erristheerrorestimateforpO%-kisthenumberofiterations%-yisthefunctionvaluefpOfork=l:maxlpl=p0-fevalfpO/fevaldfpO;err=abspl-pO;relerr=2*err/abspl+delta;p0=pl;y=fevalfpO;iferrdelta||relerrdelta||absyepsilonbreakendend运行结果如下:5割线法:类似于Newton-Raphson方法用差分估量斜率即用一^二为―—―来代替导数/x/%-/玉_1Matlab程序如下主函数formatlong;tic;clc;1=600;f=@x5夫x.人4-6*工人2夫x.人2+1•人4;%定义要求解的函数p0=200;pl=300;epsilon=5e-ll;delta=5e-ll;maxi=10000;%定义起始点,容限为5e-11即10位有效数字,最大迭代次数10000次[plerrky]=secantfApOpldeltaepsilonmaxi;w0=
2.5;e=50000;i=30000;g=@x-w0/120夫e夫i*l*-x.人5+2*1人2*xT-l人4夫x;%计算最大挠度disp[k;pl;err;fpl;gpl];toe;子函数function[plerrky]=secantfzp0rpldeltaepsilonmaxi%Input-fistheobjectfunctioninputasastring*f1%-pOandplaretheinitialapproximationstoazerooff%-deltaisthetoleranceforpl%-epsilonisthetoleranceforthefunctionvaluesy%-maxiisthemaximumnumberofiterations%Output-plisthesecantmethodapproximationtothezero%-erristheerrorestimateforpl%-kisthenumberofiterations%-yisthefunctionvaluefplfork=l:maxlp2=pl-fevalfpl*pl-pO/fevalfpl-fevalfpO;err=absp2-pl;relerr=2*err/absp2+delta;p0=pl;pl=p2;y=fevalfpl;iferrdelta||relerrdelta||absyepsilonbreakendend运行结果为6不同方法的比较:将以上方法的求解结果列表,得:可以看出,1以上5种方法中,不动点法对方程本身的性质要求最高;2Newton-Raphson方法迭代次数最少,试位法的迭代次数最多;3除不动点法外,其余四种方法的计算时间都很相近,因此它们的收敛速度是相同的;4上述四种方法除试位法外,都具有相同的精度,而试位法要相对小一些缘由是数字表示阶数变为了4次,比其他三种方法结果的表示阶数都要高项值解c
2.683281572999704e+002误差err
0.000000000000455e+002fx的值yc
0.000034027099609e+002挠度计算式ge+002计算时间Times
0.003562迭代次数k42项值解c
0.026832815729997e+004误差err0fx的值yc
0.000000003051758e+004挠度计算式g
0.000051519006202e+004计算时间Times
0.002216迭代次数i3000项值解c
2.683281572999748e+002误差err
0.000000000000001e+002fx的值yc-
0.000000457763672e+002挠度计算式ge+002计算时间Times
0.004372迭代次数k4项值解C
2.683281572999704e+002误差err
0.000000000000455e+002fx的值yc
0.000034027099609e+002挠度计算式ge+002计算时间Times
0.003562迭代次数k42方法二分法试位法不动点法牛顿法割线法解c
2.683281572999704e+
0020.026832815729997e+004NaN
2.683281572999748e+
0022.683281572999704e+002误差err
0.000000000000455e+0020NaN
0.000000000000001e+
0020.000000000000455e+002fx的值yc
0.000034027099609e+
0020.000000003051758e+004NaN-
0.000000457763672e+
0020.000034027099609e+002挠度计算式ge+
0020.000051519006202e+004NaN计算时间Times
0.
0035620.002216NaN
0.
0043720.003562迭代次数k423000NaN442。
个人认证
优秀文档
获得点赞 0