Format of a number

6 ビュー (過去 30 日間)
Sania Nizamani
Sania Nizamani 2024 年 2 月 3 日
編集済み: Walter Roberson 2024 年 2 月 29 日
How can write or convert the following number as 6.5192e-353 in MATLAB R2020a?
0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006519189212084746229776610798014015843782113571066818006946457413769773297894931346117308775461249994927327158400893029327734069232681151773609865266731521520054375903565338010423727080339452649084922482509849273285567974490982577103240751064484991178667240948437033727548535692375294238872288406967117777615757244524019518397825957547275970242462715854779648975320964429805929292231364557099949366197615233659670288768272563638001796519438847757405012852185872992289542013224335055773245806454313412733757091902202174306446270378638302539811037703945271596412702870934289523078309661834975228374662651691916691844575389604650486112874690677474198715593749538378138098722106119539312955520393459310616851829420920453027031099134852992191414078925320755874886661755203134433583041067365856197990407535151294849597815149662533367217765732422274124039425622331728003788521934226574093175659329930102209493669914675156094756791723604103890639375296094056543847670814774909966692607698458476102455720781979
Thanks in advance!
  3 件のコメント
Sania Nizamani
Sania Nizamani 2024 年 2 月 3 日
編集済み: Walter Roberson 2024 年 2 月 29 日
The number was the output of the following code of an iterative method called the Newton method. The number shown above is the absolute error at the last iteration:
clc;clear;close all;
% Set the precision to a large number using VPA digits(1000);
%sympref('FloatingPointOutput',true);
% Define your function and its derivative using VPA
f = @(x) vpa(sin(x)^2-x^2+1);
% Replace with your actual function
f_prime = @(x) vpa(sin(2*x)-2*x);
% Replace with the derivative of your function
% Initial guess
initial_guess = 6.5;
tolerance = 1e-300;
max_iterations = 200;
% Initialize variables
x = vpa(initial_guess);
tic;
% Perform iterations
for iteration = 1:max_iterations
% Compute the next estimate using the Newton-Raphson formula
x_next = x - f(x) / f_prime(x);
end
% Calculate the absolute error
AE = abs(x_next - x);
disp( 'Error is = ' + string(AE) + char(9) );
% Check if the change is smaller than the tolerance
if AE < tolerance
root = x_next;
return;
end
% Update the current estimate for the next iteration
x = x_next;
end
% If the loop reaches here, the method did not converge within max_iterations
error('Newton-Raphson method did not converge within the specified number of iterations');
Sania Nizamani
Sania Nizamani 2024 年 2 月 3 日
移動済み: Dyuman Joshi 2024 年 2 月 3 日
Dear Stephen23, I have attached the .m file. Please have a look. I look forward to hearing from you. Thank you.

サインインしてコメントする。

採用された回答

John D'Errico
John D'Errico 2024 年 2 月 3 日
移動済み: John D'Errico 2024 年 2 月 29 日
You need to understand that MATLAB can represent numbers as large as
realmax
ans = 1.7977e+308
and as small in magnitude as
realmin
ans = 2.2251e-308
as double precision numbers. Actually, it can go a little smaller than that, because of something called de-normalized numbers, but that is an aside that I won't go into. Regardless, the number you have there is too small by a large amount. It underflows to ZERO. As far as MATLAB is concerned, it does not exist as a double.
However, if you have created it, then you are using symbolic tools to create it. And symbolic floats can handle that with nary a problem. As such, if you have the number...
x = sym('0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006519189212084746229776610798014015843782113571066818006946457413769773297894931346117308775461249994927327158400893029327734069232681151773609865266731521520054375903565338010423727080339452649084922482509849273285567974490982577103240751064484991178667240948437033727548535692375294238872288406967117777615757244524019518397825957547275970242462715854779648975320964429805929292231364557099949366197615233659670288768272563638001796519438847757405012852185872992289542013224335055773245806454313412733757091902202174306446270378638302539811037703945271596412702870934289523078309661834975228374662651691916691844575389604650486112874690677474198715593749538378138098722106119539312955520393459310616851829420920453027031099134852992191414078925320755874886661755203134433583041067365856197990407535151294849597815149662533367217765732422274124039425622331728003788521934226574093175659329930102209493669914675156094756791723604103890639375296094056543847670814774909966692607698458476102455720781979')
x = 
6.519189212084746229776610798014e-353
As you can see, MATLAB has no problem expressing it as you ask. And if you want to see only 5 significant digits, then tell vpa to do so.
vpa(x,5)
ans = 
6.5192e-353
So just learn to use vpa.
  2 件のコメント
Sania Nizamani
Sania Nizamani 2024 年 2 月 3 日
移動済み: John D'Errico 2024 年 2 月 29 日
Thank you.
Stephen23
Stephen23 2024 年 2 月 29 日
Accepted, as the OP seemed satisfied.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeNumbers and Precision についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by