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