关闭

Python求解非线性方程

651人阅读 评论(0) 收藏 举报

原文地址: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函数即可求解,代码如下:

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. from scipy.optimize import fsolve  
  2. from math import cos  
  3.   
  4. def f(x):  
  5.     d = 140  
  6.     l = 156  
  7.     a = float(x[0])  
  8.     r = float(x[1])  
  9.     return [  
  10.         cos(a) - 1 + (d*d)/(2*r*r),  
  11.         l - r * a  
  12.     ]  
  13. result = fsolve(f, [11])  
  14. 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的,所以两者都要安装。文章写的比较简单,希望能给读者以帮助。

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

非线性方程(组)的求解

非线性方程的求解方法包括,二分法,不动点迭代法,牛顿法,弦截法等; 非线性方程组的求解方法包括,不动点迭代法,牛顿法,阻尼牛顿法,拟牛顿法等。
  • wu_nan_nan
  • wu_nan_nan
  • 2016-11-25 15:44
  • 1304

Matlab 数值计算----二分法求非线性方程组

bisect.m函数(二分法的实现算法) function[x_star,index,it]=bisect(fun,a,b) %求解非线性计算方程的二分法,其中,fun(x)为需要求根的函数; %a...
  • linhaiyun_ytdx
  • linhaiyun_ytdx
  • 2017-04-09 12:04
  • 622

使用scipy来解非线性方程

我们有两个正态分布:N(2,4)和N(3,5),现在想求出靠近两者均值的等概率点,如图所示: 其中Difference=N(2,4)-N(3,5),即为我们下列代码中的函数f#! /usr/bin/...
  • sinat_27339001
  • sinat_27339001
  • 2016-06-13 01:41
  • 1251

R语言非线性方程组求解dfsane,nleqslv

首先,dfsane属于BB包,使用时应首先载入library("BB") nleqslv 属于nleqslve包,同样使用时应载入 library("nleqslve") Description ...
  • skyonefly
  • skyonefly
  • 2016-03-15 21:07
  • 5057

利用牛顿迭代法求解非线性方程组

最近一个哥们,是用牛顿迭代法求解一个四变量方程组的最优解问题,从网上找了代码去改进,但是总会有点不如意的地方,迭代的次数过多,但是却没有提高精度,真是令人揪心!        经分析,发现是这个方程...
  • liuguiyangnwpu
  • liuguiyangnwpu
  • 2014-05-08 22:09
  • 31809

使用matlab进行非线性方程组求解

今天,恰好遇到使用matlab进行了非线性方程组的求解。 情况是,一些无法手动表示,推导的方程组,比如像超越方程这种,可以用matlab进行直接求值,这在一些需要仿真数据的场景比较有用。 环境:mat...
  • u010087886
  • u010087886
  • 2015-09-07 22:04
  • 731

最优化方法:非线性方程的求极值方法

http://blog.csdn.net/pipisorry/article/details/23553263非线性方程求根方法中的数学定义零点1  如果 x * 使 f( x * )=0,则称 x ...
  • pipisorry
  • pipisorry
  • 2014-04-12 20:43
  • 2003

数值分析第七章非线性方程MATLAB程序

二分法,最简单的,貌似没要求.... function [x, count] = bisection(fx,a,b,error,count) if(nargin == 4)%调用时不需要输入cou...
  • u012453913
  • u012453913
  • 2013-11-16 13:47
  • 971

数值优化(Numerical Optimization)学习系列-非线性方程(Nonlinear Equation)

概述 实际中很多应用不是寻找最优解,而是寻找一个根满足给定的约束条件,如果有n个非线性等式约束,就是本节介绍的非线性方程问题,本节主要介绍 1. 非线性方程的问题形式 2. 非...
  • fangqingan_java
  • fangqingan_java
  • 2015-12-27 18:52
  • 997

matlab读取大量文件及MATLAB处理变参数多元非线性方程组

关于matlab读取大量文件及MATLAB处理变参数多元非线性方程组 循环读取大量文件 前段时间用MATLAB处理txt文件时遇到了一个问题,由于txt文件太多因此需要做成循环来依次处理500(实际上...
  • geter_CS
  • geter_CS
  • 2017-04-07 11:53
  • 291
    个人资料
    • 访问:703次
    • 积分:11
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档