making sqrt file without using sqrt function

4 Comments

This looks like some kind of a puzzle. If one is not good at math, are they allowed to bend the rules cleverly (without using sqrt() and ^(1/2))? Need more info.
For scalar inputs, I suppose you could always just do it with fzero() or fsolve().
imnotclever(25)
ans = 5
imnotclever(-16)
ans = 0.0000 + 4.0000i
imnotclever(37)
ans = 6.0828
function out = imnotclever(x)
xsign = sign(x);
x = abs(x);
f = @(y) y^2 - x;
out = fzero(f,x);
if xsign < 0
out = 1i*out;
end
end
Then again, if they want to teach numerical methods, why would they let you use fzero() either?
I'm sure someone has a more elegant way to do it, but I'm not feeling particularly clever.
This sounds like a homework assignment. If it is, show us the code you've written to try to solve the problem and ask a specific question about where you're having difficulty and we may be able to provide some guidance.
If you aren't sure where to start because you're not familiar with how to write MATLAB code, I suggest you start with the free MATLAB Onramp tutorial to quickly learn the essentials of MATLAB.
If you aren't sure where to start because you're not familiar with the mathematics you'll need to solve the problem, I recommend asking your professor and/or teaching assistant for help.

Sign in to comment.

Answers (2)

Each step iteration improves the precision, so with 9 digits as the target precision, you can take 9 iterations.
Hi @zot
Edit: Since you didn't provide more info, then I'd suggest Newton–Raphson method.
From the definition
it can be rearranged to
to repeat the iteration until the required accuracy is achieved. You can modify Newton–Raphson code for calculating the square root of a real number. Also, address the situations when the initial guess is very far from the real solution (usually happens for very large real number).
The code should generate result like this:
format long g
fun = inline('x^2 - 101', 'x');
x0 = 5; % initial guess
TolX = 1e-9;
[x, err, xx] = modNRsqrt(fun, x0, TolX)
x =
10.0498756211209
err =
0
xx = 1×7
5 12.6 10.3079365079365 10.0531059195057 10.0498761401062 10.0498756211209 10.0498756211209

Categories

Find more on Mathematics in Help Center and File Exchange

Tags

Asked:

zot
on 9 Apr 2023

Edited:

on 10 Apr 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!