Matlab 符号表达式 求微分 TOT
我用2006b,没有问题。
syms a x
f=sin(a*x)
dfx=diff(f,x)
f =sin(a*x)
dfx =cos(a*x)*a
>> ver
-------------------------------------------------------------------------------------
MATLAB Version 7.3.0.267 (R2006b)
MATLAB License Number: 32684
Operating System: Microsoft Windows XP Version 5.1 (Build 2600: Service Pack 2)
Java VM Version: Java 1.5.0 with Sun Microsystems Inc. Java HotSpot(TM) Client VM mixed mode
要不这样试试:
syms a x
f=sin(a*x)
dfx=diff(f,'x')
f =
sin(a*x)
dfx =
cos(a*x)*a
f=sym('x^2+3*x*y+y^3')
diff(f,'x')
由于diff函数有多个(可以用which diff -all命令查看),调用的时候就会涉及到调用哪一个的问题。
MATLAB会调用哪个函数,是由该函数的参数类型决定的,例如对于符号变量(sym对象),很自然就会调用符号数学工具箱中求微分的那个函数,而对于普通的double数值类型,则会调用求差分的那个函数。函数重载的概念听说过吧?
现在楼主给的参数是char字符类型,在早期的版本里(例如6.5、2007b),符号数学工具箱专门提供了一个对char类型的重载函数 toolbox\symbolic\@char\diff.m,其有效代码只有一句:
y = diff(sym(f),varargin{:});
但不知道什么原因,这个重载的形式在2013a里面消失了,所以楼主的语句就会把char转换为double,然后调用求差分的那个diff,就得到了你现在看到的结果。
比较稳妥的方式是,把符号类型的东西明确声明为sym类型,那样就不会错了:
>> y=sym('4*x^4+3*x^3+2*x^2+x+1');
>> diff(y)
ans =
16*x^3+9*x^2+4*x+1
如何用MATLAB软件求微分方程?
在使用MATLAB软件求解微分方程时,通常可以采用两种主要方法:符号法和数值法。符号法适用于解析求解,其核心在于使用MATLAB的dsolve命令。例如,对于方程Df = f + sin(t),可以采用以下MATLAB代码进行求解:dsolve('Df = f + sin(t)')执行上述代码后,MATLAB将返回一个解析解,形式为C4*exp(t) - ...
关于matlab中符号表达式求微分
f=sin(a*x)dfx=diff(f,x)f =sin(a*x)dfx =cos(a*x)*a >> ver --- MATLAB Version 7.3.0.267 (R2006b)MATLAB License Number: 32684 Operating System: Microsoft Windows XP Version 5.1 (Build 2600: Service Pack 2)Java VM Version: Java 1.5.0 with Sun Microsystems Inc....
MATLAB怎么求解微分方程
第一种方法:利用dsolve函数求微分方程的符号解(通解):对于一些不是很难,要求出通解的微分方程,用dsolve函数求解。1. 打开Matlab软件--点击新建脚本菜单,新建一个脚本文件用于编写微分方程求解程序。2. 输入微分方程求解程序--点击保存--点击运行。3. 在matlab的命令窗口即可看到求解结果,是一个关于...
用MATLAB求微分并求值
MATLAB 提供的函数diff( )可用来求解符号对象的微分,其调用的格式为 (1) diff(S,'v'):对符号对象S 中指定的符号变量v 求其1 阶导数。(2) diff(S):对符号对象S 中的默认的独立变量求其1 阶导数。(3) diff(S,n):对符号对象S 中的默认的独立变量求其n 阶导数。(4) diff(S,'v',...
用MATLAB求这些偏微分 急急急
首先,定义符号变量x1, x2, λ和函数L:matlab syms x1 x2 lambda L=pi\/3*(864-18*x2^2+x2^3+12*x1*x2-x1*x2^2)-lambda*(144*pi-12*pi*6*x2+pi*sqrt((12*x2-x2^2+x1^2)*(12*x2-x2^2))-450);接下来,分别求函数L对x1, x2, λ的一阶偏导数:matlab dLdx1=...
用matlab 求解带符号的微分方程组
该方程为非线性微分方程,不存在解析解,只能通过数值方法求解;function x_dot=volt(t,x)syms k1 k2 k3 x_dot=[1*x(1)*x(2)+2*x(1)*x(3);1*x(1)*x(2)+3*x(2)*x(4);1*x(1)*x(2)-2*x(3)*x(1)+3*x(2)*x(4);2*x(3)*x(1)-3*x(2)*x(4)];之后在命令...
Matlab 符号表达式 求微分 TOT
所以楼主的语句就会把char转换为double,然后调用求差分的那个diff,就得到了你现在看到的结果。比较稳妥的方式是,把符号类型的东西明确声明为sym类型,那样就不会错了:>> y=sym('4*x^4+3*x^3+2*x^2+x+1');>> diff(y) ans = 16*x^3+9*x^2+4*x+1 ...
用matlab求微分方程组的通解:方程组如下图
考虑以下微分方程组:\\[ \\left\\{ \\begin{array}{l} \\frac{dx}{dt} = 4x + 3y + 2z \\\\ \\frac{dy}{dt} = 6x - 3y + 2z \\\\ \\frac{dz}{dt} = 6x + 5y + 4z \\end{array} \\right. \\]为了求解这个方程组,我们可以使用MATLAB的dsolve函数。首先,我们定义符号变量:\\[ x(t),...
用matlab或者mathematica求积分解微分方程
int(s,v)格式,表示以v为自变量,对被积函数或符号表达式s求一阶不定积分.int(s ,v, a,b),表示求函数f的定积分或广义积分;a、b分别表示定积分的下限和上限。例子:求定积分和广义积分 syms x I2=int(1\/(3+2*x+x^2),x,0,1)I3=int(1\/(3+2*x+x^2),x,-inf,inf)(2...
用matlab求解微分方程
执行dsolve命令后,MATLAB将返回一个表达式,即Int(cos(sin(_z1)),_z1 = 0 .. t)+1。这里的Int表示积分符号,cos(sin(_z1))是积分的被积函数,从0到t表示积分范围。常数1是解的自由度,代表解的一个特定值。通过上述步骤,我们使用MATLAB成功求解了给定的微分方程,得到了其解的表达式。结果...