常用计算方法.docx
- 文档编号:1238902
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:13
- 大小:203.45KB
常用计算方法.docx
《常用计算方法.docx》由会员分享,可在线阅读,更多相关《常用计算方法.docx(13页珍藏版)》请在冰豆网上搜索。
常用计算方法
常用计算方法
1.超越方程的求解
一超越方程为
x(2lnx–3)-100=0
求超越方程的解。
[算法]方法一:
用迭代算法。
将方程改为
其中x0是一个初始值,由此计算终值x。
取最大误差为e=10-4,当|x-x0|>e时,就用x的值换成x0的值,重新进行计算;否则|x-x0| [程序]P1_1abs.m如下。 %超越方程的迭代算法 clear%清除变量 x0=30;%初始值 xx=[];%空向量 while1%无限循环 x=100/(2*log(x0)-3);%迭代运算 xx=[xx,x];%连接结果 iflength(xx)>1000,break,end%如果项数太多则退出循环(暗示发散) ifabs(x0-x)<1e-4,break,end%当精度足够高时退出循环 x0=x;%替换初值 end%结束循环 figure%创建图形窗口 plot(xx,'.-','LineWidth',2,'MarkerSize',12)%画迭代线'.-'表示每个点用.来表示,再用线连接 gridon%加网格 fs=16;%字体大小 title('超越方程的迭代折线','fontsize',fs)%标题 xlabel('\itn','fontsize',fs)%x标签 ylabel('\itx','fontsize',fs)%y标签 text(length(xx),xx(end),num2str(xx(end)),'fontsize',fs)%显示结果 [图示]用下标作为自变量画迭代的折线。 如P0_20_1图所示,当最大误差为10-4时,需要迭代19次才能达到精度,超越方程的解为27.539。 [算法]方法二: 用求零函数和求解函数。 将方程改为函数 MATLAB求零函数为fzero,fzero函数的格式之一是 x=fzero(f,x0) 其中,f表示求解的函数文件,x0是估计值。 fzero函数的格式之二是 x=fzero(f,[x1,x2]) 其中,x1和x2表示零点的范围。 另外MATLAB还有求解函数solve,计算非线性方程和方程组的符号解。 [程序]P1_2fzero.m如下。 %超越方程的求法 clear%清除变量 x=10: 0.1: 100;%自变量向量 f=inline('2*log(x)-3-100./x')%定义内线函数用的是字符窜 figure%创建图形窗口 plot(x,f(x),'LineWidth',2)%画曲线 gridon%加网格 x0=fzero(f,[20,30]);%求方程的零点 %x0=fzero(f,20);%求方程的零点 holdon%保持图像 plot(x0,f(x0),'.')%画零点 title('超越方程的解','fontsize',16)%标题 xlabel('\itx','fontsize',16)%x标签 ylabel('\itf','fontsize',16)%y标签 text(x0,0,num2str(x0),'fontsize',16)%标记零点 x0=solve('2*log(x)-3-100./x')%求超越方程的符号解 plot(double(x0),0,'o')%再画零点(double是把字符转化成数字) P1_1图P1_2图 2.导数的计算 正弦函数y=sinx的导数是余弦函数y'=cosx,余弦函数的导数是负的正弦函数,用MATLAB的数值导数和符号导数求正弦函数的一阶和二阶导数,并与其解析解进行比较。 [程序]P2diff.m如下。 %正弦函数导数的计算方法 clear%清除变量 dx=0.01*2*pi;%间隔 x=0: dx: 2*pi;%自变量向量 y=sin(x);%原函数 f1=diff(y)/dx;%通过差分求导数 f1=[f1 (1),(f1(1: end-1)+f1(2: end))/2,f1(end)];%求平均值 figure%创建图形窗口 plot(x,cos(x),x,f1,'.')%画一阶导数和数值差分曲线 %plot(x,cos(x),x(1: end-1),f1,'.')%数值导数(点)偏左 %plot(x,cos(x),x(2: end),f1,'.')%数值导数(点)偏右 symssx%定义符号变量 y=sin(sx);%建立符号函数 dy_dx=diff(y);%求符号导数 df1=subs(dy_dx,sx,x);%符号替换数值 holdon%保持图像 plot(x,df1,'ro')%画符号导数曲线 gridon%加网格 legend('解析导数','数值差分','符号导数',4)%图例 title('正弦函数的一阶导数','FontSize',16)%加标题 f2=diff(f1)/dx;%通过差分求导数 f2=[f2 (1),(f2(1: end-1)+f2(2: end))/2,f2(end)];%求平均值 d2y_dx2=diff(y,2);%求二阶符号导数 df2=subs(d2y_dx2,sx,x);%符号替换数值 figure%创建图形窗口 plot(x,-sin(x),x,f2,'.',x,df2,'o')%画二阶导数和差分以及符号导数曲线 gridon%加网格 legend('解析导数','数值差分','符号导数',4)%图例 title('正弦函数的二阶导数','FontSize',16)%加标题 [图示] (1)如P2a图所示,正弦函数的一阶导数的数值解(点)与解析解(线)符合得很好。 (2)如P2b图所示,正弦函数的二阶导数的数值解(点)和符号解(圈)与解析解(线)符合得很好,不过二阶数值导数在端点与精确值有一点偏离。 P2a图P2b图 3.积分的计算 求证: 函数y=eaxsinbx的积分为 其中a=-0.5,b=2。 积分下限为0。 上限为x,画出定积分的函数曲线。 [证明]利用分部积分得 即 由此可证不定积分。 当x=0时,S应该为零,所以 因此,从0开始的积分为 利用复数积分的方法更简单。 由于 其中C'表示复常数。 根据欧拉公式eix=cosx+isinx,上式两边取虚部即可证明同一结果。 上式两边取实部还可证明 [算法]设被积函数为y=f(x),取间隔为Δx,取上限为x=nΔx,则积分可用求和公式近似表示 积分既能用上式近似计算,也能用积分的解析式计算,还能用数值积分和符号积分计算。 [程序]P3quad.m如下。 %数值积分和符号积分方法 clear%清除变量 a=-0.5;%指数的常数 b=2;%正弦函数的常数 dx=0.1;%间隔 xm=6;%上限 x=0: dx: xm;%自变量向量 s1=(exp(a*x).*(-b*cos(b*x)+a*sin(b*x))+b)/(a^2+b^2);%积分的解析解 y=exp(a*x).*sin(b*x);%被积函数 s2=cumtrapz(y)*dx;%梯形法积分 figure%创建图形窗口 plot(x,s1,x,s2,'.')%画积分曲线 gridon%加网格 s=['exp(',num2str(a),'*x).*sin(',num2str(b),'*x)'];%被积分函数字符串 f=inline(s);%化为内线函数,才可以被调用(画成) s3=0;%第1个积分值 fori=2: length(x)%按自变量循环 s3=[s3,quad(f,0,x(i))];%连接积分quad对f积分下限0,上限x(i) end%结束循环 holdon%保持图像 plot(x,s3,'or')%画数值积分曲线 symssasbsx%定义符号变量 ss=exp(sa*sx)*sin(sb*sx);%被积符号函数 sy=int(ss,sx)%对sx进行符号积分 ssy=subs(sy,{sa,sb},{a,b});%替换常数 s4=subs(ssy,sx,x);%替换向量因为sx与sa,sb的长度不一样,不能同时替代 plot(x,s4-s4 (1),'ko','MarkerSize',10)%画符号积分曲线 tit=['\ity\rm=e^{',num2str(a),'}\it^x\rmsin',num2str(b),'\itx'];%形成数学公式: ^表示上标 title([tit,'\rm的积分'],'FontSize',16)%标题 legend('公式法','梯形法','数值法','符号法',4)%加图例(4表示右下角,0表示电脑选择最佳位置,-1把图例放到外面) [图示]如P3图所示,梯形法积分(点)与积分的解析解(线)符合得很好, 4.微分方程的求解方法 (1)求一阶微分方程的解 当x=0时,y=2,这是初始条件。 用微分方程的数值解和符号解画出函数曲线,并与解析解进行比较。 (2)求二阶微分方程的解 P3图 初始条件为y(0)=1,y'(0)=2。 用微分方程的数值解和符号解画出函数曲线和导数的曲线,并与解析解进行比较。 [解析] (1)分离变量得 积分得 lny=2ln(x+1)+C 利用初始条件可得C=ln2,因此 y=2(x+1)2 [程序]P4_1ode.m如下。 %一阶常微分方程的解析解,数值解和符号解 clear%清除变量 x=linspace(0,2,50);%自变量向量 y1=2*(x+1).^2;%解析解 f=inline('2*y/(x+1)');%微分方程右边化为内线函数 [x2,y2]=ode45(f,x,2);%求微分方程的数值解(ode常微分方程) ys=dsolve('Dy-2*y/(x+1)','y(0)=2','x')%求微分方程的符号特解dsolve(初始条件决定)Dy=dy_dx y3=subs(ys,'x',x);%将符号改为向量求数值解 figure%创建图形窗口 plot(x,y1,x,y2,'.',x,y3,'o')%画曲线 gridon%加网格 legend('解析解','数值解','符号解',4)%图例 xlabel('\itx','FontSize',16)%横坐标 ylabel('\ity','FontSize',16)%纵坐标 title('一阶常微分方程的解','FontSize',16)%标题 [图示]如P4_1图所示,一阶微分方程的数值解(点)和符号解(圈)与解析解(线)符合得很好。 P4_1图P4_2图 [解析] (2)由于y'=dy/dx,分离变量得 积分得 lny'-ln(x2+1)=C1 当x=0时,y'=2,所以C1=ln2,因此 y'=2(x2+1) 再积分 当x=0时,y=1,所以C2=1,因此 设y (1)=y,y (2)=dy/dx,可得两个一阶微分方程 , 将两个一阶微分方程设计成函数文件,以便求数值解。 [程序]P0_23_2ode.m如下。 %二阶常微分方程的解析解,数值解和符号解 clear%清除变量 x=linspace(0,3,30);%自变量向量 y1=1+2*x+2*x.^3/3;%解析解 dy1=2*x.^2+2;%解析解的导数 [x2,Y]=ode45('p4_2fun',
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常用 计算方法