[問題] 解聯立(lsqnonlin)已回收

看板MATLAB作者 (1+.....)時間16年前 (2009/09/10 14:12), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
程式如下 clear all; clc; close all; format long; %========================================= global M u0 turns = 10000 ; A =1 ; radius = 4.5 * 10^-2 ; u0 = 4*pi*10-7 ; M = pi * radius^2 * A * turns ; %========================================= global X Y Z X = -0.13 ; Y = 0 ; Z = 0.13 ; %========================================= global Bx By Bz Data = [ -6.8231251e-004 ; 3.1970395e-004 ; 4.8637890e-004 ] Bx = Data(1,:) ; By = Data(2,:) ; Bz = Data(3,:) ; %========================================== %% optimization x0 = [ 0.5 0.5 0.5 1 1 1 ] * 10^-2 ; % x0 = [ a b c m n p ] % The initail value lb = [ -15 -15 -15 -1 -1 -1 ] * 10^-2 ; ub = [ 15 15 15 1 1 1 ] * 10^-2 ; options =optimset('LevenbergMarquardt','off') ; % The optimization . [ x , resnorm ,exitflag,output] = lsqnonlin(@fun,x0,lb,ub,options) ; %========================================== fun.m function f = fun(x0) global M u0 X Y Z Bx By Bz x = X ; y = Y ; z = Z ; a = x0(1) ; b = x0(2) ; c = x0(3) ; m = x0(4) ; n = x0(5) ; p = x0(6) ; % f = zeros(1,4) ; f(1) = u0 * M * ( 3 * (m * ( x-a ) + n * ( y-b ) + p * ( z-c )) * (x-a) / sqrt( (x-a)^2 + (y-b)^2 + (z-c)^2 )^5 - m / sqrt( (x-a)^2 + (y-b)^2 + (z-c)^2 )^3 ) / (4*pi) - Bx ; % f(2) = u0 * M * ( 3 * (m * ( x-a ) + n * ( y-b ) + p * ( z-c )) * (y-b) / sqrt( (x-a)^2 + (y-b)^2 + (z-c)^2 )^5 - n / sqrt( (x-a)^2 + (y-b)^2 + (z-c)^2 )^3 ) / (4*pi) - By ; % f(3) = u0 * M * ( 3 * (m * ( x-a ) + n * ( y-b ) + p * ( z-c )) * (z-c) / sqrt( (x-a)^2 + (y-b)^2 + (z-c)^2 )^5 - p / sqrt( (x-a)^2 + (y-b)^2 + (z-c)^2 )^3 ) / (4*pi) - Bz ; % f(4) = m^2 + n^2 +p^2 -1 ; % 我想請教的是在fun.m檔中的f(4) 因為他應該要是限制條件 也就是我希望他可以是 m^2+n^2+p^2=1 因為不知道語法這個限制要怎麼寫 所以我也把他當作objective function 最後出來的結果卻相差遙遠 變成 (-2.50e-9)^2+(-3.97e-9)^2+(3.94e-9)^2 極小於1 [0.0086 0.0052 0.0018 -2.50e-09 -3.97e-09 3.94e-09] PS 假設我已經知道 a = 0.02 b = 0.02 c = 0.02 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.241.2 ※ 編輯: arj20306 來自: 140.113.241.2 (09/10 18:08) ※ 編輯: arj20306 來自: 140.113.241.2 (09/10 18:09)
文章代碼(AID): #1Ag9ZUjG (MATLAB)
文章代碼(AID): #1Ag9ZUjG (MATLAB)