matlab - 尝试创建一个 MATLAB 函数,包括一个 while 循环,用于计算一个值的平方根
问题描述
我正在尝试使用以下公式创建一个计算任何正数的平方根的 MATLAB 函数:
x(n+1) = (a + x(n)*x(n-1))/(x(n)+x(n-1))
并且还告诉我函数中的 while 循环终止时的 n 值。
当我输入 16 和 100 时,我设法创建了一个起初似乎可以正常工作的函数。但是,当我输入根不是整数的值时,该函数无法产生任何解决方案。
function [sqa, nitr] = mySqrt(a)
n = 0;
sqa = (a+(n)*(n-1))/((n)+(n-1));
while abs(sqa - n) >= eps(10*a)
n = n + 1;
if n == 0
sqa = 1;
nitr = 0;
elseif n == 1
sqa = a;
nitr = 1;
else
sqa = (a+(n)*(n-1))/((n)+(n-1))
nitr = n;
end
end
>> [sqa, nitr] = mySqrt(100)
sqa =
10
nitr =
10
>> [sqa, nitr] = mySqrt(5)
当我输入一个根不是整数的值时,该函数没有完成,我必须手动结束它。我一直无法弄清楚这其中的原因。
解决方案
问题是 n 只是一个计数器,而不是结果。试试这个(我在手机上输入这个,请原谅一个小错别字)
function [x2, iteration] = mySqrt(a)
x1 = 1;
x2 = 1;
iteration = 0;
while abs( x2*x2 - a ) > 10*a*eps
iteration = iteration + 1;
x0 = x1;
x1 = x2;
x2 = ( a + x1*x2 ) / ( x1+x2 );
end
end
推荐阅读
- excel - CopyFromRecordset 错误地将单元格格式设置为日期?
- javascript - 如何在 React-Native 中格式化 ISO 日期
- javascript - 动态 og:带有原始页面变量的图像
- reactjs - 我们如何组织 Redux 中返回克隆嵌套状态的 reducer 函数?
- java - JdbcTemplate 返回空列表
- javascript - 在 JavaScript 中创建小计计算器(在模型中)
- java - 具有有效 Firebase 令牌的 Firebase 身份验证不受信任的 Java 客户端
- javascript - 根据最低值更改索引
- java - 如何修复 Eclipse IDE 中的 Java 错误“未解决的编译问题”?
- c# - Unity:为什么我不能自动选择我的输入字段?