利用matlab进行微积分的计算共28页文档
实验一B Matlab基本操作与微积分计算
实验一Matlab基本操作与微积分计算实验目的1.进一步理解导数概念及其几何意义.2.学习matlab的求导命令与求导法.3.通过本实验加深理解积分理论中分割、近似、求和、取极限的思想方法.4.学习并掌握用matlab求不定积分、定积分、二重积分、曲线积分的方法.5.学习matlab命令sum、symsum与int.实验内容一、变量1、变量MATLAB中变量的命名规则是:(1)变量名必须是不含空格的单个词;(2)变量名区分大小写;(3)变量名最多不超过19个字符;(4)变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号.1、创建简单的数组x=[a b c d e f ]创建包含指定元素的行向量x=first:step: last创建从first起,逐步加step计数,last结束的行向量, step缺省默认值为1x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量x=logspace(first,last,n)创建从first开始,到last结束,有n个元素的对数分隔行向量.注:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素.2、数组元素的访问(1)访问一个元素: x(i)表示访问数组x的第i个元素.(2)访问一块元素: x(a :b :c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1.(3)直接使用元素编址序号: x ([a b c d]) 表示提取数组x的第a、b、c、d个元素构成一个新的数组[x (a) x (b) x(c) x(d)].3、数组的运算(1)标量-数组运算数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算.设:a=[a1,a2,…,an], c=标量, 则:a+c=[a1+c,a2+c,…,an+c]a .*c=[a1*c,a2*c,…,an*c]a ./c= [a1/c,a2/c,…,an/c](右除)a .\c= [c/a1,c/a2,…,c/an] (左除)a .^c= [a1^c,a2^c,…,an^c]c .^a= [c^a1,c^a2,…,c^an](2)数组-数组运算当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行的,不同大小或维数的数组是不能进行运算的.设:a=[a1,a2,…,an], b=[b1,b2,…,bn], 则:a +b= [a1+b1,a2+b2,…,an+bn]a .*b= [a1*b1,a2*b2,…,an*bn]a ./b= [a1/b1,a2/b2,…,an/bn]a .\b=[b1/a1,b2/a2,…,bn/an]a .^b=[a1^b1,a2^b2,…,an^bn]三、矩阵1、矩阵的建立矩阵直接输入:从“[ ” 开始,元素之间用逗号“,”(或空格),行之间用分号“;”(或回车),用“ ]”结束.特殊矩阵的建立:a=[ ] 产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零.b=zeros (m,n) 产生一个m行、n列的零矩阵c=ones (m,n) 产生一个m行、n列的元素全为1的矩阵d=eye (m,n) 产生一个m行、n列的单位矩阵eye (n) %生成n维的单位向量eye (size (A)) %生成与A同维的单位阵2、矩阵中元素的操作(1)矩阵A的第r行A(r,:)(2)矩阵A的第r列A(:,r)(3)依次提取矩阵A的每一列,将A拉伸为一个列向量A(:)(4)取矩阵A的第i1~i2行、第j1~j2列构成新矩阵:A(i1:i2, j1:j2)(5)以逆序提取矩阵A的第i1~i2行,构成新矩阵:A(i2:-1:i1,:)(6)以逆序提取矩阵A的第j1~j2列,构成新矩阵:A(:, j2:-1:j1 )(7)删除A的第i1~i2行,构成新矩阵:A(i1:i2,:)=[ ](8)删除A的第j1~j2列,构成新矩阵:A(:, j1:j2)=[ ](9)将矩阵A和B拼接成新矩阵:[A B];[A;B]3、矩阵的运算(1)标量-矩阵运算同标量-数组运算.(2)矩阵-矩阵运算a. 元素对元素的运算,同数组-数组运算.(A/B %A右除B; B\A %A左除B)b. 矩阵运算:矩阵加法:A+B矩阵乘法:A*B方阵的行列式:det(A)方阵的逆:inv(A)方阵的特征值与特征向量:[V,D]=eig[A] A 的转置 A’ A 的n 次幂A^n 四、导数及偏导数计算 1.学习matlab 命令.建立符号变量命令sym 和syms 调用格式: x=sym(‘x’), 建立符号变量x ;syms x y z , 建立多个符号变量x,y,z ; matlab 求导命令diff 调用格式:diff (函数()f x ) , 求()f x 的一阶导数()f x ';diff (函数()f x , n ) , 求()f x 的n 阶导数()()n f x (n 是具体整数); diff (函数(,)f x y ,变量名x ), 求(,)f x y 对x 的偏导数f x∂∂; diff (函数(,)f x y , 变量名x ,n ) ,求(,)f x y 对x 的n 阶偏导数n n fx∂∂;matlab 求雅可比矩阵命令jacobian ,调用格式:jacobian ([(,,)f x y z ;(,,)g x y z ;(,,)h x y z ], [,,x y z ])给出: f f f x y z gg g x y z h h h xyz ⎛⎫∂∂∂ ⎪∂∂∂ ⎪ ⎪∂∂∂⎪∂∂∂ ⎪ ⎪∂∂∂ ⎪∂∂∂⎝⎭2.求一元函数的导数. (1)()y f x =的一阶导数. 例1.1 设()x f x e =,用定义计算(0)f '. 解:()f x 在某一点0x 的导数定义为极限: 000()()limx f x x f x x∆→+∆-∆我们记h x =∆,输入命令:syms h;limit((exp(0+h)-exp(0))/h,h,0) 得结果:ans=1.可知(0)1f '= 例1.2 求ln(sin )y x =的导数. 解: 输入命令:dy_dx=diff(log(sin(x))). 得结果:dy_dx=cos(x)/sin(x).在matlab 中,函数x ln 用log(x)表示,而log10(x)表示x lg .例1.3 求下列函数的导数: %利用matlab 命令diff 一次可以求出若干个函数的导数.1.1y =2.22cos 2cos2y x x =+.3.xy sin 34=.4.xy ln ln 4=. 解: 输入命令:a=diff([sqrt(x^2- 2*x+5),cos(x^2)+2*cos(2*x),4^(sin(x)),log(log(x))]). 得结果:a=[1/2/(x^2-2*x+5)^(1/2)*(2*x-2), -2*sin(x^2)*x-4*sin(2*x), 4^sin(x)*cos(x)*log(4), 1/x/log(x)].由本例可以看出,matlab 函数是对矩阵或向量进行操作的,a(i)表示向量a 的第i 个分量.函数向量的第i 个函数的导数为导数向量中对应的元素。
MATLAB教程【5】微积分
Z=trapz(x,y) 计算 对x的梯形积分,其中 、y定义函数关系 计算y 的梯形积分, 定义函数关系y=f(x)。 的梯形积分 其中x、 定义函数关系 。 Z=trapz(x,y,dim) 对dim指定的 的维进行积分。 指定的y的维进行积分 指定的 的维进行积分。
1.4.7 数 值 积 分
一、数值积分的基本原理
b b
I1 = ∫ f ( x)dx, I 2 = ∫ p ( x)dx
a a
f(b)
T=
b−a [ f (a ) + f (b )] 2
梯形公式
f(a)
将积分区间[a,b]划分为 等份,步长 划分为n等份 将积分区间 划分为 等份, h=(b-a)/n,xk=a+bk构造求积公式 构造求积公式
( I n = ( b − a )∑ C k n ) f ( x k ) k =0 n
牛顿 − 柯特斯公式
a
b n = 1即梯形公式, n = 2时为辛普生公式 即梯形公式,
b−a a+b S= [ f (a ) + 4 f ( ) + f ( b )] 6 2
1.4.7 数 值 积 分
二、数值积分的实现 1、梯形积分:对矢量、矩阵和多维列阵进行梯形积分 、梯形积分:对矢量、 Z=trapz(y) 计算 的数值梯形积分,步长默认为 ,若不是 而是 , 计算y 的数值梯形积分,步长默认为1,若不是1 而是h,
例:用不同的方法求函 数 f ( x )的数值导数并作图 f ( x) = f '( x) = x 3 + 2 x 2 − x + 12 + 6 x + 5 + 5 x + 2 3x2 + 4x − 1 2 x + 2 x − x + 12
第3讲 MATLAB在微积分中的应用
2)求数值解的方法 1. 欧拉方法 若步长h较小,则可用差商近似代替导数,即 y ( x + h) − y ( x ) y '( x) ≈ h 于是便得公式 yi +1 ≈ yi + hf ( xi , yi ) , i = 0,1, L , n − 1. y0 = y ( x0 ) 此法称为欧拉方法。
例7 用MATLAB软件求微分方程 du = 1+ u2 dt 的通解; 例8 用MATLAB软件求微分方程 d 2 y dy 2 + 4 + 29 y = 0 dx dx y(0) = 0, y ' (0) = 15 的特解。
例9 用MATLAB软件求微分方程组 dx dt = 2 x − 3 y + 3z dy = 4 x − 5 y + 3z dt dz dt = 4 x − 4 y + 2 z 的通解.
2. 改进的欧拉方法 对方程y ' = f ( x, y )两边从xi到xi +1积分,再利用梯形公式,得 y ( xi +1 ) − y ( xi ) = ∫
xi +1 xi
f ( x, y ( x )) dx
xi +1 − xi ≈ [ f ( xi , y ( xi )) + f ( xi +1 , y ( xi +1 ))] 2 h 于是有公式: yi +1 ≈ yi + [ f ( xi , yi ) + f ( xi +1 , yi +1 )], y0 = y ( x0 ) 2 上式中右边yi +1的值可用欧拉方法计算,即有 yi +1 = yi + hf ( xi , yi ) i = 0,1, L , n − 1. h yi +1 = yi + 2 [ f ( xi , yi ) + f ( xi +1 , yi +1 )] 此法称为改进的欧拉方法。
第2讲 MATLAB微积分中的应用
返回
clear; [a,b]=solve('3*x-y=1','x+y=3','x,y')
返回
2.3 导数 help diff (P35)
第三讲 MATLAB在微积
分中的应用
返回
2.1 极限
(1)limit(f,x,a):计算当变量x趋近于常数a时,
(2)
f(x)函数的极限值;
(2) limit(f,x,a,‘right’):‘right’表示变量x从右边 趋近于a;
(3) limit(f,x,a,‘left’): ‘left’表示变量x从左边 趋近于a
diff(f,x):以x为自变量,对符号表达式f求一阶导数; diff(f,x,n):以x为自变量,对符号表达式s求n阶导数。
返回
例1 设y = xe3x, 求y' , y (5).
syms x; y='x*exp(3*x)'; y1=diff(y,x); % 1阶导数 y5=diff(y,x,5); % 5阶导数 y1,y5
例2 求3次方程x3 x 3 = 0的所有根.
roots([1,0,-1,-3])
返回
>>roots([1,0,-1,-3]) ans =
1.6717 -0.8358 + 1.0469i -0.8358 - 1.0469i >>
返回
Matlab微积分问题计算机求解实验
>> q2=quad('quad1',0,1)
【例】求exp(-x2)在[0,1]上的积分。
数值积分
3、编写被积函数表达式,函数名为f=@(x).exp(-x.^2);
>> q2=quad(f,0,1)
数值积分
(2)梯形法(被积函数由一个表格定义)
trapz函数采用梯形法求取数值积分,适用于由表格形式定义的函数关系的求定积分问题,求值速度快, 但精度差。
syms x; f=abs(x)/x;%给出待展开的函数 xx=[-pi:pi/200:pi]; xx=xx(xx~=0); xx=sort([xx,-eps,eps]);
Fourier级数的Matlab程序
yy=subs(f,x,xx);%计算f(x)的值 for i=1:20
[A,B,F]=fseries(f,x,n); y=subs(F,x,xx); subplot(4,5,n); plot(xx,yy);%画出f(x)的图像 hold on plot(xx,y);%画出Fourier级数的图像 end
K ex2dx 0
计算积分
21
( x1)2
练习:
e 2 dx,
0 2
e2t 2 x 2 1
dx
cost (2 x 2 3 x 1)2
符号求和
symsum(u,n,n0,nn): symsum(f,a,b): 关于默认变量求和
例:计算级数
S 1 及其前100项的部2 分和 n n 1
>> syms n; f=1/n^2;
>> S=symsum(f,n,1,inf)
>> S100=symsum(f,n,1,100)
第七章 MATLAB微积分数值计算
相同维数的向量U,且 1 U1 2 ( V4 4V3 5V2 2V1 ) h 1 U i 2 (Vi 1 2Vi Vi 1 ), (1 i n) h 1 U n 2 (2Vn 5Vn 1 4Vn 2 Vn 3 ) h 默认的步长为1。 U=4*del2(V,h1,h2),对矩阵V,横向(x方向)以步长h1,纵向(y方
diff调用格式为:
Dy=diff(Y):计算向量Y的向前差分,并把结果赋值给向量Dy Dy(i)=Y(i+1)-Y(i),i=1,2,…,n-1。注意向量Dy元素个数比Y少一个
Dy=diff(Y,n):计算向量Y的n阶向前差分。注意向量Dy元素个数比Y少n个.例如:
diff(Y,2)=diff(diff(Y))=DX(i+1)-DX(i)= Y(i+2)-2Y(i+1)+Y(i) , i=1,2 ……n-2。
计算积分,可以采取逐步缩小步长h的办法。即先任
取步长h进行计算,然后取较小步长 h’ 进行计算,如果两
次计算结果相差较大,则取更小步长进行计算,如此下去, 直到相邻两次计算结果相差不大为止,取最小步长算出的 结果作为积分值。这种方法称为变步长积分法。 利用两种步长计算积分时,通常取h’=h/2 。而每次
x
4
精度为O(∆X4)的高阶中心差分算法
yi yi yi yi 2 8 yi 1 8 yi 1 yi 2 12 x yi 2 16 yi 1 30 yi 16 yi 1 yi 2 12 x
2
yi 3 8 yi 2 13 yi 1 13 yi 1 8 yi 2 yi 3 8 x
7.1 数值微分 7.2 数值积分 7.3 常微分方程的数值解法
Matlab在微积分中的应用
Matlab 在微积分中的应用命令1 极限函数 limit格式 limit(F,x,a) %计算符号表达式F=F(x)的极限值,当x →a 时。
limit(F,a) %用命令findsym(F)确定F 中的自变量,设为变量x ,再计算F 的极限值,当x →a 时。
limit(F) %用命令findsym(F)确定F 中的自变量,设为变量x ,再计算F 的极限值,当x →0时。
limit(F,x,a,'right')或limit(F,x,a,'left') %计算符号函数F 的单侧极限:左极限x →a - 或右极限x →a+。
例3-25>>syms x a t h n;>>L1 = limit((cos(x)-1)/x)>>L2 = limit(1/x^2,x,0,'right')>>L3 = limit(1/x,x,0,'left')>>L4 = limit((log(x+h)-log(x))/h,h,0)>>v = [(1+a/x)^x, exp(-x)];>>L5 = limit(v,x,inf,'left')>>L6 = limit((1+2/n)^(3*n),n,inf)计算结果为:L1 =L2 =infL3 =-infL4 =1/xL5 =[ exp(a), 0]L6 =exp(6)命令2 导数(包括偏导数)函数 diff格式 diff(S,'v')、diff(S,sym('v')) %对表达式S 中指定符号变量v 计算S 的1阶导数。
diff(S) %对表达式S 中的符号变量v 计算S 的1阶导数,其中v=findsym(S)。
diff(S,n) %对表达式S 中的符号变量v 计算S 的n 阶导数,其中v=findsym(S)。
第三章-matlab求解微积分
第三章 微积分的数学实验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)会出现差异,有的能够执行,有的不能够,有的执行符号微分,有的执行数值微分,所以比较麻烦。
微积分问题的MATLAB求解
0-1规划(bintprog)
非线性最小二乘 lsqnonlin lsqcurvefit
其他规划ga gamultiobj simulannealbnd patternsearch threshacceptbnd 上下界 约束 fminbnd fmincon lsqnonlin lsqcurvefit
fun
H
A,b
Aeq,beq vlb,vub X0 x1,x2 options
A矩阵和b向量分别为线性不等式约束: linprog,quadprog,fgoalattain, fmincon,fminimax AX≤b中的系数矩阵和右端向量 Aeq矩阵和beq向量分别为线性等式约 束Aeq*X=beq中的系数矩阵和右端向量 X的下限和上限向量 迭代初始点坐标 函数最小化的区间 优化选项参数结构 linprog,quadprog,fgoalattain, fmincon,fminimax linprog,quadprog,fgoalattain, fmincon,fminimax,lsqcurvefit, lsqnonlin 除fminbnd外所有函数 fminbnd 所有优化函数
内寻找一个近似零点。 solve(f)求解表达式f的代数方程,求解变量为默认变量。 solve(f,x)求解变量为x sovle(f1,f2,...,fn,x1,x2,...,xn)求解f1,f2,...,fn表示的代数方程组。
例如:
三. 微商的计算
3.1符号导数
diff函数用于对符号表达式求导数,该函数的调用形式为: diff(f)没有指定变量和导数阶数,系统按照findsym函数指示的默认变量求一阶导数 diff(f,x) diff(f,n)按findsym函数指示的默认变量求n阶导数,n必须为正整数。 diff(f,x,n)
利用matlab进行微积分的计算
Matlab的微积分符号运算都可以对数组进行。
函数的积分 积分符号运算的基本语句 int(F); %求函数表达式F的不定积分 int(F,v); %求函数表达式F关于变量v的不定积分 int(F,a,b); %求函数表达式F在区间[a,b]上的定积分 int(F,v,a,b); %求函数表达式F在区间[a,b]上的关于变量v的 定积分
elapsed time is 17.471170 seconds. s=
53362913282294785045591045624042980409652472280384260097101349248456268889497101757 50609790198503569140908873155046809837844217211788500946430234432656602250210027842 563285208140554494121044251014267277029477471270891796396777961045322469242686646888 828158207198489710511079687324931915552939701750893156451997608573447301418328401172 44122806490743077037366831700558002936592350885893602352858528081607595747378366554 13175508131522517/712886527466509305316638415571427292066835886188589304045200199115 432408758111149947644415191387158691171781701957525651298026406762100925146587100430 513107268626814320019660997486274593718834370501543445252373974529896314567498212823 69562328237940110688092623177088619795407912477545580493264757378299233527517967352 48042463638051137034331214781746850878453485678021888075373249921995672056932029099 390891687487672697950931603520000
微积分问题的MATLAB求解
研究背景
微积分的相关知识 微积分是研究微分学与积分学的统称,其在自然科学, 经济学和工程学领域有着广泛应用。微积分的思想早在 17世纪就已经产生了。为了解决当时存在的科学问题, 费马、笛卡尔等著名的数学家做了大量的研究,积累了 很多理论成果。最终,牛顿和莱布尼茨被认为是独立的 微积分的发明者。 微积分主要有三大分支,即极限、微分学、积分学。微 积分的基本公式为
S symsum( fk , k, k0 , kn )
4.序列求积问题可用符号运算工具箱提供的symprod()。该函数调用格式为
P symprod ( fn , n, a,b)
微积分问题的MATLAB求解
论文要点——曲线积分及MATLAB求解
曲线积分一般分为第一类曲线积分和曲面积分的现成函数。论文中介 绍了曲线、曲面积分的概念,引入了将他们转换为一般积分问题的算 法,并介绍了如何利用符号运算工具箱直接求解曲线。在这里将通过 例子介绍第一类曲线积分的求解方法。
同样,我们也可以求解参数方程, 隐函数,多元函数Jacobi矩阵, Hess偏导数矩阵的导数
微积分问题的MATLAB求解
论文内容——积分问题的解析解
传统的积分求解方法需要灵活熟练的掌握积分知识,本文将从不定积分,定积分,多重 积分三个方面介绍积分问题的客观求解方法。
MATLAB符号运算工具箱提供了一个int()函数,可以直接用来求取符号函数的不定积分, 调用格式为F=int(f,x)
得出的结果为
y(x) 386459 x8 515273 x7 3067 x6 4087 x5 34 x4 23 x3 4 x2 1 x 918540 1224720 7290 9720 81 54 9 3
matlab中ode求解微积分
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第3章 微积分问题的计算机求解
2/28/2024星期六, 2008-9- 6, 13:07:55
Slide 1 (of 147)
18/159
3.2.1 函数的导数和高阶导数
如果函数和自变量都已知,且均为符号变 量,则可以用diff()函数解出给定函数的 各阶导数 函数语法
或
2/28/2024星期六, 2008-9- 6, 13:07:55
单变量函数Taylor级数展开 多变量函数Taylor级数展开
Fourier级数展开 级数求和的计算 序列求积问题
2/28/2024星期六, 2008-9- 6, 13:07:55
Slide 1 (of 147)
54/159
3.4.1 单变量函数 的Taylor幂级数展开
Slide 1 (of 147)
40/159
3.3.1 不定积分的推导
函数int()可以被用于计算不定积分
MATLAB函数
积分
多重积分,嵌套调用;更多重循环
2/28/2024星期六, 2008-9- 6, 13:07:55
Slide 1 (of 147)
41/159
例 3.21
函数 求其一阶导数,再积分
48/159
例 3.25
求解 MATLAB求解(早期版本)
直接公式求解
2/28/2024星期六, 2008-9- 6, 13:07:55
Slide 1 (of 147)
49/159
3.3.3 多重积分问题的 MATLAB求解
函数int()仍可以被用于计算多重积分
注意:需要根据实际情况先选择积分顺 序,可积的部分作为内积分,然后再处 理外积分。否则,会的不出解析解
Slide 1 (of 147)
用matlab计算微积分
是int,其调用格式为: int(f,x) int函数求函数f对变量x的不定积分。
例4 求不定积分
x x dx
2 4
解: 原 式 x 1 x 2 dx
1 1 x 2 d (1 x 2 ) 2
3 1 2 . .(1 x 2 ) 2 2 3 3 1 (1 x 2 ) 2 c 3
在MATLAB中,求定积分的函数是int,
例 6 求积分
1 0
1
2
3 2x x 1
dx, dx,
3 2x x
2
syms x; int(1/(3+2*x+x^2),x,0,1) int(1/(3+2*x+x^2),x,-inf,inf)
2x 1 例7求定积分 cost (2 x 2 3 x 1)2 dx
因式分解
因式分解
factor(f)
syms x; f=x^6+1; factor(f)
factor 也可用于正整数的分解
s=factor(100) factor(sym('12345678901234567890'))
大整数的分解要转化成符号常量
函数展开
函数展开
expand(f)
多项式展开
>> syms x; f=(x+1)^6; >> expand(f)
三角函数展开
>> syms x y; f=sin(x+y); >> expand(f)
合并同类项
合并同类项
collect(f,v): 按指定变量 v 进行合并 collect(f): 按默认变量进行合并
MATLAB_实验04 多元函数微积分
实验04 多元函数微积分一实验目的 (2)二实验内容 (2)三实验准备 (2)四实验方法与步骤 (3)五练习与思考 (7)一 实验目的1 了解多元函数、多元函数积分的基本概念,多元函数的极值及其求法;2 理解多元函数的偏导数、全微分等概念,掌握积分在计算空间立体体积或表面积等问题中的应用;3 掌握MATLAB 软件有关求导数的命令;4 掌握MATLAB 软件有关的命令.二 实验内容1 多元函数的偏导数,极值;2 计算多元函数数值积分;3计算曲线积分,计算曲面积分.三 实验准备1 建立符号变量命令为sym 和syms ,调用格式为: x=sym('x') 建立符号变量x ;syms x y z 建立多个符号变量x ,y ,z ; 2 matlab 求导命令diff 的调用格式: diff(函数(,)f x y ,变量名x)求(,)f x y 对x 的偏导数f x∂∂; diff(函数(,)f x y ,变量名x,n) 求(,)f x y 对x 的n 阶偏导数n n fx∂∂;3 matlab 求雅可比矩阵命令jacobian 的调用格式: jacobian([f;g;h],[],,x y z )给出矩阵f f f x y zg g g x y zh h h xyz ⎛⎫∂∂∂ ⎪∂∂∂ ⎪ ⎪∂∂∂ ⎪∂∂∂ ⎪ ⎪∂∂∂ ⎪∂∂∂⎝⎭4 MATLAB 中主要用int 进行符号积分,常用格式如下: ① int(s)表示求符号表达式s 的不定积分② int(s,x)表示求符号表达式s 关于变量x 的不定积分③ int(s,a,b)表示求符号表达式s 的定积分,a ,b 分别为积分的上、下限④ int(s,x,a,b)表示求符号表达式s 关于变量x 的定积分,a,b 分别为积分的上、下限5 MATLAB 中主要用trapz,quad,quad8等进行数值积分,常用格式如下:① trapz(x,y)采用梯形积分法,其中x 是积分区间的离散化向量,y 是与x 同维数的向量、用来表示被积函数.② quad8('fun',a,b,tol)采用变步长数值积分,其中fun 为被积函数的M 函数名,a,b 分别为积分上、下限,tol 为精度,缺省值为1e-3.③ dblquad('fun',a,b,c,d)表示求矩形区域的二重数值积分,其中fun 为被积函数的M 函数名,a ,b 分别为x 的上、下限,c ,d 分别为y 的上、下限.使用help int ,help trapz ,help quad 等查阅有关这些命令的详细信息.四 实验方法与步骤例1 定义二元函数23z x y =+.解 (1)方法一:syms x y;z=x.^2+y.^3; (2)方法二:编写M 文件fun7.m 定义函数function z=fun7(x,y) z=x.^2+y.^3;(3)方法三:利用inline 函数:f=inline('x.^2+y.^3'). 注:不同定义方式,调用格式不完全相同. 例2 绘出函数23z x y =+的图形.解 程序为:x=linspace(-10,10,40);y=x;[X,Y]=meshgrid(x, y); Z=fun7(X,Y);surf(X,Y,Z),shading interp 结果如图2-10所示.图2-10例3 设222u x y yz =++,求u y∂∂. 解 输入命令:syms x y z;diff(x^2+2*y^2+y*z,y),得ans=4*y+z.利用jacobian 命令:jacobian(x^2+2*y^2+y*z,[x y]),得ans=[2*x,4*y+z],即矩阵,u u x y ⎛⎫∂∂ ⎪∂∂⎝⎭例4 设642232z x y x y =-+,求22222,,z z zx y x y∂∂∂∂∂∂∂.解 求22zx∂∂的程序为:syms x y;diff(x^6-3*y^4+2*x^2*y^2,x,2)结果为: ans=30*x^4+4*y^2 求22zy ∂∂的程序为:syms x y;diff(x^6-3*y^4+2*x^2*y^2,y,2) 结果为:ans=-36*y^2+4*x^2求2z x y∂∂∂的程序为:syms x y;diff(diff(x^6-3*y^4+2*x^2*y^2,x),y) 结果:为ans=8*x*y.注:diff(x^6-3*y^4+2*x^2*y^2,x,y)是求zy∂∂,而不是求2z x y ∂∂∂例5 设由,x y 所确定的z 的隐函数为2225xy y z ++=,求,z zx y∂∂∂∂.解 令()22,,25F x y z xy y z =++- ''/x z zF F x∂=-∂ 输入命令:syms x y z;a=jacobian(x*y+y^2+2*z^2-5,[x,y,z]) 可得矩阵()''',,x y z F F F =[y,x+2*y,4*z] 利用公式''''/,/x z y z z zF F F F x y∂∂=-=-∂∂可得 求zx ∂∂的程序为:-a(1)/a(3),结果为:-1/4*y/z ; 求zy∂∂的程序为:-a(2)/a(3),结果为:1/4*(-x-2*y)/z. 例6 求(1)()222122()312(12)f x x x x =-+-在点()2,2-临近的极小值.(2)222()()(1)f x y x x =-+-在55x -≤≤内的极值.解 求多元函数(,)z f x y =的极值点X 和极小值minf ,可用如下方法 方法一:X=fminsearch('f',x0),用的是Nelder-Mead 单纯形搜索法求解; 方法二:X=fminunc('f',x0),用的是BFGS 拟牛顿迭代法求解. 其中[](1),(2),(3),,()X x x x x n =,x0是初始点. 若求极大值点,用(-1)乘函数,再求极小值点.(1)程序如下:f='(x(1)^2-3*x(2))^2+12*(1-2*x(2))^2'; x=fminsearch(f,[-2,2]),minf=eval(f) 结果为:x =-1.2247 0.5000, minf =2.1879e-009结果说明在1 1.2247x =-,20.5x =时,函数的极小值为0. (2)先作函数的图形,程序如下:[x,y]=meshgrid(-5:0.5:5); f=(y-x.^2).^2+(1-x).^2; surf(x,y,f);结果如图2-11所示.以下程序为求函数的极小值:图2-11f='(x(2)-x(1).^2).^2+(1-x(1)).^2';x=fminsearch(f,[0.2,0.3]),minf=eval(f),shading interp结果为:x=[1.0000,1.0000],minf=4.1546e-010 说明在1,1x y ==时,函数的极小值为0. 例8 计算积分221(1)d d x y xy x y +≤+⎰⎰.解 先将被积函数转化为二次积分:)22111(1)d d 1d d x y x y x y x y y x -+≤⎛⎫++=++ ⎪⎝⎭⎰⎰⎰, 程序为:clear; syms x y;iy=int(1+x*y,y,-sqrt(1-x^2),sqrt(1-x^2));int(iy,x,-1,1) 结果为:ans=π.例9 求对弧长的曲线积分:(1)计算2d ,:2cos ,3sin Ly s L x t y t ==⎰。
第03讲 (2010)MATLAB在微积分运算中的应用
1. 极限
(1) 对极限定义的认识
练习1 用下面的语句观察数列的前100项变化情况 n=1:100; a=n.^(n.^(-1)) 为了更清楚地观察其是否收敛,读者可将项数增大一些
对于该数列,我们再用语句:
plot(n,a,'.') 画出其散点图,借助于图形来观察它的变化趋势。
2
1.45 1.4 1.35 1.3 1.25 1.2 1.15 1.1 1.05 1
10
(1) 求导命令diff 在MATLAB软件中,可用语句
diff(f(x),x)
计算函数的导函数,当然在使用前需先将x 定义成符号变量 。 若要求f(x) 在x=a处的导数,可用subs命令, 只要将x=a赋给上面的导函数便可得到 。 而命令 diff(f(x), x, n) 求的是函数f(x)对x的n阶导函数。
24
例10 计算不定积分 sin 2 x sin 3 x sin 4 xdx
clear syms x; y=sin(2*x)*sin(3*x)*sin(4*x)
y= sin(2*x)*sin(3*x)*sin(4*x) int(y)
ans =
-1/20*cos(5*x)-1/12*cos(3*x)+1/36*cos(9*x)-1/4*cos(x) pretty(ans) - 1/20 cos(5 x) - 1/12 cos(3 x) + 1/36 cos(9 x) - 1/4 cos(x)
运行该程序可判断出: xn与yn有极限,且这两极限值 是相等的。 (x100=1.456791E+000,y100=1.456791E+000。
9
2. 导数与微分 在MATLAB中由命令函数diff()来完成运算, 其具体形式为: