C#(Unity3D)数值分析-牛顿(迭代)法

最近需要用此方法解决一元五次方程求解问题,所以学习了下,在此记录一下。

 

此方法的产生,是由于很多方程没有通解公式,所以求解只能通过数值方法。方法有很多,参见“数值分析”,类似书有很多。

 

牛顿法:(这里引用书籍上所述)

设方程 f(x) =0,其中有近似根 Xk,利用泰勒公式在 Xk 点近似一阶展开,得到

求解 f(x) = 0, 即

 

这里设 x 为 Xk+1,得到

此时,我们便能得到一个迭代方程,可以进行多次迭代,当然这里初始 Xk需要在方程根的附近,保证结果收敛,否则可能不收敛。

然后我们需要判定一个迭代上限,这里我们需要加一个判定条件,

这里的Epislion就是一个上限,若结果与上一次迭代结果相近就停止。当然也可以用 f(x) 的绝对值大小当作判断条件。

 

这是我在Unity3D里用C#写的牛顿法(如果直接用C#, 把绝对值函数换一下就可以)

    float NewtonMethod()
    {
        float x = 0; // 0设为初始值Xk,这里需要针对不同问题设置值
        bool Iteration = true;    

        while (Iteration)
        {
            float y = x;
            x = x - F_Drivate(x);
            if (Mathf.Abs(x - y) < 0.001f)//这里是设迭代的判断
                Iteration = false;
        }
        return x;
    }

    float F_Drivate(float x)
    {
        float F = ;//函数
        float D = ;//微分
        return F / D;
    }

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值