百摩网
当前位置: 首页 生活百科

牛顿迭代法matlab(牛顿迭代法)

时间:2023-06-08 作者: 小编 阅读量: 6 栏目名: 生活百科

示例1:求解平方根先来看如何用牛顿迭代法求解5的平方根。1999年12月,美国idSoftware公司发布了名为“雷神之锤III”的电子游戏。它是第一个支持软件加速的游戏,取得了极大成功。雷神之锤III并不是idSoftware公司的第一次成功。经过测试,它的效率比上述牛顿法程序要快几十倍。Lomont也是个牛人,在精心研究之后从理论上也推导出一个最佳猜测值,和卡马克的数字非常接近,0x5f37642f。

牛顿迭代法matlab?牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,下面我们就来说一说关于牛顿迭代法matlab?我们一起去了解并探讨一下这个问题吧!

牛顿迭代法matlab

牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。

示例1:求解平方根

先来看如何用牛顿迭代法求解5的平方根。在计算器上的结果是2.236067…

问题可以看作解方程x2=5,下面尝试用牛顿迭代法求解。

首先令f(x)= x2 – 5 = 0,这是标准步骤,取得一个新函数,令该函数为0。这是一个抛物线:

抛物线与x轴的交点x就是方程的解,它比2稍大一点。

现在在x=2处对f(x)做切线:

f(x)的切线

切线与x轴的交点

x0=2,y0= x02 – 5 = -1,设k是切线斜率:

在x1处做f(x)的切线,重复上面步骤,

这就是牛顿迭代法的公式。通过作图可以看出,每一次迭代,x都将更靠近最终解。

f’(x)=2x,将公式代入目标方程f(x)=x2-5:

已经相当接近计算器的结果。

示例2:2cosx=3x

解方程2cosx=3x

由图像可知,方程存在唯一解。

f(x)=2cosx-3x=0,f’(x)=-2sinx-3,x0=π/6≈0.52

注意事项

牛顿迭代法几乎可以求解所有方程,但它仍然有一些限制。

通过前两个例子可以看到,在使用牛顿迭代法时,需要选取一个较为解接近真实解的x0作为迭代基数,x0如何选取呢?一句参考是:“f’不能太小,f’’不能太大,x0要在x附近”,这似乎要凭经验和感觉了,没有什么太好的办法;实际上,如果x0和x的差距过大,可能会得到一个没谱的解。

设第n次迭代的误差是En=|x-xn|,那么需要满足En 1<En。如果选择和计算都正确,误差缩小的速度将非常快。

以计算5的平方根为例,如果选择x0=-2,结果将偏向于-2.236067…;如果选择x0=0,则f’(0)=0,没法继续迭代,函数曲线如下图所示:

选择了错误的x0

代码示例:牛顿迭代法开平方

设x2=a,则f(x)= x2-a,根据牛顿迭代法公式:

1 const float EPS = 0.00001;

2 double sqrt(double x) {

3 if(x == 0)

4 return 0;

5 double result = x;

6 double lastValue;

7 do{

8 lastValue = result;

9 result = result / 2.0fx / 2.0f / result;

10 }while(abs(result - lastValue) > EPS);

11 return (double)result;

12 }

上面方法开平方会很快,但 https://www.2cto.com/kf/201206/137256.html 中提到了一个更快的方法。

1999年12月,美国id Software公司发布了名为“雷神之锤III”的电子游戏。它是第一个支持软件加速的游戏,取得了极大成功。(由于影响力过大,文化部于2004年将它列入了非法游戏名单)雷神之锤III并不是id Software公司的第一次成功。早在1993年开始,这家公司就以“毁灭战士”系列游戏名闻天下。1995年,“毁灭战士”的安装数超过了当年微软的windows 95。据传比尔盖茨才曾经考虑买下id software。(id software公司后来被推出过“上古卷轴”系列的Bethesda公司买下)

id Software所取得的成功很大程度上要归功于它的创始人约翰·卡马克。马克尔也是一个著名的程序员,他是id Software游戏引擎的主要负责人。 回到刚才提到的雷神之锤,马克尔是开源软件的积极推动者,他于2005年公布了雷神之锤III的源代码。至此人们得以通过研究这款游戏引擎的源文件来查看它成功的秘密。

在其中一个名字为q_math.c的文件中发现了如下代码段:

1 float Q_rsqrt( float number ) {

2 long i; float x2, y; const float threehalfs = 1.5F;

3 x2 = number * 0.5F;

4 y = number;

5 i = * ( long * ) &y; // evil floating point bit level hacking

6 i = 0x5f3759df - ( i >> 1 ); // what the fuck?

7 y = * ( float * ) &i;

8 y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration

9 // y = y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed

10 #ifndef Q3_VM #

11 ifdef __linux__ assert( !isnan(y) ); // bk010122 - FPE?

12 #endif

13 #endif return y;

14 }

这段代码的作用就是求number的平方根,并且返回它的倒数。

经过测试,它的效率比上述牛顿法程序要快几十倍。也比c标准库的sqrt()函数要快好几倍。此段代码有一个奇怪的句子:

i = 0x5f3759df - ( i >> 1 ); // what the fuck?

没错,一般的求平方根都是这么循环迭代算的但是卡马克(quake3作者)真正牛B的地方是他选择了一个神秘的常数0x5f3759df 来计算那个猜测值,就是我们加注释的那一行,那一行算出的值非常接近1/sqrt(n),这样我们只需要2次牛顿迭代就可以达到我们所需要的精度。好吧如果这个还不算NB,接着看:

普渡大学的数学家Chris Lomont看了以后觉得有趣,决定要研究一下卡马克弄出来的这个猜测值有什么奥秘。Lomont也是个牛人,在精心研究之后从理论上也推导出一个最佳猜测值,和卡马克的数字非常接近, 0x5f37642f。卡马克真牛,他是外星人吗?

传奇并没有在这里结束。Lomont计算出结果以后非常满意,于是拿自己计算出的起始值和卡马克的神秘数字做比赛,看看谁的数字能够更快更精确的求得平方根。结果是卡马克赢了... 谁也不知道卡马克是怎么找到这个数字的。

最后Lomont怒了,采用暴力方法一个数字一个数字试过来,终于找到一个比卡马克数字要好上那么一丁点的数字,虽然实际上这两个数字所产生的结果非常近似,这个暴力得出的数字是0x5f375a86。

————————————————

版权声明:本文为CSDN博主「我是8位的」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/sunbobosun56801/article/details/78088085

    推荐阅读
  • 植物大战僵尸多嘴喷菇 植物大战僵尸多嘴喷菇攻击范围

    1、首先,进入游戏界面点击左下角的活动。

  • 玉米为什么要加碱煮(到底有没有必要加碱)

    玉米为什么要加碱煮玉米味甘,性平,归胃、膀胱经,具有健脾养胃、利水渗湿的作用,脾胃虚弱,消化不良、水肿的人可以吃煮玉米;玉米含有丰富的纤维素,刺激胃肠蠕动防止便秘,还可促进胆固醇的代谢从而达到降血脂、防止动脉硬化的作用。故煮玉米适宜于高血压、高血脂、动脉硬化的人群。玉米还可以降低血糖,糖尿病人可以适量食用。

  • 剩的烤鸭第二顿怎么吃(剩的烤鸭第二顿可以怎么吃)

    接下来我们就一起去了解一下吧!剩的烤鸭第二顿怎么吃剩烤鸭有很多种吃法,鸭肉可以做包子,鸭架可以炸着吃或者炖汤,烤鸭还可做椒盐烤鸭、孜然烤鸭、辣椒炒烤鸭、冬瓜炖烤鸭、烤鸭馅饼、烤鸭披萨等。烤鸭是北京和南京的一道特色名菜,属于北京菜或金陵菜,该菜品以色泽红艳,肉质细嫩,味道醇厚,肥而不腻的特色,被誉为天下美味而驰名中外,其色泽略黄,柔软淡香,夹卷其他荤素食物食用,为宴席常用菜点,更是家常风味美食。

  • 奶茶热量有多高(奶茶热量有多高?)

    最近的天气气温比较高,很多人都容易出现食欲不振的情况,有时候喝一杯奶茶就算了,那奶茶的热量有多高呢?奶茶热量有多高视情况而定。具体热量消耗与个人的体重、跑步的速度等因素都有一定的关系,而且食物进入到人体之后也会产生一定的热效应,所以并不能单纯地以跑多少米来表示一杯奶茶的热量。而且因为自制奶茶也不会在里面添加过多的添加剂,所以相对于市售的奶茶来说,自制奶茶也会要更加绿色、健康一些。

  • 明天会更好怎么样歌词(明天会更好歌词改版)

    明天会更好怎么样歌词?接下来我们就一起去了解一下吧!走进李,杜,让诗歌流入生活,成为生活不可或缺的一部分。出版过同名诗集《月夜诗集》,曾经在“井冈山游记杯”获优秀奖,“十一.届华鼎诗歌杯”获精英奖,“见证中国,崛起诗文大赛“银奖,“中国最美游记重庆杯”获三等奖等,第四届中国当代散文精选300篇优秀奖。

  • 蓬松的头发歌曲(快来一起看看吧)

    蓬松的头发歌曲?以下内容大家不妨参考一二希望能帮到您!这段歌词其实出自最近很火的偶像综艺《青春有你2》,中间有个选手本身说唱能力不足却执意要表演说唱,而她正式表演出来的时候,那个魔性又洗脑的歌词瞬间就占领了大家的大脑。

  • 鹅不食草农村叫什么,鹅不食草的种植技术

    鹅不食草又叫食胡荽、鹅不食等。鹅不食草须根纤细,易缠结成团,颜色淡黄,茎细,分枝多,茎的质地脆弱,易折断,断面黄白色。鹅不食草一般生长在乡村的稻田或阴湿处、路旁,主要分布在我国东北、华北、华中、华东、

  • 为什么北方人一年吃几次饺子(冬天北方人爱吃饺子)

    想必大家都有小时候吃饺子比着数数的经历,吃得多就可以得到家长的夸奖。但是对于需要控制热量的人来说,饺子热量不低,不能放肆吃,但饺子热量比较难以衡量,那么一顿吃几个饺子最合适?如果是家里包的馅料充足的大饺子,一般有20克,吃10到12个就可以了,不要吃得太多。其他规格的饺子大家可以按照标准自己衡量一下。如果是素馅的饺子,下一顿就吃一些动物性食物,尤其是瘦肉和鸡蛋最好。

  • 暨南大学简介(暨南大学的校训)

    接下来我们就一起去了解一下吧!马寅初、厉麟似、郑振铎等著名学者都曾在暨大任教。学校前身是1906年清政府创立的暨南学堂;1927年更名为国立暨南大学;1949年合并于复旦大学、交通大学等高校;1958年重建。校训“忠信笃敬”四个字的出处十分古老。《论语·卫灵公》记载说:孔子的学生子张问怎样才能使自己到处行得通。其内容包括了“言”和“行”两个方面,也就是一个人立身行事的全部内容。

  • 黛珂美白水乳如何(美白水乳套装怎么选)

    黛珂美白水乳如何如果将中国女孩子对于护肤的需求弄一张表格,再做个排序,那么top级别的肯定是美白了。所以黛珂焕白清爽水乳是非常的推荐哦,一套美白淡斑暗沉,全搞定啦。