Tim 發問時間: 電腦與網際網路程式設計 · 6 年前

matlab solve代數問題

請問各位高手~~

我要用solve函數解一元二次方程式,但是我方程式裡面的係數想用代數表示,不想直接打數字進去,有辦法嗎?

好像會怪怪的,解不出來...

例如:

a = 12;

b = 23;

c = 34;

我想解

a^2 = (b(X-c) + a)^2 + (ab(X+a)-c)^2;

那我在打solve的時候

一般會打成

solve( '12^2 = (23*(X-34)+12)^2 + (12*23*(X+12)-34)^2', 'X');

這樣係數要一個一個打進去

如果我想要用代數去表示

如 solve( 'a^2 = (b(X-c) + a)^2 + (ab(X+a)-c)^2', 'X');

有辦法解X嗎?

已更新項目:

1. 那請問我如果要回傳解

S = solve(a*x^2 + b*x + c);

S裡面的值要怎麼取出來阿?

它是cell matrix嗎?

2. 好像不能solve(a*x^2 + b*x + c == 0) 這樣寫吧?

3. 裡面的方程式可以不用寫成 字串喔? solve(a*x^2 + b*x + c)

2 個解答

評分
  • 6 年前
    最佳解答

    # 方法一:利用 sprintf()

    solve(sprintf('%g*x^2 + %g*x + %g = 0', a, b, c), 'x')

    即是解 "ax^2 + bx + c = 0" ,不過這個方法並不好用。

    # 方法二:

    syms x; % 先定義一個符號變數 x

    solve(a*x^2 + b*x + c == 0)

    這同樣也是解 "ax^2 + bx + c = 0" 。若等號右邊為 0 ,則可以省略

    solve(a*x^2 + b*x + c)

    而關於更多 solve 的用法,可以用 "help solve" 指令來取得更多資訊。

    2014-05-01 13:29:33 補充:

    補充發問:

    1. 若 S = solve(a*x^2 + b*x + c),則 S 屬於 "sym" 這個資料型態,若想要將之轉換成一般常用的數值陣列,可以用 "double(S)" 轉換之。

    2. 3. 我所使用的是 MATLAB R2012a ,裡面提供的 solve 函數確實可以這樣用。如果您的 MATLAB 版本不同,可以用 help 指令取得更詳細的資訊,確認這個函數的用法。

  • 5 年前

    (X-30)×(X+52)=83

還有問題?馬上發問,尋求解答。