早教吧 育儿知识 作业答案 考试题库 百科 知识分享

matlab 关于求偏导数具体值的问题以下是代码:num = 100;for i=1:numa(i) = sym (['a',num2str(i)]);%数组变量endy=a(1) ;for i=2:numy=y*a(i) ; %y=a1*a2*a3*...*a_numendf=diff(y,a(1));% 求y对a1的偏导%f=a2*a3*...*a_numfor i = 2:100a(

题目详情
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
该如何进行变量的赋值?
如何解决呢?
▼优质解答
答案和解析

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