Matlab
2008-09-16, 00:56
用fsolve解方程,解出的解不准确,自己往回带算出的值明明很大,但matlab给出的值却是接近0。
请高手们帮忙看下是哪错了,要是想提高准确度的话该怎么改?多谢了!!!
> clear
[x,y,f]= fsolve('[-0.06877*x(1)^2-0.06877*(100*pi)^2*x(2)^2+x(1),(x(1)^2+(100*pi)^2*x(2)^2)/(100*pi)*x(3)+(-0.2501)*(x(1)^2+(100*pi)^2*x(2)^2)+(100*pi)*x(2),x(1)-5.165161*(x(2)+x(3))]',[1; 0.01; 0.2],optimset('TolFun',1e-30,'TolX',1e-30))
Optimization terminated: relative function value changing by less
than max(options.TolFun^2,eps) and sum-of-squares of function
values is less than sqrt(options.TolFun).
x =
1.0267
0.0119
0.1869
y =
1.0e-015 *
0 0.4441 0
f =
3
下面是我自己把值往回带
>> a=-0.06877*1.0267^2-0.06877*(100*pi)^2*0.0119^2+1.0267
a =
-0.0069
>> clear
>> b=(1.0267^2+(100*pi)^2*0.0119^2)/(100*pi)*0.1869+(-0.2501)*(1.0267^2+(100*pi)^2*0.0119^2)+(100*pi)*0.0119
b =
-0.0117
>> clear
>> c=1.0267-5.165161*(0.0119+0.1869)
c =
-1.3401e-004
(正确的解应该是1.1474,0.012,0.2096,就第二个准点)
请高手们帮忙看下是哪错了,要是想提高准确度的话该怎么改?多谢了!!!
> clear
[x,y,f]= fsolve('[-0.06877*x(1)^2-0.06877*(100*pi)^2*x(2)^2+x(1),(x(1)^2+(100*pi)^2*x(2)^2)/(100*pi)*x(3)+(-0.2501)*(x(1)^2+(100*pi)^2*x(2)^2)+(100*pi)*x(2),x(1)-5.165161*(x(2)+x(3))]',[1; 0.01; 0.2],optimset('TolFun',1e-30,'TolX',1e-30))
Optimization terminated: relative function value changing by less
than max(options.TolFun^2,eps) and sum-of-squares of function
values is less than sqrt(options.TolFun).
x =
1.0267
0.0119
0.1869
y =
1.0e-015 *
0 0.4441 0
f =
3
下面是我自己把值往回带
>> a=-0.06877*1.0267^2-0.06877*(100*pi)^2*0.0119^2+1.0267
a =
-0.0069
>> clear
>> b=(1.0267^2+(100*pi)^2*0.0119^2)/(100*pi)*0.1869+(-0.2501)*(1.0267^2+(100*pi)^2*0.0119^2)+(100*pi)*0.0119
b =
-0.0117
>> clear
>> c=1.0267-5.165161*(0.0119+0.1869)
c =
-1.3401e-004
(正确的解应该是1.1474,0.012,0.2096,就第二个准点)