1樓:匿名使用者
建立 myfun.m 檔案
function f = myfun(x,a)
e = a(1);
i = a(2);
r0 = a(3);
r1 = a(4);
t = a(5);
a = a(6);
v = a(7);
rho = a(8);
f = [ (t - rho * a * v^2) *
sin(x(3)) * x(1) - (t * cos(x(3)) + rho * a * v^2 - rho * a * v^2 *
cos(x(3))) * x(2) - e*i/(r0 + r1);
(1/3) * (t - rho * a * v^2) *
sin(x(3)) * x(1)^3 - (1/2) * (t * cos(x(3)) + rho * a * v^2 - rho *
a * v^2 * cos(x(3))) * x(2) * x(1)^2 - e* i * x(2);
(t - rho * a * v^2) * sin(x(3)) *
x(1)^2 - (t * cos(x(3)) + rho * a * v^2 - rho * a * v^2 *
cos(x(3))) * x(2) * x(1) - e* i * x(3)];
建立乙個執行檔案
clcclear
a = zeros(8);
display('# pls input the known
parameters: #')
a(1) = input('e = ');
a(2) = input('i = ');
a(3) = input('r0 = ');
a(4) = input('r1 = ');
a(5) = input('t = ');
a(6) = input('a = ');
a(7) = input('v = ');
a(8) = input('rho = ');
display('# pls input the initial
point: #')
x0 = zeros(3);
% make a
starting guess at the solution
x0(1) = input('x1 = ');
x0(2) = input('y1 = ');
x0(3) = input('phi = ');
options =
optimset('display','iter');
% option to display
output
[x,fval] = fsolve(@(x)
myfun(x,a),x0,options)
% call solver
執行,輸入已知的幾個引數,再輸入初始搜尋點,即可!
2樓:代專索
你給的條件不夠的,無法解出這麼多變數啊
還有你是要做符號解還是數值解啊
用matlab解多元非線性方程組,求大神
3樓:僅僅是追憶
首先定義函式:
function f=fx(x)
f(1)=3*x(1)-cos(x(2)*x(3))-0.5;
f(2)=x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
f(3)=exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3;
>> x=fsolve(@fx,[1,1,1])最後求得
x =0.5000 0.0000 -0.5236
4樓:匿名使用者
很高興為您解答,首先定義函式myfun
function f = myfun(x)f = [3*x(1)-cos(x(2)*x(3))-0.5;
x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3];
前面這段函式定義在myfun.m檔案中
主程式如下:
[x,fval]=fsolve(@myfun,[0,0,0]);
x(1)
x(2)
x(3)
最後求得
x(1)=0.5000
x(2)=0.0000
x(3)=-0.5236
滿意請採納回答,謝謝!
5樓:匿名使用者
建立 myfun.m 檔案
function f = myfun(x,a)
e = a(1);
i = a(2);
r0 = a(3);
r1 = a(4);
t = a(5);
a = a(6);
v = a(7);
rho = a(8);
f = [ (t - rho * a * v^2) *
sin(x(3)) * x(1) - (t * cos(x(3)) + rho * a * v^2 - rho * a * v^2 *
cos(x(3))) * x(2) - e*i/(r0 + r1);
(1/3) * (t - rho * a * v^2) *
sin(x(3)) * x(1)^3 - (1/2) * (t * cos(x(3)) + rho * a * v^2 - rho *
a * v^2 * cos(x(3))) * x(2) * x(1)^2 - e* i * x(2);
(t - rho * a * v^2) * sin(x(3)) *
x(1)^2 - (t * cos(x(3)) + rho * a * v^2 - rho * a * v^2 *
cos(x(3))) * x(2) * x(1) - e* i * x(3)];
建立乙個執行檔案
clcclear
a = zeros(8);
display('# pls input the known
parameters: #')
a(1) = input('e = ');
a(2) = input('i = ');
a(3) = input('r0 = ');
a(4) = input('r1 = ');
a(5) = input('t = ');
a(6) = input('a = ');
a(7) = input('v = ');
a(8) = input('rho = ');
display('# pls input the initial
point: #')
x0 = zeros(3);
% make a
starting guess at the solution
x0(1) = input('x1 = ');
x0(2) = input('y1 = ');
x0(3) = input('phi = ');
options =
optimset('display','iter');
% option to display
output
[x,fval] = fsolve(@(x)
myfun(x,a),x0,options)
% call solver
執行,輸入已知的幾個引數,再輸入初始搜尋點,即可!
6樓:匿名使用者
fx.m
function f=fx(x)
f(1)=3*x(1)-cos(x(2)*x(3))-0.5;
f(2)=x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
f(3)=exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3;
>> x=fsolve(@fx,[1,1,1])x =0.5000 0.0000 -0.5236
7樓:瑞秋老大
1.首先定義函式myfun
function f = myfun(x)
f = [3*x(1)-cos(x(2)*x(3))-0.5;
x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3];
2.前面這段函式定義在myfun.m檔案中。
主程式如下:
[x,fval]=fsolve(@myfun,[0,0,0]);
x(1)
x(2)
x(3)
3.最後求得:
x(1)=0.5000
x(2)=0.0000
x(3)=-0.5236
擴充套件資料
matlab的簡介
matlab是美國mathworks公司出品的商業數學軟體,用於演算法開發、資料視覺化、資料分析以及數值計算的高階技術計算語言和互動式環境,主要包括matlab和simulink兩大部分。
非線性方程組數值解法
20世紀60年代中期以後,發展了兩種求解非線性方程組(1)的新方法。一種稱為區間迭代法或稱區間牛頓法,它用區間變數代替點變數進行區間迭代,每迭代一步都可判斷在所給區間解的存在惟一性或者是無解。
如何用matlab解多元非線性方程組?
8樓:謊言如此動聽
使用solve函式。
舉個例子,解非線性方程組
e69da5e887aa62616964757a686964616f31333365633837 x^2+y^3=10 x^3-y^2=1 其中x,y為方程組的未知量 在matlab的命名視窗中輸入:
syms x y [x y]=solve('x^2+y=10','x^2-y^2=1','x','y') 即可 輸出計算結果為:
x = (37^(1/2)/2 + 21/2)^(1/2) (21/2 - 37^(1/2)/2)^(1/2) -(21/2 - 1/2*37^(1/2))^(1/2) -(1/2*37^(1/2) + 21/2)^(1/2)
y = - 37^(1/2)/2 - 1/2 37^(1/2)/2 - 1/2 37^(1/2)/2 - 1/2 - 37^(1/2)/2 - 1/2
具體solve函式的使用方法,通過輸入help solve來學習。
20世紀60年代中期以後,發展了兩種求解非線性方程組(1)的新方法。
一種稱為區間迭代法或稱區間牛頓法,它用區間變數代替點變數進行區間迭代,每迭代一步都可判斷在所給區間解的存在惟一性或者是無解。這是區間迭代法的主要優點,其缺點是計算量大。
另一種方法稱為不動點演算法或稱單純形法,它對求解域進行單純形剖分,對剖分的頂點給一種恰當標號,並用一種有規則的搜尋方法找到全標號單純形,從而得到方程(1)的近似解。
這種方法優點是,不要求f(□)的導數存在,也不用求逆,且具有大範圍收斂性,缺點是計算量大。
求Matlab大神給解下面這個非線性方程組的方法
可以用fsolve直接求出。計算方法如下 1 p x 1 q x 2 例如資料x隨機給出 x round 100 rand 10,1 n length x f x sum x.x 1 log x sum x.x 1 1 x 1 sum log x n x 2 sum x.x 1 n 1 x 1 op...
matlab求解非線性約束方程,求教 如何用matlab解帶約束的非線性方程組
用fmincon函式就可以解決,以下是fmincon的說明,你照葫蘆畫就可以了。這個函式的基本形式為 x fmincon fun,x0,a,b,aeq,beq,lb,ub,nonlcon,options 其中fun為你要求最小值的函式,可以單寫一個檔案設定函式,如以上給的例子中。1.如果fun中有n...
如何用Matlab求線性方程組的通解
在命令視窗輸入以下命令 a 1 1 1 1 2 5 3 2 7 7 3 1 b 5 4 7 format rat x1 a b 求得非齊次方程組ax b的乙個特解x1 y null a,r 求得齊次方程組ax 0 的基礎解系y 上面符號 後為解釋說明,實際中可不輸入。按回車,得通解。x x1 k1 ...