1樓:匿名使用者
如果你有n個未知bai數n個方程,就定du義乙個輸入輸zhi出都是n*1列向量的函式,dao然後用fsolve解。比專
如你想解方程組
x1^2+x2=7
x2^3+exp(x1)=100
就定義一屬個函式
func1=@(x)[x(1)^2+x(2)-7;x(2)^3+exp(x(1))-100];
x=fsolve(func1,[1;1])
2樓:敏感鈍感
fun=@(x)(x+0.0777)*cos(x)-sin(x)-0.0681;
>> fzero(fun,0.5)
ans =
0.2729
可以用求零點函式解
a=0.0777;
>> b=0.0681;
>> fun=@(x)(x+a)*cos(x)-sin(x)-b;
>> fzero(fun)
就可以編
版程求權解
3樓:劉賀
得不來出解析
源解bai,除非
du有zhia和b的值:dao
clear all;clc;
a=3;
b=2;
syms x
solve(eval((x+a)*cos(x)-sin(x)-b))ans =
.77394808752697357508109385553800
matlab解非線性方程組 5
4樓:匿名使用者
對於帶變數的非線性方程組,可以用matlab的for迴圈語句和vpasolve函式聯合專求解。實現方屬法:
m=0:0.01:1;
for i=1:length(m)
syms x y z
f1=cos(x)-cos(y)+cos(z)-m(i);
f2=cos(5*x)-cos(5*y)+cos(5*z);
f3=cos(7*x)-cos(7*y)+cos(7*z);
[x1(i),y1(i),z1(i)]=vpasolve(f1,f2,f3);
endx=double(x1);y=double(y1);z=double(z1);
plot(m,x,m,y,m,z)
5樓:唇硬體苫
第一零五回:錦衣軍查抄寧國府,驄馬使**平安州
matlab求解非線性方程組
6樓:我行我素
^syms m x y z
[x,y,z,m]=solve('x+y+z+m-2=0','x^版2+y^2+z^2+m^2-2=0','x*z+y*m=0','-y+2*z-3*m=0','x','y','z','m')
結果權:
x =1/4+1/4*3^(1/2)
1/4-1/4*3^(1/2)
y =1/4-1/4*3^(1/2)
1/4+1/4*3^(1/2)
z =3/4-1/4*3^(1/2)
3/4+1/4*3^(1/2)
m =3/4+1/4*3^(1/2)
3/4-1/4*3^(1/2)
7樓:匿名使用者
對於此抄類方程組,一般只能用fsolve()函式來求解。最好不用solve()函式來求解,可能會導致錯誤的結果。
首先,把x,y當作x向量,即x(1)表示變數x,x(2)表示變數y其次,用匿名函式inline()來自定義函式,即fun=inline('[4*x(1)-x(2)+exp(x(1))/10-1,-x(1)+4*x(2)+x(1)^2/8]','x')
最後,用fslove()函式來求解,即
[x,f,h]=fslove(fun,[0,0]) %[0,0]初值
執行得到
matlab解非線性方程組
8樓:匿名使用者
1. fsolve
求解非線性方程組方程:
f(x)=0
x是乙個向量,f(x)是該向量的函式向量,返回向量值
2.語法
x = fsolve(fun,x0)
x = fsolve(fun,x0,options)
[x,fval] = fsolve(fun,x0)
[x,fval,exitflag] = fsolve(...)
[x,fval,exitflag,output] = fsolve(...)
[x,fval,exitflag,output,jacobian] = fsolve(...)
3. 描述
fsolve用於尋找非線性系統方程組的零點。
x = fsolve(fun,x0)以x0為初始值,努力尋找在fun中描述的方程組。
x = fsolve(fun,x0,options) 以x0為初始值,按照指定的優化設定「options」努力尋找在fun中描述的方程組。使用optimset設定這些選項。
[x,fval] = fsolve(fun,x0)返回在解x處的目標函式fun的值
[x,fval,exitflag] = fsolve(...)返回exitflag表示退出條件。
[x,fval,exitflag,output] = fsolve(...)返回output結構,該結構包含了優化資訊。
[x,fval,exitflag,output,jacobian] = fsolve(...)返回在解x處的jacobian函式。
4. 輸入引數
4.1. fun
非線性系統方程。它是乙個函式,以x作為輸入,返回向量f。函式fun可以被指定為乙個m檔案函式的函式控制代碼。
x = fsolve(@myfun,x0)
這裡的myfun是乙個matlab函式,形如:
function f = myfun(x)
f = ... % ***pute function values at x
fun也可以是乙個非同步函式的函式控制代碼:
x = fsolve(@(x)sin(x.*x),x0);
若使用者定義的值為矩陣,則會被自動轉換為向量。
若jacobian能被計算出來且通過options = optimset('jacobian','on')設定jacobian選項為」on」,則函式fun必須在第2個輸出引數中返回x處的jacobian值j(它是乙個矩陣)。注意:通過檢查nargout的值,當fun被只帶乙個輸出引數呼叫的情況下,該函式可避免計算j,僅只有乙個輸出引數。
(這種情況下,優化演算法僅需要知道f而不需j)。
function [f,j] = myfun(x)
f = ... % objective function values at x
if nargout > 1 % two output arguments
j = ... % jacobian of the function evaluated at x
end4.2. options
提供該函式有關的特定資訊。
5. 輸出引數
5.1. exitflag
乙個用來表示演算法終止原因的整數。
1:函式收斂到x
2:x的變化已經處在容許範圍內
3:殘差變化已經處在容許範圍內
4:搜尋方向飛幅度比指定的誤差小
5:迭代次數超過options.maxiter或函式估值的次數超過options.funevals
-1:演算法被輸出函式終止
-2:演算法似乎收斂到乙個非根點。
-3:可信半徑變得太小
-4:沿當前方向的線性搜尋不能足夠地減小殘差
5.2. output
包含關於優化資訊的乙個結構,其具有如下字段:
iterations:已經迭代的次數
funccount:函式估值的次數
algorithm:所使用的演算法
cgiterations:pcg迭代次數(僅適用於大規模演算法)
stepsize:最終採取的步長(僅適用於中等規模演算法)
firstorderopt:第1階優化的觀測值 。
5.3. options
優化設定。一些選項設定用於所有演算法,部分與大規模演算法(large-scale algrithm)。相關,部分與中等規模演算法相關。
可以使用optimset改變其中的設定。largescale選項指定使用哪種演算法。
設為『on』使用大規模演算法,設為『off』使用中等規模演算法。
5.3.1. medium-scale and large-scale algorithms
如下選項用於大規模和中等規模演算法:
derivativecheck:將使用者提供導數與有限差分導數相比較
diagnostics:顯示被解函式的診斷資訊
diffmaxchange:有限差分變數中的最大變化
diffminchange:有限差分變數中的最小變化
display:顯示的級別,『off『不顯示輸出,』iter『顯示每一步迭代的輸出,』final『顯示最終的輸出(預設)
funvalcheck:檢查目標函式值是否有效。設為『on』,當函式返回值為複數、inf或nan將返回乙個錯誤,設為『off』將不顯示錯誤。
jacobian:設為『on』,fsolve將使用使用者定義的jacobian或jacobian資訊來估值目標函式,若設為『off』,則使用有限差分逼近jacobian。
maxfunevals:最大允許估值次數
maxiter:最大迭代次數
outputf**:指定乙個或多個輸出函式,優化函式在每乙個迭代過程中將呼叫這些函式。
plotf**s:演算法執行時顯示進度條。從預定義中選擇或自定義進度條。
指定@optimplotx顯示當前的點,@optimplotfunccount列印出函式的計數,@optimplotfval列印出函式值,@optimplotresnorm列印出殘差範數,@optimplotstepsize列印出步長,@optimplotfirstorderopt列印優化引數的第1階。
tolfun:函式值的終止誤差。
tolx:x的終止誤差
5.3.2. 僅適用於large-scale algorithm
jacobmult:jacobian乘法函式的函式控制代碼
jacobpattern
maxpcgiter
precondbandwidth
tolpcg
5.3.3. 僅適用於medium-scale algorithm
nonleqnalgorithm:
'dogleg' — trust-region dogleg algorithm
(default)
'lm' — levenberg-marquardt
'gn' — gauss-newton
linesearchtype:'lm' (levenberg-marquardt)
'gn' (gauss-***wton) algorithms.
6. 使用優化工具箱完成以上函式操作
命令:optimtool
寫出非線性方程,積分,微分方程的Matlab數值計算和符號計算的方法
這麼複雜的問題。你分開問或許還有人答。數值方法 解非線性方程 組 用fsolve 解一階常微分方程 組 用ode系列函式 符號計算方法 解非線性方程 組 用solve 解常微分方程 組 用dsolve 微分方程初值問題數值解法,主要介紹了求解常微分方程的matlab符號法 常微分方程數值解的基本原理...
線性方程求解,線性方程求解?
計算方法第三章 線性方程組的解法 1 3 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 線性方程組的解法 你這種常規解法太繁瑣。應為 係數矩陣行列式第 2,3 列都加到第 1 列,第2,3 行都分別減去第 1 行,得 a 2 1 2,1,且 2 時,a 0...
用QR分解法求解線性方程組的matlab程式
matlab做qr分解只是一條語句而已 q,r qr a 那麼線性方程組ax b的解 x r q b matlab怎麼用qr分解求解rq分解 假設要對a進行rq分解 則首先對a的逆進行qr分解 q r qr inv a 即inv a q r,兩邊同時取逆,有a inv r inv q 這樣就完成了a...