今天在用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