主要内容

功能衍生品教程

这个例子通过波动方程的例子展示了如何在符号数学工具箱™中使用函数导数。本例符号化地执行计算以获得分析结果。用函数导数求解两端固定的弦的波动方程。泛函导数是泛函对它所依赖的函数的导数。函数实现函数导数functionalDerivative函数。

求解波动方程是函数导数的一个应用。它描述了波的运动,从弦的运动到电磁波的传播,是物理学中一个重要的方程。您可以将本例中演示的技术应用到从解决臂时线问题到寻找肥皂泡最小表面的变化演算中的应用程序中。

考虑一个长度的字符串l悬在两点之间的x = 0而且x = L.弦具有单位长度的特征密度和特征张力。定义长度、质量密度和张力为以后使用的常量。为简单起见,将这些常量设置为1

长度= 1;密度= 1;张力= 1;

如果弦在运动中,弦的动能和势能密度是其静止位移的函数S (x, t),随着位置的变化而变化x和时间t.如果d单位长度的质量密度,动能密度是多少

T d 2 d d t 年代 x t 2

势能密度是

V r 2 d d x 年代 x t 2

在哪里r是紧张的。

在MATLAB中输入这些方程。因为长度必须是正的,所以设定这个假设。这种假设允许简化把得到的方程简化成期望的形式。

信谊S (x, t)drvl假设(L>0) T(x, T) = d/2*diff(S, T)^2;V (x, t) = r / 2 * diff(年代,x) ^ 2;

行动密度一个过程.最小行动原则指出,行动总是被最小化。通过求的函数导数来确定最小作用条件一个关于年代使用functionalDerivative等于0。

一个=过程;n = functionalDerivative(A,S) == 0
eqn (x, t) =

r 2 x 2 年代 x t - d 2 t 2 年代 x t 0

简化.通过代入将方程转化为期望形式r / d和波速的平方v

eqn =简化(eqn) / r;eqn =潜艇(eqn, r / d, v ^ 2)
eqn (x, t) =

2 t 2 年代 x t v 2 2 x 2 年代 x t

用分离变量的方法求解方程。集S (x, t) = U (x) * V (t)分离对位置的依赖x和时间t.将得到的方程两边分别用孩子们

信谊U (x)V (t)eqn2 =潜艇(eqn S (x, t), U (x) * V (t));eqn2 = eqn2 / (U (x) * V (t))
eqn2 (x, t) =

2 t 2 V t v 2 V t 2 x 2 U x U x

tmp =孩子(eqn2);

方程的两边依赖于不同的变量,但却是相等的。这只有当每条边都是常数时才有可能。使每条边等于任意常数C得到两个微分方程。

信谊Ceqn3 = tmp(1) == C
eqn3 =

2 t 2 V t v 2 V t C

eqn4 = tmp(2) == C
eqn4 =

2 x 2 U x U x C

求解微分方程dsolve在位移为的条件下0x = 0而且t = 0.将方程简化为所期望的形式简化步骤选项设置为50

V (t) = dsolve (eqn3, V (0) = = 0, t);U (x) = dsolve (eqn4 U (0) = = 0, x);V (t) =简化(V (t)“步骤”, 50)
V (t) =
                 
                  
                   
                    
                     
                      -
                     
                      
                       
                        2
                       
                       
                       
                        
                         
                          C
                        
                        
                         
                          1
                        
                       
                       
                       
                       
                        
                         
                          sinh
                        
                        
                         
                         
                          
                           
                            
                             
                              
                               
                                C
                              
                             
                             
                             
                             
                              t
                             
                             
                             
                              v
                            
                           
                          
                         
                         
                        
                       
                      
                     
                    
                   
                  
                 
U (x) =简化(U (x),“步骤”, 50)
U (x) =
                 
                  
                   
                    
                     
                      2
                     
                     
                     
                      
                       
                        C
                      
                      
                       
                        1
                      
                     
                     
                     
                     
                      
                       
                        sinh
                      
                      
                       
                       
                        
                         
                          
                           
                            
                             
                              C
                            
                           
                           
                           
                           
                            x
                          
                         
                        
                       
                       
                      
                     
                    
                   
                  
                 

求出方程中的常数。

p1 = setdiff (symvar (U (x))信谊((C、x)))
p1 =
                 
                  
                   
                    
                     
                      C
                    
                    
                     
                      1
                    
                   
                  
                 
p2 = setdiff (symvar (V (t)),信谊((C、V、t)))
p2 =
                 
                  
                   
                    
                     
                      C
                    
                    
                     
                      1
                    
                   
                  
                 

绳子固定在这些位置上x = 0而且x = L.的条件U (0) = 0已经存在。应用边界条件U (L) = 0和解决C

eqn_bc = U(L) == 0;[solC,参数,气孔导度]=解决(eqn_bc C“ReturnConditions”,真正的)
solC =

- k 2 π 2 l 2

param =
                 
                  
                   
                    k
                  
                 
气孔导度=
                 
                  
                   
                    
                     
                      
                       
                        
                         k
                       
                       
                       
                        
                         Z
                       
                      
                     
                     
                     
                      
                       
                        
                         
                          C
                        
                        
                         
                          1
                        
                       
                       
                       
                        0
                      
                     
                     
                     
                      
                       
                        1
                       
                       
                        k
                      
                     
                    
                   
                  
                 
假设(电导率)

解决方案S (x, t)U (x)而且V (t).求解,将字符串的特征值代入解中,得到解的最终形式。

S (x, t) = U (x) * V (t);S =潜艇(S、C、solC);S = subs(S,[lv],[长度根号(张力/密度)]);

的参数p1而且p2确定振动的振幅。集p1而且p21为了简单起见。

S = sub (S,[p1 p2],[1 1]);S =简化(年代,“步骤”, 50)
S (x, t) =
                 
                  
                   
                    
                     
                      4
                     
                     
                     
                      
                       
                      
                      
                       
                       
                        
                         
                          
                           
                            π
                           
                           
                           
                            k
                           
                           
                           
                            t
                          
                         
                        
                       
                       
                      
                     
                     
                     
                     
                      
                       
                      
                      
                       
                       
                        
                         
                          
                           
                            π
                           
                           
                           
                            k
                           
                           
                           
                            x
                          
                         
                        
                       
                       
                      
                     
                    
                   
                  
                 

的值不同,弦有不同的振动模式k.绘制任意时间值的前四种模式t.使用参数返回的参数解决为了解决参数k

Splot (x) = S (x, 0.3);图(1)网格ymin =双(多项式系数(Splot));i = 1:4 yplot = subs(Splot,param,i);fplot (yplot长度[0])结束ylim ([-ymin ymin])传说(“k = 1”“k = 2”“k = 3”“k = 4”“位置”“最佳”)包含(“位置(x)”) ylabel (“位移(S)”)标题('字符串的模式'

图中包含一个axes对象。具有标题模式的字符串的axis对象包含4个functionline类型的对象。这些对象表示k = 1, k = 2, k = 3, k = 4。

波动方程是线性的。这意味着任何允许模态的线性组合都是波动方程的有效解。因此,在给定的边界条件和初值下,波动方程的完全解是对允许模态的和

F x t k n 一个 k π k t π k x

在哪里 一个 k 表示任意常数。

使用symsum将字符串的前五种模式相加。在一个新图上,显示与前一个波形在同一时刻的结果波形,以便进行比较。

图(2)S5(x) = 1/5*symsum(S,param,1,5);fplot(subs(S5,t,0.3),[0 Length]) ylim([-ymin ymin])网格包含(“位置(x)”) ylabel (“位移(S)”)标题(“前5个模态的总和”

图中包含一个axes对象。标题为sum of前5个模式的axis对象包含一个functionline类型的对象。

图中显示求和模式允许你建立一个定性不同的波形模型。这里,我们指定了初始条件是 年代 x t 0 0 对所有 x

你可以计算这些值 一个 k 在方程中 F x t k n 一个 k π k t π k x 通过指定初速度的条件

u t x t 0 F t x 0

适当的模态求和可以表示任何波形,这与用傅立叶级数表示弦的运动是一样的。

Baidu
map