一题带你学 Matlab 符号函数

求导数

首先来赋值先,用 syms 可以声明符号变量,然后用符号变量,可构建符号函数:

syms u1x u2x u3x u4x
syms x0 x1 x2 x3 x4 x5
syms u0 u1 u2 u3 u4
syms x
syms h
u1x = (x-x0)*(u1-u0)/h + u0;
u2x = (x-x1)*(u2-u1)/h + u1;
u3x = (x-x2)*(u3-u2)/h + u2;
u4x = (x-x3)*(u4-u3)/h + u3;

然后,要求 u1x u2x u3x u4x 分别对 x 的导数,记为 du1x du2x du3x du4x

du1x = diff(u1x,x);
du2x = diff(u2x,x);
du3x = diff(u3x,x);
du4x = diff(u4x,x);

求积分

然后,要求求出符号函数 1/2*du1x^2+u1x 在 x0, x1 之间的积分,记为 I1;同理,求出 1/2*du2x^2+u2x 在 x1,x2 上的积分,记为 I2 , 如是循环,求出 I1、I2、I3、I4,如下:

I1 = int(1/2*du1x^2+u1x,x,x0,x1);
I2 = int(1/2*du2x^2+u2x,x,x1,x2);
I3 = int(1/2*du3x^2+u3x,x,x2,x3);
I4 = int(1/2*du4x^2+u4x,x,x3,x4);

带入数据

将 x0=0, x1=0.25, x2=.05, x3=0.75, x 4=1 ,u 0=0, u1=1, h=0.25 带入 I = I1+I2+I3+I4 中,求出 I 的具体表达式

I = I1+I2+I3+I4
I_calu = subs(I,[x0,x1,x2,x3,x4,u0,u4,h],[0,0.25,0.5,0.75,1,0,1,0.25]);

求偏导

对 I 分别求 u2 u3 u4 的偏导数:

Ieq1 = diff(I_calu,u1);
Ieq2 = diff(I_calu,u2);
Ieq3 = diff(I_calu,u3);

求解 Ieq1 = 0、Ieq2 = 0、Ieq3 = 0 的方程组

[u1 u2 u3] = solve([Ieq1 Ieq2 Ieq3])

显示某个函数

例如要显示 I ,则可以用:

>> pretty(I)
 
u0 x1 - u0 x0 - u1 x1 + u1 x2 - u2 x2 + u2 x3 - u3 x3 + u3 x4 - 
 
                      2            2                                2 
   (u0 - u1) (x0 - x1)    (u0 - u1)  (x0 - x1)   (u1 - u2) (x1 - x2) 
   -------------------- - -------------------- - -------------------- - 
           2 h                       2                   2 h 
                                  2 h 
 
            2                                2            2 
   (u1 - u2)  (x1 - x2)   (u2 - u3) (x2 - x3)    (u2 - u3)  (x2 - x3) 
   -------------------- - -------------------- - -------------------- - 
              2                   2 h                       2 
           2 h                                           2 h 
 
                      2            2 
   (u3 - u4) (x3 - x4)    (u3 - u4)  (x3 - x4) 
   -------------------- - -------------------- 
           2 h                       2 
                                  2 h

显示 I_calu,也同样:

>> pretty(I_calu)
 
  u1   u2   u3              2              2             2       2   1 
  -- + -- + -- + 2 (u1 - u2)  + 2 (u2 - u3)  + 2 (u3 - 1)  + 2 u1  + - 
  4    4    4                                                        8

你可能感兴趣的:(Matlab,Matlab,符号变量,符号函数,求导,求方程组)