常用计算方法1.超越方程的求解一超越方程为x (2ln x – 3) -100 = 0求超越方程的解。
[算法]方法一:用迭代算法。
将方程改为01002ln()3x x =- 其中x 0是一个初始值,由此计算终值x 。
取最大误差为e = 10-4,当| x - x 0| > e 时,就用x 的值换成x 0的值,重新进行计算;否则| x - x 0| < e 为止。
[程序]P1_1abs.m 如下。
%超越方程的迭代算法clear %清除变量x0=30; %初始值xx=[]; %空向量while 1 %无限循环x=100/(2*log(x0)-3); %迭代运算xx=[xx,x]; %连接结果if length(xx)>1000,break ,end %如果项数太多则退出循环(暗示发散) if abs(x0-x)<1e-4,break ,end %当精度足够高时退出循环x0=x; %替换初值end %结束循环figure %创建图形窗口plot(xx,'.-','LineWidth',2,'MarkerSize',12)%画迭代线'.-'表示每个点用.来表示,再用线连接grid on %加网格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。
[算法]方法二:用求零函数和求解函数。
将方程改为函数100()2ln()3f x x x=-- 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) %画曲线grid on%加网格x0=fzero(f,[20,30]); %求方程的零点%x0=fzero(f,20); %求方程的零点hold on%保持图像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= sin x的导数是余弦函数y'= cos x,余弦函数的导数是负的正弦函数,用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,'.') %数值导数(点)偏右syms sx %定义符号变量y=sin(sx); %建立符号函数dy_dx=diff(y); %求符号导数df1=subs(dy_dx,sx,x); %符号替换数值hold on %保持图像plot(x,df1,'ro') %画符号导数曲线grid on %加网格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') %画二阶导数和差分以及符号导数曲线grid on %加网格legend('解析导数','数值差分','符号导数',4)%图例title('正弦函数的二阶导数','FontSize',16)%加标题[图示](1)如P2a 图所示,正弦函数的一阶导数的数值解(点)与解析解(线)符合得很好。
(2)如P2b 图所示,正弦函数的二阶导数的数值解(点)和符号解(圈)与解析解(线)符合得很好,不过二阶数值导数在端点与精确值有一点偏离。
P2a 图 P2b 图3.积分的计算求证:函数y = e ax sin bx 的积分为221e (sin cos )ax S a bx b bx C a b=-++ 其中a = -0.5,b = 2。
积分下限为0。
上限为x ,画出定积分的函数曲线。
[证明]利用分部积分得11e sin d sin de {e sin e cos d }ax ax ax ax S bx x bx bx b bx x a a===-⎰⎰⎰ 11{e sin cos de }{e sin [e cos e sin d ]}ax ax ax ax ax b b bx bx bx bx b bx x a a a a =-=-+⎰⎰ 即 2221e (sin cos )ax b S a bx b bx S a a=-- 由此可证不定积分。
当x = 0时,S 应该为零,所以22b C a b=+ 因此,从0开始的积分为 221e (sin cos )ax S a bx b bx b a b=-++ 利用复数积分的方法更简单。
由于 i i i 221i e d e e i ax bx ax bx ax bx a b x C C a b a b +++-''=+=+++⎰ 其中C'表示复常数。
根据欧拉公式e i x = cos x + isin x ,上式两边取虚部即可证明同一结果。
上式两边取实部还可证明221e cos d e (sin cos )ax ax bx x b bx a bx C a b=+++⎰ [算法]设被积函数为y = f (x ),取间隔为Δx ,取上限为x = n Δx ,则积分可用求和公式近似表示1()ni i S f x 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,'.') %画积分曲线grid on %加网格s=['exp(',num2str(a),'*x).*sin(',num2str(b),'*x)'];%被积分函数字符串f=inline(s); %化为内线函数,才可以被调用(画成) s3=0; %第1个积分值for i=2:length(x) %按自变量循环s3=[s3,quad(f,0,x(i))]; %连接积分 quad 对f 积分 下限0,上限x (i ) end %结束循环hold on %保持图像plot(x,s3,'or') %画数值积分曲线syms sa sb sx %定义符号变量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)求一阶微分方程的解d 2d 1y y x x =+ 当x = 0时,y = 2,这是初始条件。