matlab 关于求偏导数具体值的问题
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/20 16:13:43
matlab 关于求偏导数具体值的问题
以下是代码:
num = 100;
for i=1:num
a(i) = sym (['a',num2str(i)]);%数组变量
end
y=a(1) ;
for i=2:num
y=y*a(i) ; %y=a1*a2*a3*...*a_num
end
f=diff(y,a(1));% 求y对a1的偏导
%f=a2*a3*...*a_num
for i = 2:100
a(i)=1; %a2=a3=a4=...=a_num=1
end
ff=subs(f);%将值带入f求y对a1偏导的具体值,结果应为1
disp(ff);
%但输出结果仍为:a2*a3*...*a_num
该如何进行变量的赋值?
如何解决呢?
以下是代码:
num = 100;
for i=1:num
a(i) = sym (['a',num2str(i)]);%数组变量
end
y=a(1) ;
for i=2:num
y=y*a(i) ; %y=a1*a2*a3*...*a_num
end
f=diff(y,a(1));% 求y对a1的偏导
%f=a2*a3*...*a_num
for i = 2:100
a(i)=1; %a2=a3=a4=...=a_num=1
end
ff=subs(f);%将值带入f求y对a1偏导的具体值,结果应为1
disp(ff);
%但输出结果仍为:a2*a3*...*a_num
该如何进行变量的赋值?
如何解决呢?
把
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仍然存在.
再问: 那对符号变量赋值完成后,如何查看每一变量相应的数值,我用disp(a),显示的仍是变量啊a1,a2这种,如何查看具体值?谢谢啦
再答: 你现在的程序只是把a2-a100的值代人了f这个变量,如果希望a的值也改变,那么应该用:a=subs(a)
再问: 谢谢!帮了一个大忙了,太感谢了^_^
写不下,只能截图了谢谢啦~本人新手,还望赐教。
再答: 对于复杂的表达式,subs的时间可能比较长,好像没什么好办法。不过就你的那几行代码看,似乎没必要用循环,直接用一句就可以了:Dxy=subs(Dxy);
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仍然存在.
再问: 那对符号变量赋值完成后,如何查看每一变量相应的数值,我用disp(a),显示的仍是变量啊a1,a2这种,如何查看具体值?谢谢啦
再答: 你现在的程序只是把a2-a100的值代人了f这个变量,如果希望a的值也改变,那么应该用:a=subs(a)
再问: 谢谢!帮了一个大忙了,太感谢了^_^
写不下,只能截图了谢谢啦~本人新手,还望赐教。
再答: 对于复杂的表达式,subs的时间可能比较长,好像没什么好办法。不过就你的那几行代码看,似乎没必要用循环,直接用一句就可以了:Dxy=subs(Dxy);