Re: [問題]Matlab找分段函數跟圓的交點與syms指令
※ 引述《leoking0106 (white)》之銘言:
: ※ 引述《leoking0106 (white)》之銘言:
: : 感謝j大解惑
: : 但我想請問Q2中為什麼你的@(X)我改成syms x就不能run了呢?
: : 還有Q1能不能教我怎麼寫分段函數跟圓方程式
: : 我才剛接觸MATLAB沒多久很多東西都還不是很瞭
: OK Q2已經弄懂了
: 但關於Q1分段函數的部分 我是這樣寫的
: y1=@(x) 0;
: y2=@(x) 2/3*x;
: y3=@(x) 6;
: yy=@(x) (y1*(heaviside(x+7)-heaviside(x))+y2*(heaviside(x)-heaviside(x-9))+...
: y3*(heaviside(x-9)-heaviside(x-12)))
: x=[0:1.5:11.46 11.46]
: yy(x)
: 我想要抓出yy中對應x的函數值
: 他run出來的error是
: ??? Undefined function or method 'mtimes' for input arguments of type
: 'function_handle'.
: Error in ==>
: @(x)(y1*(heaviside(x+7)-heaviside(x))+y2*(heaviside(x)-heaviside(x-9))+y3*(heaviside(x-9)-heaviside(x-12)))
: Error in ==> test7 at 11
: yy(x)
: 可以幫我看看哪邊寫錯嗎?
: 還有如果我的函數都是用@(x)定的 還能用solve找交點嗎(因為我看
: help那邊solve的函數都是用syms定的)
: 感謝~~
找交點的部分我寫的code是這樣
beta= 35;
H=6;
r=9.5;x0=2.5;y0=9.15;
m=tan(beta*pi/180);
xh=H/m;
syms xx;
y1=0;
y2=m.*xx;
y3=H;
yup=(y1.*(heaviside(xx-(x0-r))-heaviside(xx))+...
y2.*(heaviside(xx)-heaviside(xx-xh))+...
y3.*(heaviside(xx-xh)-heaviside(xx-(x0+r))));
ydown=-(r.^2-(xx-x0).^2).^0.5+y0;
cc=solve(ydown-yup);
plot(linspace(-1,12),subs(ydown,linspace(-1,12)),...
linspace(-1,12),subs(yup,linspace(-1,12)))
我用plot確定我兩個函數是有交點的 但結果卻說沒有交點
能不能幫我看看是哪部分寫錯了呢?
還有我yup函數的最後一點yup(12)應該是6
但為什麼我用subs(yup,12)出來的值卻是3??
最後我想問用subs(y,x)可以找函數值
那有沒有甚麼指令是可以找反函數的呢?
拜託各位高手幫我看一下 debug好久好痛苦QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 42.67.131.230
→
05/12 02:15, , 1F
05/12 02:15, 1F
→
05/12 02:19, , 2F
05/12 02:19, 2F
→
05/12 02:20, , 3F
05/12 02:20, 3F
討論串 (同標題文章)