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

最好有详细一点的解释啊... 最好有详细一点的解释啊 展开
 我来答
宇逸ycl
推荐于2017-11-25 · TA获得超过4088个赞
知道大有可为答主
回答量:1589
采纳率:50%
帮助的人:1857万
展开全部
对于求平方根,变成方程模式为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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式