我是靠谱客的博主 活泼宝贝,最近开发中收集的这篇文章主要介绍用Matlab编写二分法和Newton迭代法求解非线性函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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、求解结果

 

 

转载于:https://www.cnblogs.com/xtu-wlf1212/p/10055697.html

最后

以上就是活泼宝贝为你收集整理的用Matlab编写二分法和Newton迭代法求解非线性函数的全部内容,希望文章能够帮你解决用Matlab编写二分法和Newton迭代法求解非线性函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部