以MATLAB的方式实现微积分问题的计算机求解问题及解决方案集锦

Posted 文宇肃然

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以MATLAB的方式实现微积分问题的计算机求解问题及解决方案集锦相关的知识,希望对你有一定的参考价值。

前言

 

关于MATLAB系列的精品专栏大家可参见

MATLAB-30天带你从入门到精通

MATLAB深入理解高级教程(附源码)

喜欢的小伙伴可自行订阅,你的支持就是我不断更新的动力哟!

微积分问题的计算机求解系列 (0001)

试求出以下的曲线积分。

图片

 

【解】    

套用第一类和第二类曲线积分公式,可以直接得出曲线积分的结果。

 

  • 需要注意的是:使用Maple内核的matlab与Mupad内核的matlab进行符号计算的结果可能表达形式是不一样。

     

  • 个人觉得Maple的符号计算更靠谱、更强大。

 

>> syms a t; 

x=a*(cos(t)+t*sin(t)); 

y=a*(sin(t)-t*cos(t)); 

f=x^2+y^2;  

I=int(f*sqrt(diff(x,t)^2+diff(y,t)^2),t,0,2*pi)

 

I =

 

2*pi^2*(2*pi^2 + 1)*(a^2)^(3/2)

 

>>  syms x y a b c t; 

x=c*cos(t)/a; 

y=c*sin(t)/b; 

P=y*x^3+exp(y); 

Q=x*y^3+x*exp(y)-2*y; 

ds=[diff(x,t);diff(y,t)];  

I=int([P Q]*ds,t,0,pi)

 

I =

 

-(2*c*(15*b^4 - 2*c^4))/(15*a*b^4)

 

>> syms t; 

syms a positive; 

x=exp(t); 

y=exp(-t); 

z=a*t; 

F=[y, -x, (x^2+y^2)]; 

ds=[diff(x,t);diff(y,t);diff(z,t)]; 

I=int(F*ds,t,0,1)

 

I =

 

(a*exp(2))/2 - (a*exp(-2))/2 + 2

 

>> syms t m; syms a positive;

x1=t; y1=0;

F1=[exp(x1)*sin(y1)-m*y1, exp(x1)*cos(y1)-m];

x2=a/2+a/2*cos(t); y2=a/2*sin(t);

F2=[exp(x2)*sin(y2)-m*y2, exp(x2)*cos(y2)-m];

I1=int(F1*[diff(x1,t);diff(y1,t)],t,0,a)

I2=int(F2*[diff(x2,t);diff(y2,t)],t,0,pi);

 

>> I=I1+I2 

 

I =

 

(pi*a^2*m)/8

微积分问题的计算机求解系列 (0002)

问题:

求出下面函数的导数。

图片

 

 

解答:

由求导函数 diff() 可以直接得出如下结果,其中 ③ 为隐函数,故需要用隐函数求 导公式得出导数。

 

>> syms x;

f=sqrt(x*sin(x)*sqrt(1-exp(x)));    simple(diff(f)) ans =

1/2/(x*sin(x)*(1-exp(x))^(1/2))^(1/2)*(sin(x)*(1-exp(x))^(1/2)+

x*cos(x)*(1-exp(x))^(1/2)-1/2*x*sin(x)/(1-exp(x))^(1/2)*exp(x))

 

>>  syms  a x

y=(1-sqrt(cos(a*x)))/(x*(1-cos(sqrt(a*x)))) simple(diff(y))

ans  =

1/2/cos(a*x)^(1/2)*sin(a*x)*a/x/(1-cos((a*x)^(1/2)))-

(1-cos(a*x)^(1/2))/x^2/(1-cos((a*x)^(1/2)))-1/2*(1-cos(a*x)^(1/2))

/x/(1-cos((a*x)^(1/2)))^2*sin((a*x)^(1/2))/(a*x)^(1/2)*a

 

>> f=atan(y/x)-log(x^2+y^2); f1=simple(-diff(f,x)/diff(f,y))

 

f1 =

(y+2*x)/(x-2*y)

 

>> syms n positive; syms a; 

f=-log((x^n+a)/x^n)/(n*a); diff(f,x) ans =

-(n/x-(x^n+a)/(x^n)*n/x)/(x^n+a)*x^n/n/a

 

 

用 LATEX  表示上面的结果,则

 

图片

 

 

拓展:

>> help latex

--- help for sym/latex ---

 

latex  LaTeX representation of a symbolic expression.

latex(S) returns the LaTeX representation of the symbolic expression S.

 

Examples:

syms x

f = taylor(log(1+x));

latex(f) =

          \\frac{x^5}{5} - \\frac{x^4}{4} + \\frac{x^3}{3} - \\frac{x^2}{2} + x

 

H = sym(hilb(3));

latex(H) =

         \\left(\\begin{array}{ccc} 1 & \\frac{1}{2} & \\frac{1}{3}\\\\ 

         \\frac{1}{2} & \\frac{1}{3} & \\frac{1}{4}\\\\ \\frac{1}{3} & 

         \\frac{1}{4} & \\frac{1}{5} \\end{array}\\right)

      

syms alpha t

A = [alpha t alpha*t];

 

latex(A) =

         \\left(\\begin{array}{ccc} \\mathrm{alpha} & t & \\mathrm{alpha}\\,

         t \\end{array}\\right)

 

See also sym/mathml, sym/texlabel.

微积分问题的计算机求解系列 (0003)

问题:

 

图片

 

 

解答:

高阶导数可以由下面语句直接得出

 

>>  syms  a x

f=sqrt((x-1)*(x-2)/(x-3)/(x-4));      

simple(diff(f,x,4)) 

 

ans =

 

3*(16*x^11-392*x^10+4312*x^9-28140*x^8+121344*x^7-

364560*x^6+783552*x^5-1214604*x^4+1342560*x^3-1015348*x^2+

474596*x-103741)/((x-1)*(x-2)/(x-3)/(x-4))^(7/2)/(x-3)^8/(x-4)^8

 

图片

 

拓展:

在高等数学中,求解分子和分母均同时为 0 或 ∞ 时,分式极限时可使用 L’Hˆopital 法则,即对分子分母分别求导数,再由比值极限计算得出,试用该法则求解:

 

图片

 

并和直接求出的极限结果相比较。

 

从给出的分母看,若想使之在 x = 0 处的值不为 0,则应该对其求 4 阶导数,同样, 还应该对分子求 4 阶导数,将 x = 0 代入结果,这样就可以使用 L’Hˆopital 法则求出极限了。

 

>> syms x; 

n=log(1+x)*log(1-x)-log(1-x^2); 

d=x^4; 

n4=diff(n,x,4); 

d4=diff(d,x,4); 

n4=subs(n4,x,0); 

L=n4/d4

L  = 1/12

 

现在直接求极限可以验证上述结果是正确的。

 

>> limit(n/d,x,0) ans =

1/12

微积分问题的计算机求解系列 (0004)

问题:

图片

 

 

解答:

参数方程的导数可以由下面语句直接求出。

 

>> syms t; 

x=log(cos(t)); 

y=cos(t)-t*sin(t); 

diff(y,t)/diff(x,t)

 

ans  =

-(-2*sin(t)-t*cos(t))/sin(t)*cos(t)

 

>> f=diff(y,t,2)/diff(x,t,2); 

subs(f,t,sym(pi)/3) 

 

ans =

3/8-1/24*pi*3^(1/2)

 

 

拓展1:

图片

 

证明二者相等亦可以由二者之差为零来证明,故由下面的语句直接证明。

 

>> syms x y; 

u=acos(x/y); 

diff(diff(u,x),y)-diff(diff(u,y),x)

 

ans  =

 

0

 

 

拓展2:

图片

用下面的语句可以直接得出如下结果。

 

>> syms x y u v 

[u,v]=solve(’x*u+y*v=0’,’y*u+x*v=1’,’u,v’); 

diff(diff(u,x),y)

 

ans  =

2/(x^2-y^2)^2*x+8*y^2/(x^2-y^2)^3*x

 

 

 

拓展3:

图片

由下面的命令可以得出所需结果。

 

>> syms x y   t

f=int(exp(-t^2),t,0,x*y);

x/y*diff(f,x,2)-2*diff(diff(f,x),y)+diff(f,y,2) simple(ans)

ans  =

-2*exp(-x^2*y^2)*(-x^2*y^2+1+x^3*y)

 

 

拓展4:

图片

 

Jacobi 矩阵可以由下面的语句直接得出。

 

>> syms x y z

F=[3*x+exp(y)*z; x^3+y^2*sin(z)]; 

jacobian(F,[x,y,z])

 

ans  =

[ 3, exp(y)*z, exp(y)] 

[ 3*x^2, 2*y*sin(z), y^2*cos(z)]

微积分问题的计算机求解系列 (0005)

问题:

 

图片

 

 

解答:

① 该不定积分可以由下面的命令直接求出

 

>>  syms  x a

f=(3*x^2+a)/(x^2+(x^2+a)^2); int(f,x) ans =

12/(4+16*a)/(2+4*a+2*(1+4*a)^(1/2))^(1/2)* 

atan(2*x/(2+4*a+2*(1+4*a)^(1/2))^(1/2))+

48/(4+16*a)/(2+4*a+2*(1+4*a)^(1/2))^(1/2)* 

atan(2*x/(2+4*a+2*(1+4*a)^(1/2))^(1/2))*a+

12/(4+16*a)/(2+4*a+2*(1+4*a)^(1/2))^(1/2)* 

atan(2*x/(2+4*a+2*(1+4*a)^(1/2))^(1/2))*(1+4*a)^(1/2)+

16/(4+16*a)/(2+4*a+2*(1+4*a)^(1/2))^(1/2)* 

atan(2*x/(2+4*a+2*(1+4*a)^(1/2))^(1/2))*(1+4*a)^(1/2)*a+

12/(4+16*a)/(2+4*a-2*(1+4*a)^(1/2))^(1/2)* 

atan(2*x/(2+4*a-2*(1+4*a)^(1/2))^(1/2))+

48/(4+16*a)/(2+4*a-2*(1+4*a)^(1/2))^(1/2)* 

atan(2*x/(2+4*a-2*(1+4*a)^(1/2))^(1/2))*a-

12/(4+16*a)/(2+4*a-2*(1+4*a)^(1/2))^(1/2)*

atan(2*x/(2+4*a-2*(1+4*a)^(1/2))^(1/2))*(1+4*a)^(1/2)- 16/(4+16*a)/(2+4*a-2*(1+4*a)^(1/2))^(1/2)*

atan(2*x/(2+4*a-2*(1+4*a)^(1/2))^(1/2))*(1+4*a)^(1/2)*a

 

② 可以用下面的语句求出问题的解

 

>> syms x; f=sqrt(x*(x+1))/(sqrt(x)+sqrt(x+1)); 

int(f,x);   

latex(ans)

 

并将其显示如下:

 

图片

 

③ 可以求出下面的结果

 

>>  syms  a  b x

f=x*exp(a*x)*cos(b*x); 

int(f,x); 

latex(ans)

 

其数学显示为

 

图片

 

④ 用下面的语句求解,得

 

>> syms x a b c; f=exp(a*x)*sin(b*x)*sin(c*x); latex(int(f,x))

 

亦即

图片

 

 

 

图片

 

以上是关于以MATLAB的方式实现微积分问题的计算机求解问题及解决方案集锦的主要内容,如果未能解决你的问题,请参考以下文章

备战数学建模7-MATLAB数值微积分与方程求解

新星计划MATLAB-微积分

如何用matlab求积分

背包问题怎样给出符号说明,目标函数和约束条件

MATLAB的符号运算变量如何创建?

Matlab求解常微分问题