How can I solve this following problem? (overcome * mark)

2 次查看(过去 30 天)
My code is :
%Start
clear all
clc
%Input required values
fprintf('***********************Gauss Jodern Elimination Method*************************\n')
fprintf('***************<strong>Code has been created by Pulak(181201)</strong>***********************\n')
format rational
n=input('How many variables?: ');
A=input('coefficient matrix: ');
for i=1:n
for j=1:n
a(i,j)=A(i,j);
end
end
AB=a;
B=input('Constant matrix: ');
for i=1:n
b(i)=B(i);
end
disp('The given equations in matrix form is or Augmented Matrix:')
AB=[A B]
%checking the ranks
%Finding determinant
dett = det(a);
%Check Elemination
if dett == 0
print('This system unsolvable because det(C) = 0 ')
return
else
if rank(A)==rank(AB)
disp('Unique solution exit')
else
disp('Unique solution doesnot exit')
end
j=1;
for i = 1:n-1
if (i==j)
if (AB(i,j)==0)
for q=1:n-1
if (AB(i+q,j)~=0)
c = AB(i,:);
AB(i,:)= AB(i+q,:);
AB(i+q,:) = c;
break
end
end
end
AB(i,:)= (1/AB(i,j))* AB(i,:);
for k=i+1:n
AB(k,:)=(-AB(k,j)* AB(i,:)) + AB(k,:);
end
end
j=j+1;
end
AB(n,:)= (1/AB(n,n))* AB(n,:);
for j=n:-1:2
for i=j-1:-1:1
AB(i,:)=AB(i,:)-AB(j,:)*(AB(i,j))
end
end
disp('The final Matrix is:')
AB
for s=1:n
x(s)=AB(s,n+1)
end
for i=1:n
ans=x(i);
fprintf('\nThe %d-th solution is x(%d)= %.6f',i,i,ans)
end
fprintf('\n\n')
fprintf('***********************<strong>Code has been created by Pulak(181201)</strong>***********************\n')
end
but in the ouput:
***********************Gauss Jodern Elimination Method*************************
***************Code has been created by Pulak(181201)***********************
How many variables?: 4
coefficient matrix: [1 -0.7 0.3 0.5;-6 8 -1 -4;3 1 4 11;5 -9 -2 4]
Constant matrix: [0.2;5;2;7]
The given equations in matrix form is or Augmented Matrix:
AB =
1 -7/10 3/10 1/2 1/5
-6 8 -1 -4 5
3 1 4 11 2
5 -9 -2 4 7
Unique solution exit
The final Matrix is:
AB =
1 * 0 * 3531/923
0 1 0 * 1091/333
0 * 1 * -2063/324
0 * 0 1 1067/923
The 1-th solution is x(1)= 3.825569
The 2-th solution is x(2)= 3.276273
The 3-th solution is x(3)= -6.367281
The 4-th solution is x(4)= 1.156013
***********************Code has been created by Pulak(181201)***********************
My question is why * is seen instead of 0? And how can I overcome this problem?

采纳的回答

Steven Lord
Steven Lord 2021-1-25
From the help text for the format function:
format RAT Approximation by ratio of small integers. Numbers
with a large numerator or large denominator are
replaced by *.
Most likely this means those elements are small (but non-zero) numbers that have large denominators.
format rational
x = [1, 1e-10]
x =
1 *
  2 个评论
Steven Lord
Steven Lord 2021-1-25
Some options:
Replace those small values with 0.
Replace them with close approximations that have small denominators.
Display your data using a different display format.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Elementary Math 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by