• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

用Matlab编写二分法和Newton迭代法求解非线性函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1、二分法

   原理:若 f 的值在C[a, b]中,且 f (a) · f (b) < 0,则 f (a, b) 上必有一根。

 

实现算法流程:

2、Newton迭代法

迭代公式:

几何意义:

 

 

 

 

 3、求解问题

用Newton法和二分法求

  

  的解。

 4、代码实现

 1 clear;close;clc
 2 a=0;b=1;%根区间
 3 e=10^(-6);%根的容许误差
 4 [X , N]=dichotomy(e,a,b);%二分法
 5 p0=0.5;%初始值
 6 N=15;%迭代次数
 7 [X1]=Newdon(p0,e,N);%Newton迭代法
 8 
 9 function [X , N]=dichotomy(deta,a,b)
10 % 函数dichotomy:二分法
11 %输入值:
12 %fun:方程函数
13 %deta:根的容许误差
14 %有根区间:[a,b]
15 %输出值
16 %X:求解到的方程的根
17 %N:总的迭代次数
18 N=1+fix(log2((b-a)/deta));%由公式7.2求得,取整数|X_N-X*|<=(b-a)/2^N<deta,求N
19 n=1;
20 f1=myfunction(a);
21 f2=myfunction(b);
22 if (f1*f2>0)
23     disp('根不在输入的区间里,请重新输入区间');
24 else
25     while n <= N
26     x=(a+b)/2;
27     if myfunction(a)*myfunction(x)>0
28         a=x;
29     else
30         b=x;
31     end
32     n=n+1;
33     end
34     X=x; 
35     fprintf('第%d次二分法求出的方程的根:\n',N);
36     fprintf('X=\n');
37     disp(X);
38 end
39 end
40 
41 function [P]=Newdon(p0,TOL,N)
42 %求方程组的解
43 %输入参数
44 %初始值:p0
45 %误差容限:TOL
46 %最大迭代次数:N
47 %输出参数:
48 %方程近似解:p
49 %或失败信息“Method failed”
50 format long;
51 n=1;%初始迭代次数
52 syms x;
53 while n<=N
54     if abs(subs(diff(myfunction(x)),x,p0))<TOL
55         P=p0;
56         break;
57     else
58         if subs(diff(myfunction(x),2),x,p0)==0
59             disp('Method failed');
60             break;
61         else
62             p=p0-myfunction(p0)/subs(diff(myfunction(x)),x,p0);
63             p=eval(p);%将exp的值转为小数值
64             if(abs(p-p0)<TOL)
65                 P=p;
66                 break;
67             else
68                 p0=p;
69             end
70         end
71     end
72     n=n+1;
73 end
74 % P=vpa(P,10);%将分数转为小数并保留8位小数
75 fprintf('第%d次NeWton迭代法求出的方程的根:\n',N);
76 fprintf('P=\n');
77 disp(P);
78 end
79 
80 function f=myfunction(x)
81 f=x*exp(x)-1;
82 end

5、求解结果

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【Rust】迷你grep发布时间:2022-07-18
下一篇:
MATLAB效率再议发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap