要点:

首先对于任何方程 :f(x)=0 ,可以转换成 f(x)+x-x => f(x)+x=x;

取g(x)=f(x)+x;  那么 新方程g(x)=x 的解即是 f(x)=0的解,即g(x)-x=0 成立时有 f(x)+x-x=0

现在研究g(x)=x 的解,该方程的解对应 函数 y=g(x) 与 函数y=x的交点(x1,y1)的x坐标即x1.

函数y=x 是对称直线,上面的的任意点(xa,ya)有xa=ya.

picard 方法的具体过程是,选任意x=x0(当然实际上是有条件的,见教程例9), 计算x1=g(x0),x2=g(x1)....xn=g(x_n-1)

当xn稳定在某一值附近时,则xn是方程的解(当然数列x0,x1,x2....xn也可能是发散的,即无法取得解,参考例9的说明)

解方程一般过程,如果可能先画出方程对应的函数,找出过零点(根)然后采用近似根按newton法或picard法进行迭代

matlab代码

clc
clear
syms x;
format long
%g=@(x)(log(x)*);
g=@(x)(log(x)-x/+x);
x=;
for i=:: %迭代步数
x=g(x);
end
x

注意上面代码是计算ln(x)/x=1/1000的根 (9121)即方程 ln(x)-x/1000=0 或者 1000ln(x)-x=0;

迭代时使用的函数g(x)=f(x)+x ,即 g(x)=ln(x)-x/1000+x 或者 g(x)=1000 ln(x) -x +x

选择不同的g(x)迭代过程有区别,见下面的讨论。

实际测试:

采用 g(x)=log(x)-x/1000 +x , g'(x)=1/x +999/1000 可见g'(x)始终接近1,下图看到两条曲线重叠

在采用上面代码迭代时,需要20000步左右才迭代到根附近(9118)

采用g(x)=1000ln(x)-x+x 进行迭代,g'(x)=1000/x 当x增大到10000时导数会取值是0.1,故收敛的过程比较快

迭代过程只需10步即可导9118.xxxx

斜率大于1的曲线不动点可以通过求其反函数的不动点来获取

Picard 法求方程根的更多相关文章

  1. C语言之基本算法24—黄金切割法求方程近似根

    //黄金切割法! /* ================================================================ 题目:用黄金切割法求解3*x*x*x-2*x* ...

  2. MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根

    MATLAB用二分法.不动点迭代法及Newton迭代(切线)法求非线性方程的根 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验原理 二.实验步骤 ...

  3. 【清橙A1094】【牛顿迭代法】牛顿迭代法求方程的根

    问题描述 给定三次函数f(x)=ax3+bx2+cx+d的4个系数a,b,c,d,以及一个数z,请用牛顿迭代法求出函数f(x)=0在z附近的根,并给出迭代所需要次数. 牛顿迭代法的原理如下(参考下图) ...

  4. 特征根法求通项+广义Fibonacci数列找循环节 - HDU 5451 Best Solver

    Best Solver Problem's Link Mean: 给出x和M,求:(5+2√6)^(1+2x)的值.x<2^32,M<=46337. analyse: 这题需要用到高中的数 ...

  5. 2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂

    2019-ACM-ICPC-南昌区网络赛-H. The Nth Item-特征根法求通项公式+二次剩余+欧拉降幂 [Problem Description] ​ 已知\(f(n)=3\cdot f(n ...

  6. Secant 方法求方程多个根

    Secant 方法介绍 Secant Method 函数 Secant_Methods 简介 1.函数定义 [c, errColumn] = Secant_Method(f, a, b, N, con ...

  7. HDU 2586 倍增法求lca

    How far away ? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  8. 倍增法求lca(最近公共祖先)

    倍增法求lca(最近公共祖先) 基本上每篇博客都会有参考文章,一是弥补不足,二是这本身也是我学习过程中找到的觉得好的资料 思路: 大致上算法的思路是这样发展来的. 想到求两个结点的最小公共祖先,我们可 ...

  9. 求方程x1+x2+x3=15的整数解的数目

    求方程x1+x2+x3=15的整数解的数目要求0≤x1≤5,0≤x2≤6,0≤x3≤7.解:令N为全体非负整数解(x1,x2,x3),A1为其中x1≥6的解:y1=x1-6≥0的解:A2为其中x2≥7 ...

随机推荐

  1. 驱动学习---PAE--virtual address to physics address

    PAE是Physical Address Extension的缩写,即物理地址扩展.简单来说,就是把IA-32处理器的寻址能力从原来的4GB扩展到64GB.寻址4GB空间,要求物理地址的宽度为32位. ...

  2. nullcon HackIM 2016 -- Crypto Question 1

    You are in this GAME. A critical mission, and you are surrounded by the beauties, ready to shed thei ...

  3. limux curl命令

    linux curl命令很强大: http://blog.chinaunix.net/uid-14735472-id-3413867.html curl是一种命令行工具,作用是发出网络请求,然后得到和 ...

  4. CC1310的RSSI值问题

    前几日,做CC1310的通信距离测试,发现我的CC1310的板子在433MHz,50kbps下通信距离非常近,RSSI值下探至-80左右就无法正常通信,与TI宣称的-120dbm接收灵敏度差距较大.使 ...

  5. Integer Break

    Given a positive integer n, break it into the sum of at least two positive integers and maximize the ...

  6. java验证码刷新

    可以使用a标签,这样省事 <img id="code_img" src="validcode" alt="登录验证码" /> & ...

  7. notepad++ 离线插件下载

    http://www.cnblogs.com/findumars/p/5180562.html

  8. Hibernate 注解的用法以及说明(二)

    注解映射必须满足两大条件:Hibernate3.2以上版本和JSEE 5. @Entity 类注释,所有要持久化的类都要有@Entity   public class Org  implements ...

  9. Python模块:itertools

    itertools模块:循环器 一,无穷循环器:count,cycle,repeat (1)count(5,3) #从5开始的整数循环器,每次增加3,即:5,8,11,14,17... from it ...

  10. spring-data-redis注册fastjson序列化工具

    使用spring-data-redis的时候,其序列化工具自带: