Python求解非线性方程
2014-05-09 10:42
344 查看
原文地址:http://blog.csdn.net/ville_zeng/article/details/25370053,转载请注明出处!
昨晚一朋友问了我道数学题:已知弧长l=156,弦长d=140,求半径R和夹角a。
我试了下,方程比较好列,但是求解的话就比较费劲了,心想要是用Matlab的话也就瞬间的事儿,可电脑没安装Matlab,然后想到Python的一个数学库scipy,研究下,是可以解决的。
方程如下:
· cos(a) = 1 - d^2 / (2*R^2)
· L = a * R
使用scipy下的fsolve函数即可求解,代码如下:
[ 1.5940638 97.86308398],即夹角为1.59,半径为97.86
关于scipy函数库,官网地址:http://www.scipy.org/,文档地址:http://sebug.net/paper/books/scipydoc/scipy_intro.html。该库貌似没法用pip
install安装,安装的话Ubuntu平台下可以如下操作:
sudo apt-get install python-numpy python-scipy
因为scipy是依赖numpy的,所以两者都要安装。文章写的比较简单,希望能给读者以帮助。
昨晚一朋友问了我道数学题:已知弧长l=156,弦长d=140,求半径R和夹角a。
我试了下,方程比较好列,但是求解的话就比较费劲了,心想要是用Matlab的话也就瞬间的事儿,可电脑没安装Matlab,然后想到Python的一个数学库scipy,研究下,是可以解决的。
方程如下:
· cos(a) = 1 - d^2 / (2*R^2)
· L = a * R
使用scipy下的fsolve函数即可求解,代码如下:
from scipy.optimize import fsolve from math import cos def f(x): d = 140 l = 156 a = float(x[0]) r = float(x[1]) return [ cos(a) - 1 + (d*d)/(2*r*r), l - r * a ] result = fsolve(f, [1, 1]) print result计算结果:
[ 1.5940638 97.86308398],即夹角为1.59,半径为97.86
关于scipy函数库,官网地址:http://www.scipy.org/,文档地址:http://sebug.net/paper/books/scipydoc/scipy_intro.html。该库貌似没法用pip
install安装,安装的话Ubuntu平台下可以如下操作:
sudo apt-get install python-numpy python-scipy
因为scipy是依赖numpy的,所以两者都要安装。文章写的比较简单,希望能给读者以帮助。
相关文章推荐
- python用fsolve、leastsq对非线性方程组进行求解
- python/scipy求解非线性方程(fsolve/root)
- Python求解非线性方程
- [置顶] 蚁群算法求解旅行商问题 python
- Python实现求解一元二次方程的方法示例
- [教程]Python 求解任意闭区间的所有素数
- Python Tricks(二)—— 牛顿法求解平方根(最大整数)
- 【Python学习系列二十六】networkx库图最短路径求解
- 关于递归的总结——汉诺塔、素因数的求解(Python实现)
- python使用分治法实现求解最大值的方法
- python里求解物理学上的双弹簧质能系统
- 割线法求解非线性方程
- 使用Python求解数独
- 斐波那契数列求解python3
- Python动态规划求解最长递增子序列(LIS)
- 使用Python求解最大公约数
- matlab实现牛顿迭代法求解非线性方程组
- 牛顿下山法求解非线性方程(组)(C实现)
- 实践多种搜索算法求解八数码问题python实现
- [教程]Python 求解任意闭区间的所有素数