ans = -0.0000 0.0000 9.0000 ans = -0.0001 0.0010 9.0000 改进或思考:本题之所以运行结果与图形差异较大,是因为没有限制自变量的范围。想得到精确地解,须对原函数进行补充定义,如考察 ?f(x,y),-2?x?1,-7?y?1F(x,y)??的极小(大)值。 ??inf,其他 3、题目:(Simpson积分法)编制一个定步长Simpson法数值积分程序。计算公式h为I?Sn?(f1?4f2?2f3?4f4?...?2fn?1?4fn?fn?1), 3其中n?2m为偶数,h?(b?a)/n,fi?f(a?(i?1)h),并取m?5,求解积分1?012?e?x22dx的数值解。 解题思路: 定义一M函数文件来描述Simpson积分法,这里可选择步长h,步数n,精度e作为函数的参数。 对实验题目的解答: function simpson(fun,a,b,m,e) disp('请确认您依次输入的是函数,左端点,右端点,步数,精度。') n=2*m;h=(b-a)/n;S=h*(feval(fun,a)+feval(fun,b))/3; for i=2:2:n S=S+4*feval(fun,a+(i-1)*h); end for i=3:2:n-1 S=S+2*feval(fun,a+(i-1)*h); end S >> fun=inline('exp(-x.^2/2)/sqrt(2*pi)'); >> simpson(fun,0,1,5,1e-6) 请确认您依次输入的是函数,左端点,右端点,步数,精度。 S = 9.6208 3、题目:(电视机价格)由于市场竞争的影响,电视机售价p越高,销售量x就会越低,x?Me?ap(M,a?0),其中M为最大需求量,a为价格系数。另一方面销售量越大,每台电视机成本c就会越低,c?c0?klnx(c0,k?0),其中c0是只生产一台电视机时的成本,k为规模系数。应如何确定电视机售价才能获得最大利润? 解题思路:建立电视机总理论的函数表达式y=f(p;M,a,c0,k);通过求f’(p;M,a,c0,k)=0得到最大利润对应的售价。 本题的解题思路有两种方案:1、利用定义M函数文件确认不同参数情况下售价的取法;2、利用符号运算直接求得售价的取法。 对实验题目的解答:设电视机的总理论为y=f(p;M,a,c0,k);根据题意, f(p;M,a,c0,k)?x(p?c)?Me?ap(p?c0?kln(Me?ap))。 为此,我们需求出f'(p;M,a,c0,k)?0的实根即可。利用第七章所学的符号运算,我们可以求出f'(p;M,a,c0,k)??Mae?ap(p?c0?kln(Me?ap))?Me?ap(1?ka)。 >> syms p M a c0 k P; >> P=M*exp(-a*p)*(p-c0+k*log(M*exp(-a*p))); >> Q=diff(P,p) Q = -M*a*exp(-a*p)*(p-c0+k*log(M*exp(-a*p)))+M*exp(-a*p)*(1-k*a) 下面我们利用两种方式求解该问题: (1) 编写一M函数文件 %电视机价格问题price.m function q=price(M,a,c0,k,Tp) P=@(p)M*exp(-a*p)*(p-c0+k*log(M*exp(-a*p))); Q=@(p)-M*a*exp(-a*p).*(p-c0+k*log(M*exp(-a*p)))+M*exp(-a*p).*(1-k*a); fplot(Q,[c0,10*c0]); hold on; fplot(P,[c0,10*c0]) [p,Q0,h]=fsolve(Q,Tp) feval(P,p) (2) 符号运算 >> q=solve(Q,p) q = -(a*c0+k*a*log(1/M)+1-k*a)/a/(-1+k*a) >> subs(P,p,q) %计算最大利润 ans = M*exp((a*c0+k*a*log(1/M)+1-k*a)/(-1+k*a))*(-(a*c0+k*a*log(1/M)+1-k*a)/a/(-1+k*a)-c0+k*log(M*exp((a*c0+k*a*log(1/M)+1-k*a)/(-1+k*a)))) 现对[M,a,c0,k]=[1,0.5,1,1],分别利用上述结果进行计算。 (1)>> price(1,0.5,1,1,1) Optimization terminated: first-order optimality is less than options.TolFun. p = 4.0000 Q0 = 2.0734e-008 h = 1 ans = 0.1353 >> price(1,0.5,1,1,4) Optimization terminated: first-order optimality is less than options.TolFun. p = 4 Q0 = 0 h = 1 ans = 0.1353 0.50.40.30.20.10-0.1-0.2-0.3-0.412345678910(2)>> M=1;a=0.5;c0=1;k=1; >> -(a*c0+k*a*log(1/M)+1-k*a)/a/(-1+k*a) ans = 4 >> M*exp((a*c0+k*a*log(1/M)+1-k*a)/(-1+k*a))*(-(a*c0+k*a*log(1/M)+1-k*a)/a/(-1+k*a)-c0+k*log(M*exp((a*c0+k*a*log(1/M)+1-k*a)/(-1+k*a)))) ans = 0.1353 由此可知,两者算出的结果是一致的。 改进或思考:对于编写者而言,显然利用符号运算更为简便;然而对于过于复杂的表达式,符号计算可能失效。因而两种方式各有利弊。 4、题目:(刚性方程组求解)求解刚性方程组。 ?y'1??1000.25y1?999.75y2?0.5,y1(0)?1,0?x?50。 ?y'?999.75y?1000.25y?0.5,y(0)??1,122?2解题思路:由于该方程组中一次项系数远大于零此项系数,该方程组为一刚性方程组。可开用ode15s命令求解。 对实验题目的解答: %ex4.m function f=ex4(t,y) f(1)=-1000.25*y(1)+999.75*y(2)+0.5; f(2)=999.75*y(1)-1000.25*y(2)+0.5; f=f(:); >> [t,y]=ode15s(@ex4,[0,50],[1,-1]);plot(t,y) 1.510.50-0.5-105101520253035404550 5、题目:(肿瘤生长)肿瘤大小V生长的速率与V的a次方成正比,其中a为形状参数,0?a?1;而其比例系数K随时间减小,减小速率又与当时的K值成正比,比例系数为环境参数b。设某肿瘤参数a=1,b=0.1,K的初始值为2,V的初始值为1。问 (i) 此肿瘤生长不会超过多大? (ii) 过多长时间肿瘤大小翻一倍? (iii) 何时肿瘤生长速率由递增转为递减? (iv) 若参数a=2/3呢? 解题思路:建立关于肿瘤大小V和比例系数K的常微分方程组,这里可以利用常微分方程组的数值解法(第六章)求出相应问题的近似结果;或者直接利用第七章符号运算的方法求出相应问题的精确解。 对实验题目的解答:首先建立相应的常微分方程组
实验四 各类方程的求解(matlab实验报告)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)