how can I set the decimal digits of all coefficients at one time when outputting a polynomial f?
    5 views (last 30 days)
  
       Show older comments
    
    marvellous
 on 27 Oct 2023
  
    
    
    
    
    Commented: marvellous
 on 27 Oct 2023
            In Windows 10, MATLAB R2018a, I try to use fprintf to output a polynomial f, for example, 5.327416*x^2+3.660092*x+1.5799301. How can I set the decimal digits(e.g. 3) of all coefficients at one time instead of setting them one by one? That is, I want the result to be "5.327*x^2+3.660*x+1.580". Anyone can help me? Thanks!
0 Comments
Accepted Answer
  Walter Roberson
      
      
 on 27 Oct 2023
         P = [5.327416, -3.660092, 1.5799301]
 %method 1
 vpa(poly2sym(P, sym('x')),4)
 %method 2
 poly2sym(round(sym(P),3))
 %method 3
 fmt = [repmat('%.3f*x^%d + ', 1, length(P)-1), '%.3f\n'];
 temp = reshape([P; length(P)-1:-1:0], 1, []);
 fprintf(fmt, temp(1:end-1));
If you want the + -3.660 to instead show up as - 3.660 then it takes more work.
3 Comments
  Dyuman Joshi
      
      
 on 27 Oct 2023
				
      Edited: Dyuman Joshi
      
      
 on 27 Oct 2023
  
			P = [5.327416, -3.660092, 1.5799301]
y = vpa(poly2sym(P, sym('x')),4);
disp(y)
z = char(y);
fprintf('%s', z)
More Answers (1)
  Sam Chak
      
      
 on 27 Oct 2023
        a = 5.327416;
b = 3.660092;
c = 1.5799301;
fprintf('f(x) = %.3f*x^2 + %.3f*x + %.3f', a, b, c)
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





