[心得] solve函數使用注意

看板MATLAB作者時間13年前 (2012/10/30 20:49), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
今天在用solve函數解方程式,遇到一些問題,找到下面資料解決,po給大家參考。 原文:http://www.chinavib.com/thread-53383-1-1.html 1.函數為符號函數 (當a,b,c為符號時,運算同樣成立) 例題: >> solve('a*x^2+b*x+c=0') ans = 1/2/a*(-b+(b^2-4*a*c)^(1/2)) 1/2/a*(-b-(b^2-4*a*c)^(1/2)) 2.一般默認x為指定未知量;也可特指,如:特指a為未知量 >>solve('a*x^2+b*x+c=0','a') ans = -(b*x+c)/x^2 3.如果a,b,c有賦值,加入subs或eval語句 例題1 >> a=1;b=3;c=2;subs(solve('a*x^2+b*x+c=0')) ans = -1 -2 例題2 >> a=[1;1];b=[3;2];c=[2;1]; >> for m=1:2 >> eval(solve('a(m)*x^2+b(m)*x+c(m)=0')) >> end ans = -1 -2 ans = -1 -1 4.運算中出現複數 一方程如下,其中除xc外都已經賦值,xc為未知量 >>xc=subs(solve('As*fy=fc*b*xc*(xc*ey/(e0*(h0-xc))-(xc*ey/(h0-xc))^2/(3*e0^2)) +Es*As*(xc-as)/(h0-xc)*ey')); 得到的結果: xc = 1.0e+002 * 1.7517 - 0.0000i -1.0593 - 0.0000i 0.6221 + 0.0000i 如果複數值非常小的話,可以忽略,根據實際需要取所需實數。 例如:取第三個值的實數部分 >>real(xc(3)) ans=62.21 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.41.178.71
文章代碼(AID): #1GZyp4Mk (MATLAB)