matlab 怎麼在計算工程中始終保留6位有效數字呢 是「保留」 不是「顯示」

題目:

matlab 怎麼在計算工程中始終保留6位有效數字呢 是「保留」 不是「顯示」
用列主元高斯消去法 計算Ax=b A=[3.01,6.03,1.99;1.27,4.16,-1.23;0.987,-4.81,9.34];
b=[1;1;1]; 如何在計算過程中保證每次計算都保留6位有效數字呢

解答:

a=22.3456755;
>> fprintf('a = %.6g\n',a)%%保留6位有效數字
a = 22.3457
>> fprintf('a = %.6f\n',a)%%保留小數點後6位
a = 22.345675
再問: 這只是最終結果顯示爲6位有效數字 可不可以把A矩陣定義爲元素爲6位有效數字的類型呢 如何在計算過程中保證「每次」計算都保留6位有效數字呢 因爲有循環 我需要產生捨入誤差 vpa(A)我用過了 就是太麻煩 還會出現Conversion to double from sym is not possible.錯誤
再答: 兄弟,vpa是不行的,當它轉換爲double時又基本和原來一樣了。 而且這個沒有簡單方法,要實現估計得用字符串來處理,挺麻煩的,要是沒有必要的話就別這麼做了
再問: 若a是矩陣 怎麼用fprintf 用矩陣形式輸出保留6位有效數字的a呢
再答: fprintf只能往屏幕或文件里寫數據,不能寫到一個矩陣里,所以要用它的話得先寫到一個文件里然後再用fscanf讀取,fscanf可以把讀到的內容寫到矩陣里,也挺麻煩的,不過相對字符串處理可能會簡單點
再問: 直說吧 我在用列主元高斯消去法 做數值分析試驗作業 需要記錄6位有效數字 但軟體默認是short型 即小數點後4位 怎麼控制始終顯示6位有效數字呢 開頭用format命令嗎 用什麼參數合適呢
再答: format long 是顯示小數點後15位,你自己找到6位有效數字,沒有直接顯示6位的

添加新評論

暱稱
郵箱
網站