作者zupo (外派越南工作者)
标题Re: [问题]解非线性方程式.....三个函数
时间Wed Nov 13 00:19:01 2013
※ 引述《emily8877560 (Emily)》之铭言:
: 如果想要将这些系数 a=-2600,b=-1600,c=-1800来做input的输入应该要怎麽做修正
: 我原本以为就将y = pracl(x,a,b,c)
: 但是都出现 错误讯息 即使我的workspace已经存有a,b,c
: Not enough input arguments.
: Error in fsolve (line 241)
: fuser = feval(funfcn{3},x,varargin{:});
: Caused by:
: Failure in initial user-supplied objective function evaluation. FSOLVE
: cannot
: continue.
: ※ 引述《qqqidqqq (newworld)》之铭言:
: : 此题可以用fsolve来解喔~~
: : 先设函数:
: : function y=prac1(x)
: : y=zeros(1,3);
: : y(1) =
: : x(1)*(1-x(2)*exp(-2600/x(3))-exp(-2600/x(3))...
: : +x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-873;
: : y(2) =
: : x(1)*(1-x(2)*exp(-1600/x(3))-exp(-1600/x(3))...
: : +x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-555;
: : y(3) =
: : x(1)*(1-x(2)*exp(-800/x(3))-exp(-800/x(3))...
: : +x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-91;
: : 接着来解~
: : clear
: : clc
: : x01=[1,1,1];
: : a1=fsolve('prac1',x01)
: : y1=prac1(a1)
: : x02=[100,100,100];
: : a2=fsolve('prac1',x02)
: : y2=prac1(a2)
: : x03=[10000,10000,10000];
: : a3=fsolve('prac1',x03)
: : y3=prac1(a3)
: : % fsolve的用法是 fsolve('待解函数',初始值)
: : (*初始值可任意代 但最好尽量靠近答案(mo,f,T1) 就是要你先猜大概的(mo,f,T1)
: : 若与真实答案的级数差太多
: : 则可能找不到你要的解)
: : x01,x02,x03就是我设的三种初始值
: : 而a1,a2,a3就是各解出的(mo,f,T1)值
: : y1,y2,y3为各代回function 看这三个方程式的值是否都等於0
: : 来判断解出的答案是否是我们要的 若与0差距太多 则可能是初始值设的离实际值太远
----------------------------------------
function pttex138
format long g
global a b c
a=-2600;
b=-1600;
c=-1800;
F = zeros(3,3)
options = [1 1 1;100 100 100;10000 10000 10000;]
for n = 1:3
F(n,:) = fsolve(@pracl,options(n,:));
end
F
function y=pracl(x)
global a b c
a1 = a;
b1 = b;
c1 = c;
y=zeros(1,3);
y(1) =x(1)*(1-x(2)*exp(a1/x(3))-exp(a1/x(3))...
+x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-873;
y(2) =x(1)*(1-x(2)*exp(b1/x(3))-exp(b1/x(3))...
+x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-555;
y(3) =x(1)*(1-x(2)*exp(c1/x(3))-exp(c1/x(3))...
+x(2)*exp(-3000/x(3))*exp(137.6/x(3)))-91;
-------------------------------------------------------
解答
F =
506.333333333333 1 1
1748.23867022159 0.191247951354778 6174.43739540953
240834.8269029 -0.765130280948859 1582530.40003226
不过解出来不太是正确解,毕竟一堆指数相加又相乘
建议还是图形化出来看一下
--
数值方法 : 求根值 . ODE系统 . DDE系统. DAE系统. PDE系统
非线性联立系统. 化工程序控制系统 . 力学系统
RLC 系统 . MCK 系统 . Laplace 转换 系统
其他 : 工程数学 .微积分.化工程序.输送现象.化工程序线性控制
Simulator . MATLAB tool box . Simulink . FORTRAN
不会影像处理.....囧>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 113.163.21.45