[問題]關於Solve的問題已回收
問題一
clc
clear all
A=[0.5 (3^0.5)/2;-(3^0.5)/2 0.5];B=[0.5;(3^0.5)/2];C=[1 0];D=0;E=[0 0;0 0];
syms x y
G=[x;y];
H=(A+G*C)^2;
F1='H1=0';F2='H2=0';F3='H3=0';F4='H4=0';
Fa=subs(F1,{'H1'},{H(1)});
Fb=subs(F2,{'H2'},{H(2)});
Fc=subs(F3,{'H3'},{H(3)});
Fd=subs(F4,{'H4'},{H(4)});
[x y]=solve('Fa','Fb','Fc','Fd','x','y')
執行後回傳
x =[ empty sym ]
y =[]
但改為[x y]=
solve('(1/2+x)^2+1/2*3^(1/2)*(-1/2*3^(1/2)+y)=0',
'(-1/2*3^(1/2)+y)*(1/2+x)-1/4*3^(1/2)+1/2*y = 0',
'1/2*(1/2+x)*3^(1/2)+1/4*3^(1/2) = 0',
'1/2*3^(1/2)*(-1/2*3^(1/2)+y)+1/4 = 0'
,'x','y')
執行回傳
x = -1
y = 1/3*3^(1/2)
問題是我的Fa已經是(1/2+x)^2+1/2*3^(1/2)*(-1/2*3^(1/2)+y)=0了耶
就算改成Fa=char(Fa) 從sym格式轉成char還是沒辦法回傳正確數值
問題二
G = [-1;1/3*3^(1/2)] 2x1矩陣
A = [0.5 (3^0.5)/2;-(3^0.5)/2 0.5] 2x2矩陣
C = [1 0] 1x2矩陣
用手算的話 (A+G*C)^2=[0 0;0 0]
當G的格式為 2x1 sym ans=(A+G*C)^2
G = ans =
-1 [ 0, 0]
1/3*3^(1/2) [ 0, 0]
但是G轉為double格式後 ans=(A+G*C)^2
G = ans =
-1.0000 1.0e-015 * 0.2213 0
0.5774 0 0.2213
看起來是誤差的問題..在double格式處理數據時,請問有什麼辦法可以解決類似這種問題呢
感謝各位!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.84.24
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章