第三章-matlab求解微积分
- 格式:doc
- 大小:461.00 KB
- 文档页数:14
matlab 微积分基本运算§1 解方程和方程组解1. 线性方程组求解对于方程 AX = B ,其中 A 是( m ×n )的矩阵有三种情形:1)当n=m 且A 非奇异时,此方程为“恰定”方程组。
2)当 n > m 时,此方程为“超定”方程组。
3)当n<m 时,此方程为“欠定”方程组。
下面就三种情形的求解分别作一说明:(1) MATLAB 解恰定方程 A* X = B 的方法1)采用求逆运算解方程x=inv(A)*B2)采用左除运算解方程x=A\B例1 “求逆”法和“左除”法求下列方程组的解⎪⎪⎪⎩⎪⎪⎪⎨⎧=+=++=++=++=+150650650651655454343232121x x x x x xx x x x x x x在Matlab 编辑器中建立M 文件fanex1.m :A=[5 6 0 0 01 5 6 0 00 1 5 6 00 0 1 5 60 0 0 1 5];B=[1 0 0 0 1]';R_A=rank(A) %求秩X1=A\B %用"左除"法解恰定方程所得的解X2=inv(A)*B %用"求逆"法解恰定方程所得的解运行后结果如下R_A =5X1 =2.2662-1.72181.0571-0.59400.3188X2 =2.2662-1.72181.0571-0.59400.3188两种方法所求方程组的解相同。
(2)MATLAB 解超定方程AX=B 的方法对于方程 AX = B ,其中 A 是( m ×n )的矩阵, n > m ,如果A 列满秩,则此方程是没有精确解的。
然而在实际工程应用中,求得其最小二乘解也是有意义的。
基本解法有:1)采用求伪逆运算解方程x=pinv(A)*B说明:此解为最小二乘解x=inv(A ’*A)*A*B,这里pinv(A) =inv(A ’*A)*A.2)采用左除运算解方程x=A\B例2 “求伪逆”法和“左除”法求下列方程组的解⎪⎩⎪⎨⎧=+=+=+12214212212121x x x x x x命令如下:>> a=[1 2;2 4;2 2];>> b=[1,1,1]';>> xc=a\b %用左除运算解方程运行得结果:xc =0.40000.1000>> xd=pinv(a)*b %用求伪逆运算解方程运行得结果:xd =0.40000.1000>> a*xc-b %xc 是否满足方程ax=b运行得结果:ans =-0.40000.20000.0000可见xc 并不是方程的精确解。
第7章MATLAB科学计算¾方程求解¾概率统计¾插值、拟合¾数值微积分¾最优化求解其它常用的matlab 数值计算命令¾max,min¾mean, median¾sum 求和, prod 求积¾cumsum 求和, cumprod 求积¾std 标准方差¾corrcoef 相关系数¾sort 元素排序¾离散傅里叶变换fft,fft2,fftn__ifft第7章MATLAB 数值计算作业¾1.编写傅立叶变换的matlab 程序与matlab 自带的fft 进行比较,并分析冲击信号的傅立叶变换。
(若不了解冲击信号,可计算方波的傅里叶变换,方波幅度为1,周期为10,方波个数为10,占空比为0.5)。
∑=−−−=Nm Nk m j em f k F 1/)1)(1(2)()(π编写的DFT 函数:function X=mydft(x )N = length(x );W=exp(-2*i*pi/N);X=zeros(1,N);for k=1:NX(k )=sum(x .*W.^((0:N -1)*(k -1)));end∑=−−−=N m N k m j em f k F 1/)1)(1(2)()(πx = [0 0 0 0 0 1 1 1 1 1]; X = [x x x x x x x x x x]; y = mydft(X);plot(abs(y))y1=fft(X);plot(abs(y1));¾y = fftshift(mydft(X));¾>> plot(abs(y))第3章MATLAB符号计算¾Maple优势在于符号运算,¾Mathematic符号运算和数值计算均不差,图像处理或者数据可视化较差¾Matlab强项是数值计算和数据可视化,¾MathCAD各方面均弱一些,但易学。
第三章 微积分的数学实验3.1极限与一元微积分3.1.1 初等运算1.定义单个或多个符号变量:syms x y z t ;定义单个符号变量或者符号函数还可以用单引号定义,如x=’x ’,f=’sin(x^2)+2*x-1’。
符号表达式的反函数运算g=finverse(f),g 是返回函数f 的反函数。
例1 求sin(1)y x =-的反函数>>syms x>>y=sin(x-1); g=finverse(y),结果为 g=1+asin(t)2. f actor(f) 因式分解函数f3.Collect(f) 对函数f 合并同类项4. expand(f) 将函数f 表达式展开5. simple(f) 找出表达式的最简短形式(有时需要用2次)6. roots (p )对多项式p 求根函数。
7. solve(F) 一般方程的求根函数例2 解方程2510x x +-=解 >>syms x>>solve(x^2+5*x-1)结果为x =[ -5/2+1/2*29^(1/2) -5/2-1/2*29^(1/2)]8.fzero(f,x0)或fzero(f,[a,b]) 在初始点x0处开始或在区间[a,b]上搜索函数的零点,f(a)与f(b)需要符号相反。
3.1.2 Matlab计算函数的极限函数形式:1)limit(F,x,a),求函数F在 x ->a时的极限。
2)limit(F,a),默认其中的变量为极限变量.3)limit (F),默认其中的变量为极限变量且趋向于0.4)limit(F,x,a,'right')或limit(F,x,a,’le ft') 求函数F在x->a时的右、左极限.例3 >>syms x a t h; %syms作用是申明x,a,t,h是符号变量,不需先赋值再调用。
>>limit(sin(x)/x) %结果为 1>>limit((x-2)/(x^2-4),2) %结果为 1/4>>limit((1+2*t/x)^(3*x),x,inf) %结果为 exp(6*t)>>limit(1/x,x,0,'right') %结果为 inf>>limit(1/x,x,0,'left') %结果为 -inf>>limit((sin(x+h)-sin(x))/h,h,0) %结果为 cos(x)>>v = [(1 + a/x)^x, exp(-x)];limit(v,x,inf,'left') %结果为[exp(a),0]3.1.3 Matlab计算导数与微分1.一元导数和微分diff函数用以计算函数的微分和导数,相关的函数语法有下列4个:diff(f) 返回f对预设独立变量的一次导数值diff(f,'t')或diff(f,t) 返回f对独立变量t的一次导数(值)diff(f,n) 返回f对预设独立变量的n阶导数(值)diff(f,'t',n) 或diff(f,t,n)返回f对独立变量t的n阶导数(值)这里尽管自变量已经作为符号变量,可以不用syms说明,但是在具体执行diff(f)、diff(f,'t')和diff(f,t)会出现差异,有的能够执行,有的不能够,有的执行符号微分,有的执行数值微分,所以比较麻烦。
第三章微积分问题的计算机求解一、实验内容:题目1.试求出如下极限。
①limx→∞(3x +9x )1/ x,②lim x→∞[(x+2)x+2(x+3)x+3 ]/(x+5)2x+5【分析】:该题为单变量函数的极限。
极限问题可以用limit()函数直接求出。
要注意该函数的调用格式为:L=limit(fun,x,x0)(求极限),L=limit(fun,x,x0,’left’或’right’)(求极限)。
还需注意一开始要对函数的字符进行申明。
【解答】:(1)输入如下语句:>> syms x;f=(3^x+9^x)^(1/x);L=limit(f,x,inf)语句运行后显示如下:L =9(2)输入如下语句:>>syms x;f=(x+2)^(x+2)*(x+3)^(x+3)/(x+5)^(2*x+5);>> L=limit(f,x,inf)语句运行后显示如下:L =exp(-5)题目2.试求下面的双重极限。
①lim x→−1y→2 (x2y+xy3)/(x+y) 3,②limx→0 y→0 xy /√(xy+1)−1,③limx→0y→0 [1−cos(x2+y2)]/(x2+y2)e x2+y2。
【分析】:该题为多变量函数的极限问题。
他可以用嵌套使用limit()函数来解决。
在MATLAB上可以用L=limit(limit(f,x,x0),y,y0)或者L=limit(f,y,y0),x,x0)来解决。
其思想是所有的先关于X求导,再所有的关于y求导。
【解答】:(1)输入如下语句:>> syms x y>> f=(x^2*y+x*y^3)/(x+y)^3;>> L=limit(limit(f,x,-1),y,2)语句运行后显示如下:L =-6(2)输入如下语句:>> syms x yf=(x*y)/(sqrt(x*y+1)-1);L=limit(limit(f,x,0),y,0)按ENTER键,语句运行后显示如下:L =2(3)输入如下语句:>> syms x yf=(1-cos(x^2+y^2))/(sqrt(x^2+y^2)*exp(x^2+y^2));L=limit(limit(f,x,0),y,0)按ENTER键,语句运行后显示如下:L =题目3.求出下面函数的导数。
matlab解微积分方程Matlab是一种功能强大的数值计算软件,可以用于解决各种数学问题,包括微积分方程。
微积分方程是描述自然界中许多现象的数学模型,它们在物理、化学、生物等领域有着广泛的应用。
本文将介绍如何使用Matlab解微积分方程。
我们需要明确什么是微积分方程。
微积分方程是包含未知函数及其导数的方程,通常可以写成形如y''(x) + p(x)y'(x) + q(x)y(x) = f(x)的形式。
其中y(x)是未知函数,p(x)、q(x)和f(x)是已知函数。
解微积分方程的过程可以分为两步:建立方程和求解方程。
建立方程是将实际问题转化为数学模型,而求解方程则是找到满足方程的函数。
在Matlab中,可以使用dsolve函数来求解微积分方程。
dsolve 函数可以根据方程的类型自动选择合适的求解方法,并给出满足方程的函数表达式。
例如,对于一阶线性微分方程dy/dx + p(x)y = q(x),可以使用以下代码求解:syms x y(x)p = input('请输入p(x)的表达式:'); % 输入p(x)的表达式q = input('请输入q(x)的表达式:'); % 输入q(x)的表达式eqn = diff(y,x) + p*y - q == 0; % 建立微分方程sol = dsolve(eqn); % 求解微分方程disp('方程的解为:');disp(sol);在以上代码中,首先使用syms命令定义符号变量x和y(x),然后使用input命令分别输入p(x)和q(x)的表达式。
接下来,使用diff 命令计算y'(x),然后将其代入微分方程中得到eqn。
最后,使用dsolve命令求解方程,并将结果存储在sol中,最后将结果打印出来。
对于更高阶的微积分方程,可以使用符号变量来表示未知函数及其导数的各阶,并按照相应的形式建立方程。
【第3章】微积分问题的计算机求解极限问题的解析解单变量函数的极限假设已知函数f(x),则极限问题⼀般描述为L=limx→x0f(x)此外,还有单边极限问题L=limx→x−0f(x)左极限L=limx→x+0f(x)右极限matlab同样可以做这些极限运算L=limit(fun,x,x0) %求极限L=limit(fun,x,x0,'left'或'right') %求单边极限举个例⼦试求解极限问题lim x→∞sin(x) xmatlab代码syms x; f=sin(x)/x;limit(f,x,0)运⾏结果截图多变量函数的极限若想求出⼆元函数的极限L=limx→x0y→y0f(x)我们可以嵌套使⽤limit()函数。
L1=limit(limit(f,x,x0),y,y0) 或L1=limit(limit(f,y,y0),x,x0)如果x0或y0不是确定的值,⽽是另⼀个变量的函数,例如x→g(y) ,则上述极限求取顺序不能交换。
函数导数的解析解函数的导数和⾼阶导数如果函数fun和⾃变量x都已知,且均为符号变量,则可以⽤diff()函数解出给定函数的各阶导数。
y=diff(fun,x) %求导y=diff(fun,x,n) %求n阶导例:给出如下函数,试求出其⼀阶导数f(x)=sinxx2+4x+3matlab代码syms x;f=sin(x)/(x^2+4*x+3); f1=diff(f,x,1);latex(f1)最后得出结果如下cos(x)x2+4x+3−sin(x)(2x+4) x2+4x+32复合泛函求导例:给出如下函数,试求出其三阶导数公式,以及f(t)=e−t时的结果关键将f(t)声明为符号变量F(t)=t2sintf(t) matlab代码syms t f(t);G=simplify(diff(t^2*sin(t)*f,t,3))simplify(subs(G,f,exp(-t))),simplify(diff(t^2*sin(t)*exp(-t),3)-ans)()最后得出结果如下G(t)=6*cos(t)*f(t) + 6*sin(t)*diff(f(t), t) + 3*t^2*cos(t)*diff(f(t), t, t) + 12*t*cos(t)*diff(f(t), t) - 6*t*f(t)*sin(t) + t^2*sin(t)*diff(f(t), t, t, t) - 3*t^2*sin(t)*diff(f(t), t) + 6*t*sin(t)*diff(f(t), t, t) - t^2*cos(t)*f(t)ans(t) =2*exp(-t)*(3*cos(t) - 3*sin(t) + t^2*cos(t) + t^2*sin(t) - 6*t*cos(t))ans(t) =0矩阵函数的求导矩阵的求导:H (x )=4sin (5x )e −4x23x 2+4x +1√4x 2+2可以对每个元素分别求导syms x;H=[4*sin(5*x), exp(-4*x^2); 3*x^2+4*x+1, sqrt(4*x^2+2)];H1=diff(H,x,3)运⾏结果:H1 =[ -500*cos(5*x), 192*x*exp(-4*x^2) - 512*x^3*exp(-4*x^2)][ 0, (24*2^(1/2)*x^3)/(2*x^2 + 1)^(5/2) - (12*2^(1/2)*x)/(2*x^2 + 1)^(3/2)]参数⽅程的导数matlab中没有直接能够求解参数⽅程的函数,但我们可以根据其在数学上的定义来求:根据递推公式,我们可以从中看出了,它的形式与我们之前学习的递归调⽤有很⼤的相似性,因此我们可以编写⼀个这样的函数paradiff(y,x,t,n)来求参数⽅程的n 阶导数%paradiff.mfunction result=paradiff(y,x,t,n)if mod(n,1)~=0, error('n should positive integer, please correct')else, if n==1, result=diff(y,t)/diff(x,t);else, result=diff(paradiff(y,x,t,n-1),t)/diff(x,t);end, end例:已知参数⽅程如下,求其三阶导数y =sint(t +1)3x =cost(t +1)3matlab 代码syms t;y=sin(t)/(t+1)^3; x=cos(t)/(t+1)^3; f=paradiff(y,x,t,3);[n,d]=numden(f); %提取分⼦和分母,进⾏单独化简F=simplify(n)/simplify(d)运⾏结果F =(3*(t + 1)^7*(23*cos(t) + 24*sin(t) - 6*t^2*cos(t) - 4*t^3*cos(t) - t^4*cos(t) + 12*t^2*sin(t) + 4*t^3*sin(t) - 4*t*cos(t) + 32*t*sin(t)))/(3*cos(t) + sin(t) + t*sin(t))^5多元函数的偏导数matlab 中没有求取偏导数的专门函数,但我们仍可以通过diff()函数直接实现。
matlab中ode求解微积分摘要:I.引言- 介绍MATLAB 软件- 介绍ode 求解微积分在MATLAB 中的重要性II.MATLAB 中ode 求解微积分的步骤- 安装并导入ode45 函数- 定义微分方程- 初始化变量- 调用ode45 函数求解微分方程- 分析结果III.MATLAB 中ode 求解微积分的应用- 常微分方程的求解- 偏微分方程的求解- 微分方程组的求解IV.MATLAB 中ode 求解微积分的优势与局限- 优势:高效、准确、可视化- 局限:仅适用于数值求解,不适用于解析求解V.结论- 总结MATLAB 中ode 求解微积分的重要性- 强调ode 求解微积分在实际问题中的应用正文:MATLAB 是一种广泛应用于科学计算和数据分析的软件,它具有丰富的函数库和强大的图形绘制功能,为广大科研工作者和工程师提供了便利。
在MATLAB 中,ode 求解微积分是一个重要的应用领域,它可以帮助用户解决复杂的微积分问题。
在MATLAB 中,ode 求解微积分的步骤如下:首先,需要安装并导入ode45 函数。
ode45 是一个求解常微分方程(ODE)的函数,它使用4 阶和5 阶龙格库塔方法进行数值求解。
在MATLAB 命令窗口中输入`odeset("ode45", "MaxStep", 0.01);`即可完成安装和导入。
其次,需要定义微分方程。
微分方程通常表示为`dx/dt = f(x, t)`的形式,其中x 是变量,t 是时间,f(x, t) 是关于x 和t 的函数。
在MATLAB 中,可以使用`dsolve`函数求解微分方程,例如`dsolve("dx/dt = x + t", "t")`。
接着,需要初始化变量。
在求解微分方程之前,需要设置变量的初始值。
可以使用`x0`函数进行初始化,例如`x0 = [1; 2];`。
matlab解微积分方程使用Matlab解微积分方程微积分方程是数学中的重要概念,广泛应用于物理学、工程学、经济学等领域。
解微积分方程是研究微积分方程的一个重要问题,而Matlab作为一种强大的数值计算软件,可以有效地解决微积分方程。
Matlab提供了多种求解微积分方程的方法,包括欧拉法、龙格-库塔法、四阶龙格-库塔法等。
这些方法可以用来求解常微分方程、偏微分方程以及一些特殊类型的微积分方程。
我们来看看如何使用Matlab求解常微分方程。
常微分方程是一种只涉及一个自变量的微分方程,可以表示为dy/dx = f(x, y),其中f(x, y)是已知的函数。
在Matlab中,可以使用ode45函数来求解常微分方程。
下面以一个简单的一阶常微分方程为例,来演示如何使用Matlab求解。
假设我们要求解方程dy/dx = x + y,且初始条件为y(0) = 1。
首先,我们需要定义方程的函数形式,即f(x, y) = x + y。
然后,使用ode45函数来求解:```function dydx = myode(x, y)dydx = x + y;end[t, y] = ode45(@myode, [0, 1], 1);```上述代码中,myode函数定义了方程的函数形式,ode45函数用于求解微分方程,[0, 1]表示求解的时间范围,1表示初始条件。
最后,得到的结果存储在变量t和y中,t表示时间,y表示方程的解。
除了常微分方程,Matlab还可以求解偏微分方程。
偏微分方程是一种涉及多个自变量的微分方程,可以表示为∂u/∂t = f(x, y, t, u, ∂u/∂x, ∂u/∂y)。
在Matlab中,可以使用pdepe函数来求解偏微分方程。
假设我们要求解一个简单的二维热传导方程,即∂u/∂t = ∂^2u/∂x^2 + ∂^2u/∂y^2,且初始条件为u(x, y, 0) = sin(x)sin(y),边界条件为u(0, y, t) = 0,u(π, y, t) = 0,u(x, 0, t) = 0,u(x, π, t) = 0。
第三章 微积分的数学实验3.1极限与一元微积分3.1.1 初等运算1.定义单个或多个符号变量:syms x y z t ;定义单个符号变量或者符号函数还可以用单引号定义,如x=’x ’,f=’sin(x^2)+2*x-1’。
符号表达式的反函数运算g=finverse(f),g 是返回函数f 的反函数。
例1 求sin(1)y x =-的反函数>>syms x>>y=sin(x-1); g=finverse(y),结果为 g=1+asin(t)2. f actor(f) 因式分解函数f3.Collect(f) 对函数f 合并同类项4. expand(f) 将函数f 表达式展开5. simple(f) 找出表达式的最简短形式(有时需要用2次)6. roots (p )对多项式p 求根函数。
7. solve(F) 一般方程的求根函数例2 解方程2510x x +-=解 >>syms x>>solve(x^2+5*x-1)结果为x =[ -5/2+1/2*29^(1/2) -5/2-1/2*29^(1/2)]8.fzero(f,x0)或fzero(f,[a,b]) 在初始点x0处开始或在区间[a,b]上搜索函数的零点,f(a)与f(b)需要符号相反。
3.1.2 Matlab计算函数的极限函数形式:1)limit(F,x,a),求函数F在 x ->a时的极限。
2)limit(F,a),默认其中的变量为极限变量.3)limit (F),默认其中的变量为极限变量且趋向于0.4)limit(F,x,a,'right')或limit(F,x,a,’left') 求函数F在x->a时的右、左极限.例3 >>syms x a t h; %syms作用是申明x,a,t,h是符号变量,不需先赋值再调用。
>>limit(sin(x)/x) %结果为 1>>limit((x-2)/(x^2-4),2) %结果为 1/4>>limit((1+2*t/x)^(3*x),x,inf) %结果为 exp(6*t)>>limit(1/x,x,0,'right') %结果为 inf>>limit(1/x,x,0,'left') %结果为 -inf>>limit((sin(x+h)-sin(x))/h,h,0) %结果为 cos(x)>>v = [(1 + a/x)^x, exp(-x)];limit(v,x,inf,'left') %结果为[exp(a),0]3.1.3 Matlab计算导数与微分1.一元导数和微分diff函数用以计算函数的微分和导数,相关的函数语法有下列4个:diff(f) 返回f对预设独立变量的一次导数值diff(f,'t')或diff(f,t) 返回f对独立变量t的一次导数(值)diff(f,n) 返回f对预设独立变量的n阶导数(值)diff(f,'t',n) 或diff(f,t,n)返回f对独立变量t的n阶导数(值)这里尽管自变量已经作为符号变量,可以不用syms说明,但是在具体执行diff(f)、diff(f,'t')和diff(f,t)会出现差异,有的能够执行,有的不能够,有的执行符号微分,有的执行数值微分,所以比较麻烦。
我们可以考虑一律先用syms定义后面微分中所有的变量,这样我们可以随意对其中任何一个变量求导数,并且在格式上比较简单,一律不用单引号‘’。
例如>>syms x a b c>> S1=6*x^3-4*x^2+b*x-5;>> a=diff(S1,x),c=diff(S1,b),d=diff(S1)结果为a=18*x^2-8*x+b,c=x,d=18*x^2-8*x+b如果没有syms说明,则如下输入和运行结果都有区别>>S2 = '6*x^3-4*x^2+b*x-5'; S3 = '(1 - t^3)/(1 + t^4)'; t=’t’;>>a=diff(S2,x),b=diff(S1)a= 18*x^2-8*x+bb=Columns 1 through 11-12 78 -26 -43 -6 7 -10 78 -26 -44 -7Columns 12 through 1655 -56 78 -75 8>>f=diff(S3,t)f= -3*t^2/(1+t^4)-4*(1-t^3)/(1+t^4)^2*t^3>>f1=simplify(f)f1=t^2*(-3+t^4-4*t)/(1+t^4)^22. 向量的微分,输入被微分的函数值向量,返回的是y(k+1)-y(k),n=1,2,…,n 。
>>y=[1 2 3 4 5];d=diff(x)d= 1 1 1 13.积分上限函数求导举例>>syms x t>>diff(int(cos(t),0,x))ans = cos(x)>> diff(int(cos(t),0,x^2))ans =2*cos(x^2)*x3.1.4 Matlab 计算极值用Matlab 解无约束优化问题,常用格式如下:(1)x= fminbnd (fun,x 1,x 2)(2)x= fminbnd (fun,x 1,x 2 ,options)(3)[x ,fval]= fminbnd (...)(4)[x ,fval ,exitflag]= fminbnd (...)(5)[x ,fval ,exitflag ,output]= fminbnd (...)其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边。
函数fminbnd 的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。
若求函数()f x 的极大值点,需对函数()f x -取极小值点,所得即为()f x 的极大值点。
x 返回极值点; fval 返回极值; exitflag 若返回 l 表示搜索成功,若返回-1则未成功搜索到极小值点;若返回0表示已经达到函数评价或迭代的最大次数。
output 返回包含优化信息的结构输出:Output.Itarations 为迭代次数0utput.algorithm 为采用的算法Oulput.funccount 为函数评价次数右边参数options 指定优化参数选项,具体可以通过help 查询。
例4 求f = 2x e xsin -在0<x<8中的最小值与最大值主程序为wliti1.m:f='2*exp(-x).*sin(x)';fplot(f,[0,8]); %作图语句[xmin,ymin]=fminbnd (f, 0,8)f1='-2*exp(-x).*sin(x)';[xmax,ymax]=fminbnd (f1, 0,8)行结果:xmin = 3.9270 ymin = -0.0279xmax = 0.7854 ymax = 0.6448例5 对边长为4m 的正方形铁皮,在四个角剪去相等的小正方形以制成无盖水槽,问如何剪裁可使本糟容积最大?解:建立数学摸型:设x 为剪去的小正方形边长,V 为水槽体积, 2(42)(02)V x x x =-<<程序如下(注意最大值转化为最小值后再转回原来意思>>syms x>>[x,maxf]=fminbnd(‘-(4-2*x)^2*x ’,0,2); x, maxf=-maxfx =0.6667maxf =4.7407答:裁边长为0.6667的小正方形时容器有最大容积。
注:上述命令可以用于多元函数极值问题。
3.1.5 Matlab 计算一元函数积分1.命令格式int(f) 返回函数f 对默认独立变量的不定积分。
int(f,'t') 返回函数f 对指定独立变量t 的不定积分。
int(f,a,b) 返回函数f 对默认独立变量的定积分,积分区间为[a,b],a 和b 为数值式。
int(f,'t',a,b) 返回函数f 对指定独立变量t 的定积分,积分区间为[a,b],a 和b 为数值式。
int(f,'m','n') 返回函数f 对预设变量的定积分,积分区间为[m,n],m 和n 为符号式。
2.示范例子>>S1='6*x^3-4*x^2+b*x-5';S2='sin(a)';S3='sqrt(x)';>>int(S1)ans=3/2*x^4-4/3*x^3+1/2*b*x^2-5*x>>int(S2)ans=-cos(a)>>int(S3)ans=2/3*x^(3/2)>>int(S3,'a','b')ans=2/3*b^(3/2)- 2/3*a^(3/2)>>int(S3,0.5,0.6)ans=2/25*15^(1/2)-1/6*2^(1/2)>> double(int(S3,0.5,0.6)) %用double 函数可以把符号表达式变为数值表达式。
ans=0.0741也可以不用’’号定义符号函数,而通过syms 来说明后面所用到的全部符号函数,例如 >>syms x a b>>int(x*sin(x^2),a,b)ans =-1/2*cos(b^2)+1/2*cos(a^2)例6 计算广义积分2x e dx +∞--∞⎰,这是一个概率密度函数的广义积分,被积函数没有有限形式的原函数,依然可用积分函数int ()求解。
解:输入 syms xint(exp(-x^2),-inf,inf)结果:ans =pi^(1/2)3.2 Matlab 解微分方程3.2.1 MATLAB 解微分方程命令1.求微分方程(组)的解析解的MATLAB 命令dsolve(‘方程1’, ‘方程2’,…‘方程n’, ‘初始条件’, ‘自变量’)记号: 在表达微分方程时,用字母D 表示求微分,D2、D3等表示求高阶微分.任何D 后所跟的字母为因变量,自变量可以指定或由系统规则选定为缺省.例1求解一阶微分方程21u dtdu += 解 求通解:输入命令:dsolve('Du=1+u^2','t')结 果:u = tan(t+C1)求特解,输入:dsolve (’Du =l +u^2’,’u (0)=l ’,’x ’)输出: ans= tan(x+1/4*pi)例2 求解二阶微分方程:222()0,x y xy x n y '''++-=21()2,(),.222y y n πππ'==-= 输入:('2(1/)*(1(1/2)^2/^2)*0','(/2)2,dsolve D y x Dy x y y pi ++-== (/2)(1)*2/','')Dy pi pi x =-输出: ans=2^(1/2)*pi^(1/2)*sin(x)/x^(1/2)化简输出结果,输入:pretty(ans)计算结果为:x x y sin 2π=例3 求微分方程组 df /dx =3f +4g ;dg /dx =-4f +3 g 的解析解.求通解,输入:[,]('3*4*','4*3*','')f g dsolve Df f g Dg f g x ==+=-+ 输出:f=exp(3*x)*cos(4*x)*C1+exp(3*x)*sin(4*x)*C2g=-exp(3*x)*sin(4*x)*C1+exp(3*x)*cos(4*x)*C2求特解,输入:)1)0(,0)0(,*3*4,*4*3(],['==''+=''+='=g f g f Dg g f Df dsolve g f 输出: f=exp(3*t)*sin(4*t)g=exp(3*t)*cos(4*t) 2.求微分方程(组)的数值解方法在生产和科研中所处理的微分方程往往很复杂且大多得不出一般解。