Re: [問題]Matlab找分段函數跟圓的交點與syms指令

看板MATLAB作者 (white)時間12年前 (2013/05/11 23:26), 編輯推噓0(003)
留言3則, 1人參與, 最新討論串4/5 (看更多)
※ 引述《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
cc不就你的交點?eval(cc)=11.4626, -0.0549
05/12 02:15, 1F

05/12 02:19, , 2F
subs(heaviside(xx-(x0+r)),'xx',12) = 1/2 應該不是你要的
05/12 02:19, 2F

05/12 02:20, , 3F
原因出在heavyside(0)=0.5 不是你預期的1
05/12 02:20, 3F
文章代碼(AID): #1HZcCY4u (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1HZcCY4u (MATLAB)