在工科,经常会遇到解方程,计算方法中常用的有二分法(精度太低,迭代次数多,一般没人用),牛顿迭代法,弦截法,网上大多都是C++或者Java的实现代码,很少有C#的,我在本科毕业论文中用到了这些,那时也需要做一个winfrom,所以就用了C#,因此今天正好借篇文章,把我的代码修改一下,公布出来,方便学 ...
Question:
Implement int sqrt(int x).
Compute and return the square root of x.
求平方根
Algorithm:
牛顿迭代法,迭代多次后,可以求出平方根。
还有一种雷神之锤3的程序代码,比C++标准库sqrt()的还快。
在这里贴出链接:点击打开链接 ,如果有大神看懂了麻烦讲...
分类:
其他好文 时间:
2016-08-04 11:42:28
阅读次数:
165
计算一个数字的立方根,不使用库函数详细描述:接口说明原型:publicstaticdoublegetCubeRoot(doubleinput)输入:double待求解参数返回值:double输入参数的立方根输入描述:待求解参数double类型输出描述:输入参数的立方根也是double类型输入例子:216输出例子:6.0importjava.util..
分类:
其他好文 时间:
2016-07-11 01:40:08
阅读次数:
846
手算平方根的「正确」方法,是什么方法?如果你认为是牛顿迭代法的话,你可以亲自试一下,看看效果如何: (原帖 kz3007407872, 鉴于百度贴吧的帖子是公开的,我就不打码了) 其实牛顿迭代法非常好,在电脑上快得飞起。但是手算就不行了。 那么「正确」的方法是什么呢?是这个: (原帖同上) 说得神神 ...
分类:
其他好文 时间:
2016-06-23 22:08:29
阅读次数:
214
1、求解方程。 并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法,可以迭代求解。 原理是利用泰勒公式,在x0处展开,且展开到一阶,即f(x) = f(x0)+(x-x0)f'(x0) 求解方程f(x)=0,即f(x0)+(x-x0)*f'(x0)=0,求解x = x1=x0 ...
分类:
其他好文 时间:
2016-06-16 13:09:31
阅读次数:
573
把f(x)在x0附近展开成泰勒级数f(x) = f(x0)+f'(x0)(x-x0)+f''(x0)/2!*(x-x0)^2+...然后取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x) = f'(x0)x - x0*f'(x0) + f(x0) = 0f'(x ...
分类:
编程语言 时间:
2016-05-08 10:28:05
阅读次数:
799
牛顿迭代法:介绍、原理与运用 介绍 牛顿迭代法是一个可以求一个任意函数的零点的工具。它比二分法快得多。 公式是:x=a-f(a)/f'(a)。其中a是猜测值,x是新的猜测值。不断迭代,f(x)就越来越接近0。 原理 我们将f(x)做泰勒一阶展开:f(x)~f(a)+(x-a)f'(a)。 令f(x) ...
分类:
其他好文 时间:
2016-04-23 16:46:17
阅读次数:
360
最小二乘法的目标:求误差的最小平方和,对应有两种:线性和非线性。线性最小二乘的解是closed-form(如下文),而非线性最小二乘没有closed-form,通常用迭代法求解(如高斯牛顿迭代法,本文不作介绍)。...
分类:
编程语言 时间:
2016-04-22 18:58:40
阅读次数:
264
用牛顿迭代法求方程在1.5附近的根:2x^3-4x^2+3x-6=0.解:牛顿迭代法又叫牛顿切线法。设f=2x^3-4x^2+3x-6,f1为方程的导数,则f1=6x^2-8x+3,且f1=(f(x0)-0)/(x0-x1),推导得:x1=x0-f/f1程序:#include<stdio.h>#include<math.h>intmain(){ doublex0,x1,f,f1; x1=1.5;..
分类:
编程语言 时间:
2016-02-18 06:37:51
阅读次数:
545
利用迭代算法解决问题,需要做好以下三个方面的工作:
一、确定迭代变量
在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。
二、建立迭代关系式
所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。
三、对迭代过程...
分类:
编程语言 时间:
2016-02-10 00:31:51
阅读次数:
242