画图像解方程系列-FPI

不是所有方程都能求出精确解。

解方程

sinx(x) = cos(x),求x,在区间(0,1)范围内。

正常解法:
两边除以cosx得到tanx = 1
解的x = Π/4,使用计算机计算得到:0.78539816339744830961566084581988。
在这里插入图片描述

画图

画出sin(x)和cos(x)的函数图像,参见函数图像是如何画出来的(LiveCharts2)
在这里插入图片描述

放大图像,找到近似初始值,从图中可以看出交点在0.78和0.79之间。将初始值,设置为0.785。
在这里插入图片描述

FPI不动点迭代

g(x) = x + cos(x)-sin(x),之所以这样构造,是因为导数<1,会收敛。如果导数大于1的话,就会发散

 Task.Run(() =>
 {
     double x = 0.785;
 
     for (int i = 0; i < 10; i++)
     {          
         x = x  +  Math.Cos(x)-Math.Sin(x);
     }
     Debug.WriteLine("x:" + x );
     Debug.WriteLine("error:" + (Math.Cos(x)-Math.Sin(x)) );

 
          // 使用Dispatcher在UI线程中更新Greeting
     //Dispatcher.UIThread.InvokeAsync(() => Greeting = x.ToString()); // 更新Greeting并同步到UI
     Root = x;
 });

运行结果:

x:0.7853981041998028
error:8.371811310858845E-08

和最初的0.785对应的error进行比较:0.0005630880618338052约等于5.63E-4。

取迭代次数是100的时候,这个时候和计算器的值很接近了。

x:0.7853981633974482
error:2.220446049250313E-16

从这里可以看出整整提升了4个数量级。其实最初的估计的额精度能满足大部分的场景了,当你想要更高的精度的时候,就的需要算法实现了。FPI只是其中一种,还有很多方法,比如二分法,牛顿方法等。

写在最后

工程中很多时候是无法求出精确解的或者精确解很难求出来。这个时候就需要数值计算来提高求解精度。理想气体状态方程PV=nRT,这个与实际方程式有差距的,不过我们可以根据PV=nRT来获取与真实值接近的初始V,然后带入实际的状态方程,不断迭代来获取到精度很高的的真实体积V。

公众号

更多内容,欢迎关注我的微信公众号:半夏之夜的无情剑客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloworddm

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值