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