matlab求偏导后赋值计算(matlab中求偏导)

MATLAB中偏导数的计算

可以调用 diff 函数求导。

举例说明:

先定义符号 x、y 以及符号二元函数表达式 z,然后调用 diff 函数求偏导,代码如下:

clc;clear;

syms x y

z=x^2+y^2+exp(x*y);

z_x=diff(z,x,1)

z_y=diff(z,y,1)

z_x2=diff(z,x,2)

z_y2=diff(z,y,2)

z_xy=diff(z,x,y)

结果如下:

z_x =

2*x + y*exp(x*y)

z_y =

2*y + x*exp(x*y)

z_x2 =

y^2*exp(x*y) + 2

z_y2 =

x^2*exp(x*y) + 2

z_xy =

exp(x*y) + x*y*exp(x*y)

图中调用了5次diff函数,分别计算了 z 对 x 的一阶偏导,z 对 y 的一阶偏导,z 对 x 的二阶偏导,z 对 y 的二阶偏导,以及 z 对 x,y 都求一次偏导。

例子中所用的调用格式为: diff(f,var,n)

f 为符号表达式,也可以是符号函数(这个数据类型低版本的matlab没有)。n 为求导次数,缺省为1。var 为求导的符号变量,可以缺省(matlab会根据表达式自己选择一个),但不建议缺省,除非表达式只含有一个符号变量。

此外,matlab还允许 diff(f,n,var)与 diff(S,v1,v2,…,vn)的调用形式。

diff(f,v1,v2,…,vn) 会把表达式 f 对变量 v1,v2 等 n 个变量都求一次偏导,得到 f 的 n 阶偏导。

matlab求导后赋值计算

MATLAB 函数先求导再赋值

简单的说就是建立如下m文件

function j=myfun(x)

j=diff(x^2-1)

进行如下调用

s=myfun(2)

得到

s=[ ]

也就是说在函数myfun调用时,是先赋值后求导的。

MATLAB 函数先求导再赋值

可以用syms命令先令未知量为符号变量。然后对符号式子diff求导

再用subs命令将符号未知量代为数值,进式子里。

具体用法参见 help syms

help subs

为什么非要把求导的东西放在函数里调用呢。试试能不能把求导放在主函数里。

求助MATLAB求偏导之后赋值的问题

我运行时不会,或者你试试vpa函数

vpa(g,6)

输出六位数字

matlab 关于求偏导数具体值的问题

for i = 2:100

  a(i)=1;  %a2=a3=a4=…=a_num=1 

end

改成

for i = 2:100

  eval([\’a\’,num2str(i) \’=1;\’])

end

你原来的写法是把数组a的第2到第100个元素(即a(2)-a(100))赋值为1,而符号变量a2-a100仍然存在。

0

评论0