matlab偏导数之后如何赋值(matlab中如何求偏导数)

matlab中,一个函数有多个自变量,怎么分别求导并代入具体数值,举个例子f=x1+x2+x3,分

你好!

我依照你举得例子,简单编写了一个程序,为了清晰起见,语句写得比较简单,你看看:

syms x1 x2 x3

f = x1^2+x2^2+x3^2;

fx1 = diff(f,x1);

fx2 = diff(f,x2);

fx3 = diff(f,x3);

x11 = input(\’请输入整数x1:\’);

x22 = input(\’请输入整数x2:\’);

x33 = input(\’请输入整数x3:\’);

subs(fx1,x1,x11)

subs(fx2,x2,x22)

subs(fx3,x3,x33)

输出的subs就是赋值之后的每一个偏导的结果,你可以试着运行一下。

diff默认对x求导,如果有好几个x,则默认对x1求导,默认求一介导。

祝好~

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仍然存在。

如何用matlab先赋值再求二阶导数的值

Matlab求某函数的导数,可以用diff()函数,其基本使用格式为

diff(F,n)

F——函数表达式,n——导数的阶数

diff(F,\’v\’,n)

F——函数表达式,v——对某一变量的导数,n——导数的阶数

例如:

1、求y=sin(x.^2)的二阶导数

syms x

diff(sin(x^2),2)

ans =

2*cos(x^2) – 4*x^2*sin(x^2)

2、求z=sin(x^2)*cos(y^2),对x的二阶偏导数

syms x y

diff(sin(x^2)*cos(y^2),\’x\’,2)

ans =

2*cos(x^2)*cos(y^2) – 4*x^2*cos(y^2)*sin(x^2)

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

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

vpa(g,6)

输出六位数字

matlab 从编辑框中输入一个函数,将其赋值给f,求f的一阶偏导数,并把输出结果从文本框输出。

f=str2num(get(handles.edit1,\’string\’)); 你输入的函数中有字符的话,不能这么转换的,

可以用eval([\’f = \’, get(handles.edit1,\’string\’)]);

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 阶偏导。

0

评论0