首页 > 其他分享 >牛顿法、割线法、二分法

牛顿法、割线法、二分法

时间:2023-11-30 12:44:07浏览次数:28  
标签:12 迭代 df 割线 牛顿 二分法 %%

 1 clear;clc;
 2 %% 牛顿法
 3 f=@(x)x^4-4*x^2+4;%函数
 4 df=@(x)4*x^3-8*x;%一阶导数
 5 ddf=@(x)12*x^2-8;%二阶导数
 6 N=1000;%最大迭代次数
 7 x=zeros(N,1);%储存迭代点
 8 x(1)=log(8);%初始点
 9 eps=0.00001;%容许误差
10 
11 %迭代过程
12 for k=2:1:N
13     x(k)=x(k-1)-f(x(k-1))/df(x(k-1));
14     if(abs(x(k)-x(k-1))<eps)
15         break;
16     end
17 end
18 
19 X=x(k);%迭代结果
20 K=k;%迭代步数
21 
22 %% 牛顿法修正1
23 x=zeros(N,1);%储存迭代点
24 x(1)=log(8);%初始点
25 
26 %迭代过程
27 for k=2:1:N
28     x(k)=x(k-1)-2*f(x(k-1))/df(x(k-1));
29     if(abs(x(k)-x(k-1))<eps)
30         break;
31     end
32 end
33 
34 X1=x(k);%迭代结果
35 K1=k;%迭代步数
36 
37 %% 牛顿法修正2
38 x=zeros(N,1);%储存迭代点
39 x(1)=log(8);%初始点
40 
41 %迭代过程
42 for k=2:1:N
43     x(k)=x(k-1)-f(x(k-1))*df(x(k-1))/(df(x(k-1))^2-ddf(x(k-1))*f(x(k-1)));
44     if(abs(x(k)-x(k-1))<eps)
45         break;
46     end
47 end
48 
49 X2=x(k);%迭代结果
50 K2=k;%迭代步数
牛顿法求解非线性方程组
 1 clear;clc;
 2 %% 割线法
 3 f=@(x)x^4-4*x^2+4;%函数
 4 df=@(x)4*x^3-8*x;%一阶导数
 5 N=1000;%最大迭代次数
 6 x=zeros(N,1);%储存迭代点
 7 x(1)=log(8);%初始点
 8 x(2)=x(1)-f(x(1))/df(x(1));
 9 eps=0.00001;%容许误差
10 
11 %迭代过程
12 for k=3:1:N
13     x(k)=x(k-1)-(x(k-1)-x(k-2))/(f(x(k-1))-f(x(k-2)))*f(x(k-1));
14     if(abs(x(k)-x(k-1))<eps)
15         break;
16     end
17 end
18 
19 X=x(k);%迭代结果
20 K=k;%迭代步数
21 
22 %% 修正的割线法
23 x=zeros(N,1);%储存迭代点
24 x(1)=log(8);%初始点
25 x(2)=x(1)-f(x(1))/df(x(1));
26 
27 %迭代过程
28 for k=3:1:N
29     u=x(k-2);v=x(k-1);s=u;
30     if abs(u)<abs(v)%交换
31         s=v;
32         v=u;
33         u=s;
34     end   
35     x(k)=v-(v-u)/(f(v)-f(u))*f(v);
36     if(abs(x(k)-x(k-1))<eps)
37         break;
38     end
39 end
40 
41 X1=x(k);%迭代结果
42 K1=k;%迭代步数
割线法求解非线性方程组
 1 clear;clc;
 2 %% 二分法
 3 %计算根号三,相当于计算方程"x^2-3=0"的正根
 4 f=@(x)x^2-3;
 5 a=0;b=100;%区间端点
 6 c=(a+b)/2;
 7 N=1000;%最大迭代次数
 8 eps=0.00001;%容许误差
 9 
10 % 二分法过程
11 for k=1:1:N
12     if(f(a)*f(c)<0)
13         b=c;
14         c=(a+b)/2;
15     else
16         a=c;
17         c=(a+b)/2;
18     end
19     if (abs(a-b)<eps)
20         break;
21     end
22 end
23 
24 X=c;%迭代结果
25 K=k;%迭代步数
二分法求解根号3

 

标签:12,迭代,df,割线,牛顿,二分法,%%
From: https://www.cnblogs.com/wjma2719/p/17866881.html

相关文章

  • 《力扣面试150题》题单拓展——二分法
    《力扣面试150题》题单拓展——二分法困难题:找第K大/小1.基础知识首先可以确定答案的上下界单调性分析:如果当前答案为m时,可以满足,一定有一侧是一定满足的,另一侧不一定,需要去探索boolis_ok(){}intl,r;intans;while(l<=r){intm=l+((r-l)>>1);......
  • Java学习—二分法查找(二)
    BM18 二维数组中的查找描述在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给......
  • echarts 双y轴分割线无法对齐
    echarts官网的api中提到了可以用splitNumber控制分割段数,但是优先级太低,部分情况下可能不生效,使用interval+max两个属性才能强制控制分割段数这里我设置的分割段数是5,5比较好整除,6以上的话坐标轴会出现不规则的小数,不太好看数据里可能会出现百分比,所以对小于1的做了一下特殊处......
  • Java学习—二分法查找(一)
    1、二分查找(binarysearch)二分查找(binarysearch),也称折半搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且......
  • 用二分法寻找第7位数(数组)
    #include<stdio.h>intmain(){  intk=7;  intarr[]={1,2,3,4,5,6,7,8,9,10};  intsz=sizeof(arr)/sizeof(arr[0]);    //元素个数的计算公式  intleft=0;                //左下标  intright=sz-1;  ......
  • 手机直播源码,Flutter 自定义 虚线 分割线
    手机直播源码,Flutter自定义虚线分割线学习使用Flutter进行虚线自定义控件练习 //自定义虚线(默认是垂直方向)classDashedLindextendsStatelessWidget{ finalAxisaxis;//虚线方向 finaldoubledashedWidth;//根据虚线的方向确定自己虚线的宽度 finald......
  • [计算机学习]Python 二分法
    二分法的思想二分查找的前提是对象是有序数据。以下内容摘自Pythontip.com网站。扫描二维码可以了解更多Python课程。 left=0right=sizeofarray#数组的大小while(left+1<right)mid=(left+right)/2#中间mid下标if(array[mi......
  • 数据结构与算法(LeetCode)第一节:认识复杂度,对数器,二分法与异或运算
    一、认识复杂度1.评估算法优劣的核心指标:时间复杂度:当完成了表达式的建立,只要把最高阶项留下即可。低阶项都去掉,高阶项的系数也去掉,记为O(去掉系数的高阶项);​ 时间复杂度是衡量算法流程的复杂度的一种指标,该指标只与数据量有关,与过程之外的优化无关常见的时间复杂度(从好到坏)O......
  • 直播平台源码,Flutter 自定义 虚线 分割线
    直播平台源码,Flutter自定义虚线分割线学习使用Flutter进行虚线自定义控件练习 //自定义虚线(默认是垂直方向)classDashedLindextendsStatelessWidget{ finalAxisaxis;//虚线方向 finaldoubledashedWidth;//根据虚线的方向确定自己虚线的宽度 finald......
  • C语言二分法
    ////main.c//BinarySearch////Createdbystevexiaohuzhaoon2023/10/16.//#include<stdio.h>//二分法查找指定元素在数组中出现的索引位置intBinarySearch(int*array,intlength,intk){intleft,right,mid,NotFound=-1;//设置......