[問題]關於Solve的問題已回收

看板MATLAB作者 (FuncSurface)時間16年前 (2009/04/15 02:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
問題一 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
文章代碼(AID): #19vDQrGK (MATLAB)
文章代碼(AID): #19vDQrGK (MATLAB)