MATLAB 板


LINE

※ 引述《pto2 (蔡少)》之銘言: : 小弟我有小問題想請教各位先進,就是我有三個方程式分別為: : a1*x+b1*y+c1*z+d1 = 0 ..............(1) : a2*x^2+b2*y^2+c2*z^2+d2 = 0 ........(2) : a3*x^2+b3*y^2+c3*z^2+d3 = 0 ........(3) : 其中a1 a2 a3 b1 b2 b3 c1 c2 c3 d1 d2 d3 為常數 : 每次我用 solve 解就會當掉,請問有什麼好方法來求解這樣的問題嗎?? 我寫了個最佳化的程式solve1.m來解,需要猜一個起始值, 測試程式的結果是,起始值假如和解差太遠(例如解是1,2,3,起始值猜一千之類的), 或方程組本身無實數解,就無法得解。 此程式只能用來解以上方程式係數都為實數的實數解, 假如係數有複數,或是需要複數解的話,可能要另外想辦法了... 先解釋程式中出現的代號好了, 輸入的A,B是係數矩陣,X0是起始值,亦即: A=[a1 b1 c1 a2 b2 c2 a3 b3 c3] B=[d1 d2 d3] X0=[x起始值 y起始值 z起始值] 輸出的X是求得的近似解,sum是三個等式左邊的平方和,亦即 X=[x y z] sum=((1)式等號左方)^2+((2)式等號左方)^2+((3)式等號左方)^2 跑程式時把A,B,X0設好,然後直接用[X sum]=solve1(A,B,X0)來跑, 我選擇把sum輸出的原因是檢驗程式有沒有跑成功, 假如sum很接近零就沒錯,假如sum很大的話,換個X0試試看吧! 至於程式裡面的myfun是solve1的副函數, 他的目的是算出三個等式左方的平方和,因為係數和解都是實數, 平方一定大於等於零,因此把三個平方相加,所得的數值也大於等於零, 只要利用fminunc求最小值,那個最小值就是零了,就可以得到解。 myfun的輸出中fun是三個等式左方的平方和,而grad是fun的梯度, 因為用梯度會讓fminunc跑得更快(我測試的結果是一眨眼就好了) %%%%%以下是程式solve1.m內容%%%%% function [X sum] = solve1(A,B,X0) options = optimset('GradObj','on','LargeScale','off','TolFun',eps,'TolX',eps); [X sum] = fminunc(@(X) myfun(X,A,B), X0, options); return function [fun grad] = myfun(X,A,B) sum1 = A(1,:)*X+B(1); sum2 = A(2,:)*(X.^2)+B(2); sum3 = A(3,:)*(X.^2)+B(3); fun = sum1^2 + sum2^2 + sum3^2; grad = zeros(3,1); for i = 1:3, grad(i) = 2*A(1,i)*sum1 + 4*A(2,i)*X(i)*sum2 + 4*A(3,i)*X(i)*sum3; end return %%%%%程式結束%%%%% 不知道這樣有沒有解決原po的問題, 我是初學MATLAB的人啊,寫的程式可能也不是很好... --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 128.42.158.2 ※ 編輯: evanzxcv 來自: 128.42.158.26 (04/21 22:42)
1F:推 pto2:感謝~~我試試看 04/22 14:05







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP