作者leoking0106 (white)
看板MATLAB
標題Re: [問題]Matlab找分段函數跟圓的交點與syms指令
時間Sat May 11 15:59:10 2013
※ 引述《leoking0106 (white)》之銘言:
: ※ 引述《leoking0106 (white)》之銘言:
: : 1.
: : 我的分段函數是
: : y=0 ,-7<x<0
: : y=2/3*x ,0<x<9
: : y=6 ,9<x<12
: : 圓方程式是
: : (x-2.5).^2+(y-9.15).^2=9.5^2
: : 要如何用matlab找出兩函數的交點(0,0) (11.46,6) ??
: : 2.
: : 例如這樣
: : syms x;
: : y=-(9.5^2-(x-2.5).^2).^0.5+9.15;
: : 我想要問這樣寫的話有沒有甚麼指令可以讓我直接得到y函數的值
: : 例如y(0)=0; y(11.46)=6 之類的
: : 還有如果我要畫x vs.y的曲線圖(像plot那樣的圖)
: : 要用甚麼指令呢??
: : (或者有其他比較好的寫法但也能達到我想要的)
: : 拜託網路上的matlab高手教我怎麼寫
: : 最好能提供code讓我比較好了解
: : 感激不盡~
: 感謝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定的)
感謝~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 42.67.131.230
1F:→ jatj:Undefined function 'mtimes' for input arguments of type ' 05/11 16:11
2F:→ jatj:'function_handle'. 代表對這程式而言乘法沒有定義 05/11 16:12
3F:→ jatj:原因出自用Anonymous Functions yy沒辦法繼續看y1裡面是什麼 05/11 16:16
4F:→ jatj:另外也要注意要把*改成.* 你想要用元素乘法對吧 05/11 16:17
5F:→ jatj:所以解決辦法是, 把yy定義中y1, y2, y3改成原來定義的函式 05/11 16:17
6F:→ jatj:yy=@(x) (0.*(heaviside(x+7)-heaviside(x))+2/3*x.*(heavisi 05/11 16:18
7F:→ jatj:heaviside(x)-heaviside(x-9))+6.*(heaviside(x-9)-heaviside 05/11 16:18
8F:→ jatj:(x-12))); 用syms寫法也可以 但較複雜 請help solve, subs 05/11 16:19
9F:→ jatj:solve找焦點 建議是直接找圓跟三段線分別的焦點 05/11 16:21
10F:→ jatj:之後檢查解答是否落在合理的區域 會比用heaviside簡單許多 05/11 16:21