查看: 902|回復: 16|關注: 0
打印 上一主題 下一主題

[已解決] 解線性方程組,解為什么不精確

[復制鏈接]

新手

23 麥片

財富積分


050


10

主題

47

帖子

0

最佳答案
跳轉到指定樓層
1#
clear
>> A=[2 3 4;3 5 2;4 3 30];b=[6;5;32];
>> x=A\b

x =

-13.000000000000064
   8.000000000000036
   2.000000000000005

>> x=inv(A)*b

x =

-13.000000000000142
   8.000000000000057
   1.999999999999996
書上正確答案是x=-13.0000
                            8.0000
                            2.0000

回復主題 已獲打賞: 0 積分

舉報

新手

23 麥片

財富積分


050


10

主題

47

帖子

0

最佳答案
2#
 樓主| 發表于 2020-1-21 19:17:53 | 只看該作者
求出的解為什么不精確,怎么求正確精確解
回復此樓 已獲打賞: 0 積分

舉報

MATLAB 基礎討論
版塊優秀回答者

入門

491 麥片

財富積分


50500


1

主題

156

帖子

61

最佳答案
  • 關注者: 6
3#
發表于 2020-1-21 20:25:28 | 只看該作者
本帖最后由 gopher 于 2020-1-21 20:26 編輯

你好,以下是個人理解。

數值計算都是有誤差的,這是因為計算機是基于二進制進行運算的。
對于有些十進制數,二進制無法精確表示,所以會產生誤差。

另外,樓主這個結果誤差已經很小了,個人認為可以忽略不計。
附件是一個有趣的例子。

數值計算的可靠性.pdf

1.65 MB, 下載次數: 7

回復此樓 已獲打賞: 0 積分

舉報

新手

23 麥片

財富積分


050


10

主題

47

帖子

0

最佳答案
4#
 樓主| 發表于 2020-1-21 20:37:46 | 只看該作者
gopher 發表于 2020-1-21 20:25
你好,以下是個人理解。

數值計算都是有誤差的,這是因為計算機是基于二進制進行運算的。

謝謝你,但是正確答案是整數解,正常應該求出的是整數解
回復此樓 已獲打賞: 0 積分

舉報

MATLAB 基礎討論
版塊優秀回答者

入門

491 麥片

財富積分


50500


1

主題

156

帖子

61

最佳答案
  • 關注者: 6
5#
發表于 2020-1-21 21:01:02 | 只看該作者 |此回復為最佳答案
本帖最后由 gopher 于 2020-1-21 21:13 編輯
nanjie 發表于 2020-1-21 20:37
謝謝你,但是正確答案是整數解,正常應該求出的是整數解

雖然你的矩陣和向量都是整數,可是計算的時候需要求逆。
求逆的過程會產生小數,這個時候就已經不是精確值了。
二進制的這種截斷誤差常見于十進制的小數,比如 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.9 二進制只能精確表示其中的 0.5。

  1. >> A=[2 3 4;3 5 2;4 3 30];
  2. >> inv(A)

  3. ans =

  4.   Column 1

  5.          -72.0000000000003
  6.           41.0000000000002
  7.           5.50000000000002

  8.   Column 2

  9.           39.0000000000002
  10.          -22.0000000000001
  11.          -3.00000000000001

  12.   Column 3

  13.           7.00000000000003
  14.          -4.00000000000002
  15.         -0.500000000000003
復制代碼


回復此樓 已獲打賞: 0 積分

舉報

新手

23 麥片

財富積分


050


10

主題

47

帖子

0

最佳答案
6#
 樓主| 發表于 2020-1-21 21:21:25 | 只看該作者
gopher 發表于 2020-1-21 21:01
雖然你的矩陣和向量都是整數,可是計算的時候需要求逆。
求逆的過程會產生小數,這個時候就已經不是精確值 ...

那有辦法嗎
回復此樓 已獲打賞: 0 積分

舉報

MATLAB 基礎討論
版塊優秀回答者

入門

491 麥片

財富積分


50500


1

主題

156

帖子

61

最佳答案
  • 關注者: 6
7#
發表于 2020-1-21 21:23:10 | 只看該作者

可能符號計算能給出精確解,但是我不太了解 符號運算
回復此樓 已獲打賞: 0 積分

舉報

新手

23 麥片

財富積分


050


10

主題

47

帖子

0

最佳答案
8#
 樓主| 發表于 2020-1-21 21:33:12 | 只看該作者
gopher 發表于 2020-1-21 21:23
可能符號計算能給出精確解,但是我不太了解 符號運算。

謝謝你,:lol特別感謝你,再問一下,畫好圖形能不能縮小放大某一坐標軸
回復此樓 已獲打賞: 0 積分

舉報

新手

23 麥片

財富積分


050


10

主題

47

帖子

0

最佳答案
9#
 樓主| 發表于 2020-1-21 21:36:13 | 只看該作者
nanjie 發表于 2020-1-21 21:33
謝謝你,特別感謝你,再問一下,畫好圖形能不能縮小放大某一坐標軸

這個圖像x軸y軸能不能[-1,1]
回復此樓 已獲打賞: 0 積分

舉報

MATLAB 基礎討論
版塊優秀回答者

入門

491 麥片

財富積分


50500


1

主題

156

帖子

61

最佳答案
  • 關注者: 6
10#
發表于 2020-1-21 21:40:03 | 只看該作者
nanjie 發表于 2020-1-21 21:36
這個圖像x軸y軸能不能[-1,1]

要控制坐標軸的整體范圍,可以在畫圖的時候加上以下命令
  1. axis([-1 1 -1 1 0 1]);
復制代碼

或者
  1. xlim([-1 1]);
  2. ylim([-1 1]);
  3. zlim([0 1]);
復制代碼
回復此樓 已獲打賞: 0 積分

舉報

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

關閉

站長推薦上一條 /4 下一條

快速回復 返回頂部 返回列表
哪一款德州扑克还能玩 云南麻将下载安装 短线买什么股票 九游大厅炸金花神器软件 捕鱼欢乐炸破解版 股票指数期货 神来棋牌唯一正式版 斗鱼网一尾中特 股票k线图基本知识 容易赚钱的网游 股票方面的书籍推荐 淘金阁棋牌游戏? 吉利平肖平码论坛网址 星悦陕西麻将官方下载 赚钱手机网游排行榜 明日股市点评 富贵捕鱼手机下载