用matlab求隱函數(shù)的解 fsolve函數(shù)的求解原理是什么?函數(shù)的使用條件和約束是什么?
fsolve函數(shù)的求解原理是什么?函數(shù)的使用條件和約束是什么?嗯,ft=Rand真的是你的錯(cuò)。每次調(diào)用函數(shù)ft時(shí),它都會(huì)發(fā)生變化。為達(dá)到您的要求,程序如下:a=normrnd(4000,sqrt(10
fsolve函數(shù)的求解原理是什么?函數(shù)的使用條件和約束是什么?
嗯,ft=Rand真的是你的錯(cuò)。每次調(diào)用函數(shù)ft時(shí),它都會(huì)發(fā)生變化。為達(dá)到您的要求,程序如下:a=normrnd(4000,sqrt(1000),1,3)%a=[1,2,3]B=normrnd(2,sqrt(0.5),1,3)f=@(a,B,F(xiàn)T)fsolve(@(x)sum(exp(-(x./a))。^b))-3*(1-ft),0,optimset(“display”,“off”)x=[]for ft=rand(1,10)x=[x f(a,b,ft)]結(jié)束解釋為什么x總是等于0,不是程序錯(cuò)了,而是a的值總是太大!您可以嘗試較小的a,例如a=[1 2 3]。
請(qǐng)教,Matlab的fsolve函數(shù)怎么用?
X=fsolve(fun,x0)求解fun(X)=0的解,x0是初值,fun是函數(shù),X是解,因?yàn)閒solve使用迭代法求解方程,所以必須有一個(gè)迭代初值,這個(gè)初值就是你給出的x0。
例如,求解方程組x(1)。^2個(gè)(2)。^2=1 x(1)=2*x(2)可以寫成F=@(x)([x(1))。^2個(gè)(2)。^2-1 x(1)-2*x(2)])x=fsolve(F,[1,1]),其中[1,1]是初始值,實(shí)際上初始值一般可以自由給定。
如何使用fsolve函數(shù)?
*對(duì)于非線性方程組f(x)=0,使用fsolve函數(shù)求數(shù)值解。fsolve函數(shù)的調(diào)用格式為:
x=fsolve(“fun”,x0,option)
其中x是返回的解,fun是用于定義需求解的非線性方程的函數(shù)文件名,x0是根過程的初始值,option是優(yōu)化工具箱的選項(xiàng)設(shè)置。優(yōu)化工具箱提供了20多個(gè)選項(xiàng),用戶可以使用optimset命令顯示這些選項(xiàng)。如果要更改其中一個(gè)選項(xiàng),可以調(diào)用optimset()函數(shù)。例如,display選項(xiàng)確定調(diào)用函數(shù)時(shí)如何顯示中間結(jié)果,其中“off”表示不顯示,“ITER”表示顯示每個(gè)步驟,“final”僅顯示最終結(jié)果。Optimset(“display”,“off”)將顯示選項(xiàng)設(shè)置為“off”。
例如,得到了(0.5,0.5)附近以下非線性方程的數(shù)值解。
(1)創(chuàng)建函數(shù)文件myfun。M.
函數(shù)q=myfun(P)
x=P(1)
y=P(2)
q(1)=x-0.6*sin(x)-0.3*cos(y)
q(2)=y-0.6*cos(x)0.3*sin(y)
(2)在給定的初始值x0=0.5,Y0=0.5中,調(diào)用fsolve函數(shù)來找到方程的根。
X=fsolve(“myfun”,[0.5,0.5]”,optimset(“display”,“off”)
X=
0.6354
0.3734
將解替換回原始方程,檢查結(jié)果是否正確。順序如下:
Q=myfun(x)
Q=
1.0e-009*
0.2375 0.2957
可以看出,得到的結(jié)果精度更高。