Matlab非线性方程求解
2017-08-05 15:54
567 查看
Matlab求解
非线性方程求解
最近准备数学竞赛需要对Matlab重新进行一个系统的学习,于是将在学习中学到的东西以博客的形式记录一下,这里介绍的是Matlab中的非线性方程求解
概论
对Matlab非线性方程求解的概括
代码演示
Matlab符号法
fsolve
-
fzero
-
roots
-
solve
-
Newton法
-
这里的newton算法:
-
f函数:
-
df函数:
-
迭代法
迭代算法:
-
二分法
二分算法:
-
弦位法
弦位算法:
-
代码下载地址:http://download.csdn.net/detail/qq_34861102/9922160
原文地址:http://blog.csdn.net/qq_34861102/article/details/76724026
非线性方程求解
最近准备数学竞赛需要对Matlab重新进行一个系统的学习,于是将在学习中学到的东西以博客的形式记录一下,这里介绍的是Matlab中的非线性方程求解
概论
对Matlab非线性方程求解的概括
代码演示
Matlab符号法
fsolve
-
x0 = [-5;-5]; options = optimset('Display','iter'); [x,fval] = fsolve(@myfunction,x0,options); %function F = myfunction(x) %F = [2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))];
fzero
-
x = fzero('x^4+5*x^2+3*x-20',-2);
roots
-
[x] = roots([1 0 5 3 -20]);
solve
-
%方程组 a = 'x^2 + sqrt(5)*x = -1'; b = 'x + 3*z^2 = 4'; c = 'y*z + 1 = 0'; [u,v,w] = solve(a,b,c); vpa(u,6) vpa(v,6) vpa(w,6) %方程 [x] = solve('x^3-x-1=0'); vpa(x,6)
Newton法
-
newton('f','df',1.2,10^(-6),10)
这里的newton算法:
-
function [p1,err,k,y] = newton(f,df,p0,delta,max1) p0,feval(f,p0) for k = 1:max1 p1 = p0 - feval(f,p0)/feval(df,p0); err = abs(p1 - p0); p0 = p1; p1,err,k,y = feval(f,p1) if(err<delta)|(y == 0) break end p1,err,k,y = feval(f,p1) end
f函数:
-
function y = f(x) y = x^3 - 3*x + 2;
df函数:
-
function y = df(x) y = 3*x^2 - 3;
迭代法
迭代算法:
-
function [p0,k,err,p] = fixpt(g,p0,tol,max1) P(1) = p0; for k = 2:max1 P(k) = feval(g,P(k-1)); k,err = abs(P(k) - P(k-1)) p = P(k); if (err < tol) break; end; if k == max1 disp('maximum number of iteration exceeded'); end end P
二分法
二分算法:
-
function [c,err,yc] = bisect(f,a,b,delta) if nargin < 4 delta = 1e-10;end ya = feval(f,a); yb = feval(f,b); if yb == 0 c = b; return end if ya*yb>0 disp('(a,b)不是有根区间'); return end max1 = 1 + round((log(b-a)-log(delta))/log(2)); for k = 1:max1 c = (a+b)/2; yc = feval(f,c); if yc == 0 a = c; b = c; break; elseif yb*yc > 0 b = c; yb = yc; else a = c; ya = c; end if(b-a) < delta break end end k = (a+b)/2; c = (a+b)/2; err = abs(b-a); yc = feval(f,c);
弦位法
弦位算法:
-
function [p1,err,k,y] = secant(f,p0,p1,delta,max1) p0,p1,feval(f,p0),feval(f,p1),k=0, for k = 1:max1 p2 = p1 - feval(f,p1)*(p1-p0)/(feval(f,p1)-feval(f,p0)); err = abs(p2 - p1); p0 = p1; p1 = p2; p1,err,k,y=feval(f,p1) if(err < delta) | (y == 0) break end end
代码下载地址:http://download.csdn.net/detail/qq_34861102/9922160
原文地址:http://blog.csdn.net/qq_34861102/article/details/76724026
相关文章推荐
- matlab实现牛顿迭代法求解非线性方程组
- matlab中求解由符号表达式组成的非线性方程组
- 使用matlab进行非线性方程组求解
- matlab实现牛顿迭代法求解非线性方程组
- 牛顿迭代法解非线性方程组(MATLAB版)
- 追赶法求解三对角线性方程组的MATLAB程序
- matlab中各种范数求解norm
- Matlab和LINGO求解线性规划问题
- 应用Matlab求解二阶偏微分方程的基…
- 【数模学习】Matlab 符号微积分 计算微分、雅可比矩阵、不定积分与定积分、求解微分方程
- 线性规划问题的matlab求解
- matlab求解非线性约束+线性规划+超定欠定普通方程组等优化问题
- 利用Matlab求解Laplace方程
- 利用matlab的PDE工具箱求解Neumann边界的Poisson方程之2
- fsolve函数求解非线性方程
- 使用matlab用优化后的梯度下降法求解达最小值时参数
- 基于matlab的Guass-Seidel(高斯--赛德尔) 迭代法求解线性方程组
- Matlab 0-1规划求解八皇后问题
- matlab 图形型心求解
- 数值分析 追赶法求解三对角线性方程组 MATLAB实现