matlab求导问题这个编程问题困扰小女子很久了,也解决不了,源程序如下a=4,b=8,w=2,e=6,c=12,h=18;xB=a*cos(w*t);yB=e+a*sin(w*t);k=yB/xB;if k>=0q=atan(k);else q=pi-atan(-k);endyE=b*sin(q);xE=yE/k;d=xE-(c^2-(yE-h).^2).^0.5;求函数
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/20 04:08:28
matlab求导问题这个编程问题困扰小女子很久了,也解决不了,源程序如下a=4,b=8,w=2,e=6,c=12,h=18;xB=a*cos(w*t);yB=e+a*sin(w*t);k=yB/xB;if k>=0q=atan(k);else q=pi-atan(-k);endyE=b*sin(q);xE=yE/k;d=xE-(c^2-(yE-h).^2).^0.5;求函数
matlab求导问题
这个编程问题困扰小女子很久了,也解决不了,
源程序如下
a=4,b=8,w=2,e=6,c=12,h=18;
xB=a*cos(w*t);
yB=e+a*sin(w*t);
k=yB/xB;
if k>=0
q=atan(k);
else q=pi-atan(-k);
end
yE=b*sin(q);
xE=yE/k;
d=xE-(c^2-(yE-h).^2).^0.5;
求函数d对t的一阶、二阶导函数图像.(t在0到2π范围内)
matlab求导问题这个编程问题困扰小女子很久了,也解决不了,源程序如下a=4,b=8,w=2,e=6,c=12,h=18;xB=a*cos(w*t);yB=e+a*sin(w*t);k=yB/xB;if k>=0q=atan(k);else q=pi-atan(-k);endyE=b*sin(q);xE=yE/k;d=xE-(c^2-(yE-h).^2).^0.5;求函数
1、由于函数存在分段,不宜用符号求解,采取直接计算的方式,只要取的点足够多,应该就可以达到满意的效果.
2、d的表达式中存在开平方,根据计算的情况看,yE的值大约在6-8之间,但有部分值小于6(例如取t=1.936,计算过程附后),而h=18,c=12,这样根号下的式子可能是负值,从而出现复数,这有没有问题?
t = linspace(0,2*pi,10000);
a=4;b=8;w=2;e=6;c=12;h=18;
xB = a*cos(w*t);
yB = e + a*sin(w*t);
k = yB ./ xB;
q = atan(k);
q(k<0) = pi-atan(-k(k<0));
yE = b*sin(q);
xE = yE./k;
d = xE - ( c^2-(yE-h).^2 ) .^ 0.5;
D1 = diff(d) / (t(2)-t(1));
D2 = diff(D1) / (t(2)-t(1));
subplot 211
plot(t(1:end-1), D1)
set(gca, 'xlim',[0 2*pi])
xlabel('t'); ylabel('一阶导数');
subplot 212
plot(t(1:end-2), D2)
xlabel('t'); ylabel('二阶导数');
画出的导函数图像:
计算结果出现复数的情况计算示例,请核实:
>> t=1.936;
>> xB = a*cos(w*t)
xB =
-2.9796
>> yB = e + a*sin(w*t)
yB =
3.3313
>> k = yB ./ xB
k =
-1.1180
>> q=pi-atan(-k(k<0))
q =
2.3005
>> yE = b*sin(q)
yE =
5.9628
>> xE = yE./k
xE =
-5.3333
>> d = xE - ( c^2-(yE-h).^2 ) .^ 0.5
d =
-5.3333 - 0.9450i