當前位置:編程學習大全網 - 編程軟體 - matlab求導問題

matlab求導問題

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

  • 上一篇:材料設計和結構拓撲優化設計的差別是什麽
  • 下一篇:c++語言與C語言相比哪個難?
  • copyright 2024編程學習大全網