求matlab编程 用二分法和牛顿迭代法求根号a

最好有详细一点的解释啊

第1个回答  推荐于2017-11-25
对于求平方根,变成方程模式为f(x)=x^2-a,即求此方程的实根;
下面编写了两个function函数,可以直接调用。
二分法:
function x=sqrt_bisect(a)
f=@(x)x^2-a;
if a<0
warning(['负数不能求平方根']);
x=[];
elseif a==0|a==1
x=a;
else
if a<1
xa=a;xb=1;
else
xa=1.00;xb=a;
end
while abs(xa-xb)>1e-6
x=(xa+xb)/2;
if f(xb)*f(x)>0
xb=x;
elseif f(xa)*f(x)>0
xa=x;
else
break
end
end
end
x;

牛顿迭代法:
function x=sqrt_newton(a)
f=@(x)x^2-a;
df=diff(sym('x^2-a'));
if a<0
warning('负数没有实平方根');
x1=[];
elseif a==0;
x1=a;
else
x0=a;
x1=x0-f(x0)/subs(df,x0);
while abs(x1-x0)>1e-6
x0=x1;
x1=x0-f(x0)/subs(df,x0);
end
end
x=x1;

调用格式为:
sqrt_bisect(3)
ans =
1.7321
或者
sqrt_newton(2)
ans =
1.4142本回答被提问者采纳

求matlab编程 用二分法和牛顿迭代法求根号a
if a<0 warning(['负数不能求平方根']);x=[];elseif a==0|a==1 x=a;else if a<1 xa=a;xb=1;else xa=1.00;xb=a;end while abs(xa-xb)>1e-6 x=(xa+xb)\/2;if f(xb)*f(x)>0 xb=x;elseif f(xa)*f(x)>0 xa=x;else break end end end x;牛顿迭代法:functio...

求用MATLAB编制方程求根的二分法和Newton法的 Matlab 程序!!!谢谢...
disp(['迭代次数:',num2str(ii),'次'])牛顿迭代法求解:在方程f(x)=0有实数根的情况下,若能够将方程等价地转化成x=g(x)的形式,然后取一个初始值x0代入x=g(x)的右端,算得x1=g(x0),再计算x2=g(x1),这样依次类推 x(k+1)=g(x(k))可以得到一个序列xk,通常称g(x)为迭代函...

求牛顿迭代法求方程根的matlab程序?
首先,我们以方程f(x,y)= sin(x^2+y^2)*exp(-0.1*(x^2+y^2+x*y+2*x))为例。在-2≤x≤2,-2≤y≤2区间内求其极值点和极值。主程序负责调用牛顿法函数进行计算。运行结果显示了极值点和极值。接着,我们处理第二个例子,方程f(x,y)= 4*(x-y)-x^2-y^2。在-2≤x≤2,...

怎么用matlab求方程的根?
用matlab迭代法求方程的根,其求解思路是这样的:1、创建迭代公式,即 x(k+1)=sqrt(10\/x(k)-4*x(k))2、确定初值,x(1)=1.5 3、使用while循环语句,进行迭代 4、当x(k+1)-x(k)<ε=1e-5,则x(k)为方程的根。实现代码:x(1)=1.5 k=1;while k<10000 x(k+1)=sqrt(10\/x...

MATLAB非线性方程求解:二分法、不动点、牛顿法、弦截法
1. **二分法**:收敛速度慢,适用于连续函数,精度有限,但逻辑清晰,易于编程,不适用于复根和重根计算。2. **不动点迭代法**:依赖于迭代方程的构造,收敛性需满足特定条件,迭代公式选择至关重要,适用于局部收敛问题。3. **牛顿法**:收敛速度快,稳定性高,精度高,但对函数可导性有要求,...

matlab牛顿迭代法求方程的根,并画出方程及方正的根
用牛顿迭代法,求导x=0.29644 >> x0=0;tol=1e-6;x1=newton(x0,tol)n = 6x1 = 0.29644 >>syms x,ezplot(sin(4*x^2-4*x+1)-(3\/4)*x-1\/(10*x+3)+9\/40),grid on>>hold on,plot(double(x1),0,'p'),text(0.5,1,'Zeros Point')代码见附件 图形见下图 ...

求平方根问题 (C++ 实现)
以下是用二分法和牛顿迭代法来求解正数平方根的方法。二分法:在此,我们考虑了整数和小数的情况,二分法的原理这里不再赘述。若中间值的平方与目标值在误差范围内,则返回结果;否则,根据中间值与目标值的大小关系调整左右区间的端点。需要注意的是,mid的计算方式和判断条件如下:推荐使用这两种方式的原因...

跪求用牛顿法求方程近似根 的Matlab 程序
function s=NewtonIterate(x,eps)Newton迭代法求解非线性方程组的解 x为迭代初值,eps为允许误差 if nargin==1 eps=1.0e-6;elseif nargin<1 return end x1=fx1(x); %非线性方程组函数fx1.m x2=-dfx1(x); %非线性方程组的导数函数dfx1.m x0=x2\\x1';while norm(x0)>=eps x...

分别用二分法和牛顿迭代法求解方程x3 – 3x – 1 = 0在x = 2附近的实...
编写程序,分别用二分法和牛顿迭代法求解方程x3 – 3x – 1 = 0在x = 2附近的实根,要求计算精确到小数点后七位数字为止,并将求出的近似结果与理论值2cos20 相比较,二分法的初始迭代区间为 [1, 3]。任取两点x1和x2,判断(x1,x2)区间内有无一个实根。如果f(x1)和f(x2)符号相反,说明(...

如何利用matlab求解方程
求解方程有两种一种数值解一种解析解 简单的可以直接用 solve(函数,变量)复杂的用:二分法,牛顿迭代法,割线法 求数值解

相似回答