作者dSnAil (低史耐爾)
看板Python
標題Re: [問題] 解二元二次方程式
時間Fri Nov 4 18:28:34 2011
※ 引述《tacosung (taco)》之銘言:
: 大家好~
: 我目前也是python的初學者~
: 想試試看用python來解二元二次方程式
: x^2 + axy + b*y^2 = c
: 所以 y**2 = (c-x**2)/((a*x)/y + b)
: 除了y值不知道,x值為0,5,10,15...230
: 其他值都已知
: 想要寫一個程式可以一次跑出所有x值相對應的y
: 可是我卡住了...
: 我只會寫到以下:
: from __future__ import division
: a = -1.335548173
: b = 1.107099143
: c = 32400
: for x in range(231):
: if x % 20 == 0:
: print y # 我不知道該怎麼讓python自動算出相對應的y值
: 聽說可以用牛頓法? 因為這個y值有正負值
: 可是我不太知道可以怎麼使用..
: 可以請各位提供意見嗎?
: 先謝謝大家
和 python 沒什麼關係 XD
如果只有 y 是要求的未知數的話,
把方程式整理一下就得到:
(b)y^2 + (ax)y + (x^2 - c) = 0 (括號內為已知數,視為常數)
有沒有很熟?這是一元二次方程式,直接套公式解就可以了。
套下去的結果:
-ax +- √(a^2 * x^2 - 4b * (x^2 - c))
y = ──────────────────
2b
= (-ax + sqrt(a**2 * x**2 - 4 * b * (x**2 - c) ) ) / ( 2 * b )
還沒驗證過,不過大概的概念是這樣,
可以試看看 0.0/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.152.175
推 tacosung:感謝你!! 我一時間沒想到求單一解的公式!! 11/04 20:04
→ tacosung:不過,除了這個以外,這樣的公式python裡面似乎只output 11/04 20:05
→ tacosung:出正值,另一個根出不來耶~ 11/04 20:05
→ dSnAil:把 -ax 後面的 + 改成 - 就是另外一個解了 11/04 20:08
推 tacosung:阿!!! 對對!!! 沒注意到!!! 11/04 20:14
→ tacosung:感謝你!! 我的天呀~~ 完全就是我數學全忘光了.... 11/04 20:15
→ tacosung:真是太丟臉了~ 在這裡問這種鬼問題 囧 11/04 20:15