非线性方程求解的常用方法
公式法
对于一元二次方程的一般形式:\(ax^2 + bx + c = 0\)
可以使用韦达公式来求方程的两个实数解\(x = \frac{-b+\sqrt{b^2-4ac}}{2a}\),两根之和\(x_1 + x_2 = -\frac{b}{a}\) ,两根之积\(x_1 * x_2 = \frac{c}{a}\),当Δ<0时,得到的是不相等的两个虚数根,\(x = \frac{-b+i\sqrt{4ac-b^2}}{2a}\),一元三次方程有卡尔丹公式和盛金公式。
二分逼近法
对一元二次方程f(x)来说,给定区间[a, b],如果f(a)<0, f(b)>0,则可以按照下列方法进行逼近:
- 如果\(f(\frac{a+b}{2})= 0\),则\(\frac{a+b}{2}\)就是零点;
- 如果\(f(\frac{a+b}{2}) < 0\),则零点在区间\([\frac{a+b}{2}, b]\)上,令\(a = \frac{a+b}{2}\),继续从第1步开始判断;
- 如果\(f(\frac{a+b}{2}) > 0\),则零点在区间\([a, \frac{a+b}{2}]\)上,令\(b = \frac{a+b}{2}\),继续从第1步开始判断。
通常只要在精度允许的范围内逼近零时就可以结束二分逼近的过程。二分法的局限在于不能计算复根和重根。
牛顿迭代法
牛顿迭代法的数学原理
在x轴找一点\(x_0\),过点\(x_0\)垂直于x轴做垂线,交\(f(x)\)于点\(f(x_0)\),然后再过\(f(x_0)\)点做函数的切线,得到切线与x轴的交点记为\(x_{n+1}\),一直循环下去,最终会得到根的近似值:
\[x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}\]
此方法也可以用来根号的值,比如要求\(\sqrt c\)的值,可以构造一个函数\(f(x) = x^2 -c\),求这个函数的右根即是得到$\sqrt c $的值。利用公式,
\[设x_n = t,则 x_{n+1} = t - \frac{t^2 - c}{2t} = \frac{t+\frac{c}{t}}{2}\]
得到的\(x_{n+1 }\)设为新的t,带入公式,一直等到误差小于特定的值,再返回答案,得到的t就是开根的值。初始时可以令t=c,便于计算。这段函数的代码如下:
public static double sqrt(double c) {
if(c < 0)
return Double.NaN;
double err = 1e-15;
double t = c;
while(Math.abs(t-c/t) > err*t)
t = (c/t+t) / 2.0;
return t;
}
原文地址:https://www.cnblogs.com/itero/p/11007397.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法