资源描述:
《matlab在科学计算中的应用7(姜志鹏)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章代数方程与最优化问题的求解代数方程的求解无约束最优化问题的计算机求解有约束最优化问题的计算机求解整数规划问题的计算机求解7.1代数方程的求解7.1.1代数方程的图解法一元方程的图解法例:>>ezplot('exp(-3*t)…*sin(4*t+2)+4*exp…(-0.5*t)*cos(2*t)-…0.5',[05])>>holdon,>>line([0,5],[0,0])%同时绘制横轴验证:>>symst;t=3.52028;vpa(exp(-3*t)*sin(4*t+2)+…4*exp(-0
2、.5*t)*cos(2*t)-0.5)ans=-.19256654148425145223200161126442e-4二元方程的图解法例:>>ezplot('x^2*exp(-x*y^2/2)+exp(-x/2)*sin(x*y)')%第一个方程曲线>>holdon%保护当前坐标系>>ezplot(‘x^2*…cos(x+y^2)+…y^2*exp(x+y)')方程的图解法仅适用于一元、二元方程的求根问题。7.1.2多项式型方程的准解析解法例:>>ezplot('x^2+y^2-1');holdon
3、%绘制第一方程的曲线>>ezplot(‘0.75*x^3-y+0.9’)%绘制第二方程为关于x的6次多项式方程应有6对根。图解法只能显示求解方程的实根。一般多项式方程的根可为实数,也可为复数。可用MATLAB符号工具箱中的solve()函数。最简调用格式:S=solve(eqn1,eqn2,…,eqnn)(返回一个结构题型变量S,如S.x表示方程的根。)直接得出根:(变量返回到MATLAB工作空间)[x,…]=solve(eqn1,eqn2,…,eqnn)同上,并指定变量[x,…]=solve(eqn
4、1,eqn2,…,eqnn,’x,…’)例:>>symsxy;>>[x,y]=solve('x^2+y^2-1=0','75*x^3/100-y+9/10=0')x=[-.98170264842676789676449828873194][-.55395176056834560077984413882735-.35471976465080793456863789934944*i][-.55395176056834560077984413882735+.3547197646508079345686378
5、9934944*i][.35696997189122287798839037801365][.86631809883611811016789809418650-1.2153712664671427801318378544391*i][.86631809883611811016789809418650+1.2153712664671427801318378544391*i]y=[.19042035099187730240977756415289][.929338302266743628529852766
6、77202-.21143822185895923615623381762210*i][.92933830226674362852985276677202+.21143822185895923615623381762210*i][.93411585960628007548796029415446][-1.4916064075658223174787216959259-.70588200721402267753918827138837*i][-1.49160640756582231747872169592
7、59+.70588200721402267753918827138837*i]验证>>[eval('x.^2+y.^2-1')eval('75*x.^3/100-y+9/10')]ans=[0,0][0,0][0,0][-.1e-31,0][.5e-30+.1e-30*i,0][.5e-30-.1e-30*i,0]由于方程阶次可能太高,不存在解析解。然而,可利用MATLAB的符号工具箱得出原始问题的高精度数值解,故称之为准解析解。例:>>[x,y,z]=solve('x+3*y^3+2*z^2=1/2
8、','x^2+3*y+z^3=2','x^3+2*z+2*y^2=2/4');>>size(x)ans=271>>x(22),y(22),z(22)ans=-1.0869654762986136074917644096117ans=.37264668450644375527750811296627e-1ans=.89073290972562790151300874796949验证:>>err=[x+3*y.^3+2*z.^2-1/2,x.^2+3*y+z