作业帮 > 综合 > 作业

matlab求导问题这个编程问题困扰小女子很久了,也解决不了,源程序如下a=4,b=8,w=2,e=6,c=12,h=1

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/22 02:54:55
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π范围内)
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
再问: 其实原题中a=0.108,b=0.62,w=8.5π,e=0.35,c=0.3,h=0.635,我当时情急,就随便填了几个常数,只是想表示这种情况。请问大哥,你能再帮我用matlab编程算一下吗(附上源程序)?我这个题目今天急用,谢谢您了~~#^.^#(我会把分都给你的,谢谢了)
再答: 真晕,就那么几个数你都想偷懒。。。其实上面我已经把源程序给你了啊,你只要换一下数据就可以了,也就是把第2行改成:a=0.108;b=0.62;w=8.5*pi;e=0.35;c=0.3;h=0.635;另外,可以在最后面再加一行(不然第二个图的横坐标范围不太好看)set(gca, 'xlim',[0 2*pi]) 得到的结果如下图:这个题并不难,满意的话采纳就行,不用额外加分了。
再问: 回答得真及时,谢谢您了~~#^.^#
再答: 碰巧及时看到了追问,而改动又很简单,所以比较快。 很高兴能帮到你,祝学习进步!