csharp进阶练习题:牛顿的方法:寻找根(理性)【难度:2级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

这篇博客介绍了如何使用牛顿方法来计算平方根,包括算法原理和迭代过程。文章还提到了与希罗方法的关系,并提供了一个C#编程练习,要求计算任意次根的理性近似值。此外,博客包含了相关编程题目的链接。
摘要由CSDN通过智能技术生成

csharp进阶练习题:牛顿的方法:寻找根(理性)【难度:2级】:

牛顿的方法找到一个函数的根源 - 对反复改进值

 X 

使

 F(X)

越来越接近零.提供的值,牛顿法的一次迭代计算的更好近似,关于最接近根收敛.

<图像样式= “宽度:400像素;” SRC = “https://upload.wikimedia.org/wikipedia/commons/e/e0/NewtonIteration_Ani.gif”> </图像>

使用牛顿的方法来计算平方根

在平方根的情况下,我们需要的根是一个常数的平方根的函数 - 因此我们将使用

 F(X)= X ^ 2  - 一个

,并且由于牛顿方法利用该衍生物的,此处也就是,以及:

 F'(X)= 2×

应用和简化:
<代码>的 X <子> n + 1个</子> = X <子>名词</子> - F(X <子>名词</子> )/ F’(X <子>名词</子>)</跨度>的 / * 牛顿法* / </跨度>
    = X <子>名词</子> - (X <子>名词</子> 2 - A)/ 2倍<子>名词</子>
    =(2×<子>名词</子> 2 - (X <子>名词</子> 2 - 一))/ 2×<子>名词</子>
    =(X <子>名词</子> 2 + A)/ 2倍<子>名词</子>
=(X <子>名词</子> + A / X <子>名词</子>)/ 2的 / * Hero的方法* / </跨度> </代码>

如果我们表示x作为有理数(C / d),我们可以扩大上述获得的一对为平方根有理近似关系:
<代码> X <子> n + 1个</子> =(X <子>名词</子> 2 + A)/ 2倍<子>名词</子>
    = C <子> n + 1个</子> / d <子> n + 1个</子>
的替代ç<子>名词</子> / d <子>名词</子>对于x <子>名词</子>&简化</跨度>
    =(C <子>名词</子> 2 + A * d <子>名词</子> 2 )/(2 * C <子>名词< /子> * d <子>名词</子>)
ç<子> n + 1个</子> = C <子>名词</子> 2 + A * d <子>名词</子> 2 d <子> n + 1个</子> = 2 * C <子>名词</子> * d <子>名词</子>
</代码>

习题规格:计算Ñ个使用牛顿法罗茨

牛顿法寻找平方根上面的应用是相同的方法设计[希罗(https://en.wikipedia.org/wiki/Hero_of_Alexandria)谁住2000多年前.我们有[此另一个习题(http://www.codewars.com/kata/heros-root)(尽管它停在整根和要求我们来算,而不是专注于值本身迭代).

* 要混合起来一点,我们要理性计算(即分数)表示,将开始在整数水平,并从那里继续.
 * 代替平方根,我们将构建所​​有根工作有一个大致的算法:方根,立方体根,等而上.
 * 的输入将是<代码> X <子>名词</子> </代码>对于先前迭代值,

一个
  • 我们采取的和的根值
Ñ 

根的顺序(2 =平方根,3 =立方根,等…)
 * 从方法返回的将是牛顿法表示为对象的下一个迭代:
 ```javascript
 牛顿({C:1,d:1},2,2)=== {C:3,d:2}


 * 如果你不知道所涉及的微积分,这里的一般功能,我们将使用:<前> <码> F(X)= X 名词  - 一个
F'(X)= NX  N-1 
</代码> 你将需要确定表达式来使用该有理数扩张;然而,这是一些比较简单的代数处理.
 * 测试将采用不同大小和值的数据,但他们不会验证或特殊情况下进行测试,如底片甚至根,要求虚数来解决.
 * 为方便简化分数,你的方法会返回,提供了GCD方法为你提供两个整数值的最大公约数.
 


## 编程目标:

```csharp
using System;
using static KataProvided;
public class Kata
{
  public static Tuple GetNewtonRoot(Tuple x0,  a, int n)
  {
    // static using of KataProvided supplies following two methods
    Console.WriteLine(Pow(2L,4)); // outputs 16
    Console.WriteLine(GetGcd(12,18)); // outputs 6, the GCD of 12 & 18
    throw new NotImplementedException(); // your code goes here
  }
}


测试样例:

namespace Solution {
  using NUnit.Framework;
  using System;
  // TODO: Replace examples and use TDD development by writing your own tests
  [TestFixture]
  public class SolutionTest
  {
    public void MyTest()
    {
      Assert.AreEqual("expected", "actual");
    }
  }
}


最佳答案(多种解法):

点击查看答案

更多关联题目:

csharp进阶练习题:圣诞礼物计算器【难度:2级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练
csharp基础练习题:斯坦顿措施【难度:1级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练

免责申明

本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars.com/
https://www.codewars.com/kata/newtons-method-finding-roots-rational

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值