《数学实验七代数方程与常微分方程》由会员分享,可在线阅读,更多相关《数学实验七代数方程与常微分方程(19页珍藏版)》请在金锄头文库上搜索。
1、 方程求根方法方程求根方法 函数求极值方法函数求极值方法 常微分方程问题常微分方程问题 思考题与练习题思考题与练习题代数方程与常微分方程代数方程与常微分方程例例1求解求解 3 次方程次方程 x3 + 1 = 0 。 求多项式根求多项式根( (零点零点) )方法方法: R= roots(P)P是多项式是多项式 P(x) = a1xn + a2 xn-1 + + an x + an+1系数系数a1, ,a2, , ,an+1, ,R为多项式全部零点为多项式全部零点。 求数值解求数值解P=1,0,0,1;R=roots(P)R = -1.0000 0.5000 + 0.8660i 0.5000 -
2、0.8660i求符号解求符号解 sym x;solve(x3+1=0)ans = -1 1/2-1/2*i*3(1/2) 1/2+1/2*i*3(1/2)一、方程求根方法一、方程求根方法相关命令:相关命令:poly, polyval, fzeroX=1:7;P=poly(X) 1 -28 322 -1960 6769 -13132 13068 -5040roots(P)ans = 7.0000 6.0000 5.0000 4.0000 3.0000 2.0000 1.0000x=1:0.1:7; y=polyval(P,x);plot(x,y,X,zeros(1,7),o)多项式求根方法多项式
3、求根方法p=1 -30 0 2552; roots(p)ans = 26.3146 11.8615 -8.1761 r x例例2 球体的吃水深度球体的吃水深度. 计算半径计算半径 r =10 cm的球体的球体,密度密度 =0.638.浸入水深度浸入水深度 x = ?解解:重量重量体积体积 x3 30x2 +2552 =0求函数零点方法求函数零点方法fun=inline(x.3-30*x.2+2552);x=fzero(fun,10)x = 11.8615求一元函数最小值方法求一元函数最小值方法Xmin=fminbnd(fun,x1,x2)fun是目标函数是目标函数, ,x1,x2是最小值点搜索
4、区间是最小值点搜索区间, ,Xmin是是目标函数的最小值点。目标函数的最小值点。例例3求一元函数求一元函数f(x) = 0.5 x exp( x2)在区间在区间0,2内内的最小值,并绘出函数图形标出最小值点。的最小值,并绘出函数图形标出最小值点。 fun=inline(0.5-x.*exp(-x.2);fplot(fun,0,2),hold onx0,y0=fminbnd(fun,0,2)plot(x0,y0,o) ;hold offx0 = 0.7071 y0 = 0.0711 二、二、函数求极值方法函数求极值方法温室温室例例4 花园靠楼房处有一温室花园靠楼房处有一温室, ,温室伸入花园温室
5、伸入花园 2 米米, ,高高3米米. .温室上方是楼房窗台温室上方是楼房窗台, ,要将梯子从花园地上放靠在要将梯子从花园地上放靠在楼房墙上不损坏温室,用楼房墙上不损坏温室,用 7 米长的梯子是否可行米长的梯子是否可行? 解解: :设梯子长度为设梯子长度为L, 梯子与地面的梯子与地面的 夹角为夹角为 数学模型数学模型:L=inline(2./cos(alpha)+3./sin(alpha)x,Lmin=fminbnd(L,0.8,0.9)x = 0.8528Lmin = 7.0235MATLAB求求常微分方程初值问题常微分方程初值问题 数值方法是先创建函数文件数值方法是先创建函数文件, ,用以描
6、述微分方程右端用以描述微分方程右端二元函数二元函数, ,然后用然后用ode23()求出求出数值解数值解引例引例 炮弹在飞行过程中炮弹在飞行过程中, ,空气阻力与飞行速度空气阻力与飞行速度v的平的平方成正比方成正比, ,如果初始速度如果初始速度v0 , ,由牛顿第二定律由牛顿第二定律, ,得得一阶微分方程主要信息是右端项和初始值一阶微分方程主要信息是右端项和初始值: :三、三、常微分方程问题常微分方程问题常微分方程组初值问题常微分方程组初值问题一阶常微分方程组初值问题数值求解方法一阶常微分方程组初值问题数值求解方法T,y = ode23( F ,Tspan,y0) 其中其中, F是函数文件是函数
7、文件, 表示表示 微分方程右端函数微分方程右端函数Tspan = t0 Tfinal 求解区域求解区域; y0 初始条件初始条件注注: 函数函数F(t,y) 必须返回列向量必须返回列向量. 数值解数值解 y 的每一行对应于列向量的每一行对应于列向量T中的每一行数据中的每一行数据例例5 马尔萨斯模型马尔萨斯模型, ,以以1994 年我国人口为年我国人口为12亿为初值,亿为初值,求解常微分方程求解常微分方程 N(t)表示人口数量表示人口数量, ,取人口变化率取人口变化率r = =0.015, ,微分方程微分方程function z=fun1(t,N)z=0.015*N; ode23(fun1,19
8、94,2020,12)T,N=ode23(fun1,1994,2020,12)命令窗口命令窗口 编辑窗口编辑窗口 例例6 6. Logistic模型模型 创建微分方程右端函数创建微分方程右端函数:function z=fun2(t,u)z=u.*(1-u);ode23(fun2,0,6,1.8)ode23(fun2,0,6,0.2)在命令窗口求数值解在命令窗口求数值解Logistic模型模型 , ,以以1994 年我国人口为年我国人口为12亿为初亿为初值,求解常微分方程值,求解常微分方程 function z=fun1(t,N)z=0.04*N.*(1-N/16.5);ode23(fun1,1
9、994:2012,12)T,N= ode23(fun1,1994:2012,12)命令窗口命令窗口 编辑窗口编辑窗口 x,y=meshgrid(0:.25:6,0:.05:2);k=y.*(1-y);d=sqrt(1+k.2);px=1./d;py=k./d;quiver(x,y,px,py),hold onu=dsolve(Du=u*(1-u),u(0)=.2); v=dsolve(Dv=v*(1-v),v(0)=1.8);ezplot(u,0,6);ezplot(v,0,6);axis(0,6,0,2)例例7.根据微分方程右端函数根据微分方程右端函数 f(x,y)= y(1 y),区域区域
10、D = (x, y) | 0 x 6, 0 y 2内未知函数的导数值,确定解函数曲线的切线对应单内未知函数的导数值,确定解函数曲线的切线对应单位向量,绘制向量场。位向量,绘制向量场。例例8.8.捕食者与被捕食者问题捕食者与被捕食者问题 海岛上有狐狸和野兔海岛上有狐狸和野兔, ,当野兔数量增多时,狐狸捕食当野兔数量增多时,狐狸捕食野兔导致狐群数量增长野兔导致狐群数量增长; ;大量兔子被捕食使狐群进入大量兔子被捕食使狐群进入饥饿状态其数量下降饥饿状态其数量下降; ;狐群数量下降导致兔子被捕食狐群数量下降导致兔子被捕食机会减少机会减少, ,兔群数量回升。微分方程模型如下兔群数量回升。微分方程模型如下
11、计算计算 x(t),y(t) 当当t0,20时的数据。绘图并分时的数据。绘图并分析捕食者和被捕食者的数量变化规律。析捕食者和被捕食者的数量变化规律。x(0)= 100y(0)=20 反映捕食者掠取食饵的能力反映捕食者掠取食饵的能力表征食饵对食肉供养效率表征食饵对食肉供养效率创建创建MATLAB的函数文件的函数文件function z=fox(t,y)z(1,:)=y(1)-0.015*y(1).*y(2);z(2,:)=-y(2)+0.01*y(1).*y(2);Y0=100,20;t,Y=ode23(fox,0,20,Y0);x=Y(:,1);y=Y(:,2);figure(1),plot(
12、t,x,b,t,y,r)figure(2),plot(x,y) 求微分方程数值解并绘解函数图形求微分方程数值解并绘解函数图形-兔子数量; -狐狸数量兔-狐数量变化相位图兔-狐数量变化相位图思考题与练习题思考题与练习题1.对对“梯子问题梯子问题”中的数学模型中的数学模型2.用用MATLAB命令命令fminbnd()求一元函数极大值问题求一元函数极大值问题的过程有哪些操作步骤?的过程有哪些操作步骤?用均值不等式做分析用均值不等式做分析,其结论是否与实验结论一致?其结论是否与实验结论一致?3. 还贷问题。从银行贷款还贷问题。从银行贷款100万元建生产流水线,一万元建生产流水线,一年后建成投产。投产后
13、流水线每年创造利润年后建成投产。投产后流水线每年创造利润30万元,万元,银行的年利率银行的年利率 p=10%,计算多少年后公司可以盈利,计算多少年后公司可以盈利? function k,pay=debt(d)if nargin=0,d=30;endS=100;p=0.1;S=S*(1+p);pay=S;k=1;while S0 k=k+1;S=S*(1+p); S=S-d; pay=pay,S;end4. 4. 蛇形曲线的微分方程蛇形曲线的微分方程 右端函数右端函数在平面区域内任意一点在平面区域内任意一点(x,y)处的值确定解曲线的切处的值确定解曲线的切线斜率线斜率. .利用利用quiver(x,y,px,py)绘平面向量场绘平面向量场