matlab求导问题

这个编程问题困扰小女子很久了,也解决不了,求各位帮忙解决一下,不胜感激……源程序如下a=4,b=8,w=2,e=6,c=12,h=18;xB=a*cos(w*t);yB=... 这个编程问题困扰小女子很久了,也解决不了,求各位帮忙解决一下,不胜感激……
源程序如下
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π范围内)
求求各位大神帮忙解答一下,顺便贴一下程序。
展开
 我来答
tianxiawulang
2013-06-25 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2646万
展开全部

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])

 

得到的结果如下图:

这个题并不难,满意的话采纳就行,不用额外加分了。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式