Matlab求解非线性方程工程问题的作业
题目:DeSantis(1976)给出了气体压缩因子满足的关系公式:
其中,y=b/4v,b是范德瓦尔斯校正值,v是摩尔体积。如果z=0.892,那么y值是多少? (题目出处:《应用数值分析》Patrick O.Wheatly著 机械工业出版社 P57 应用问题App3)
二分法求解:
1.编写二分法程序,保存为bisect.m
function [x_star, index, it]=bisect(fun, a, b, ep)if nargin <4 ep=1e-5; end
fa=feval(fun,a); fb=feval(fun,b); if fa*fb>0
x_star=[fa, fb]; index=0; it=0; return; end k=1;
while abs(b-a)/2>=ep
x=(a+b)/2; fx=feval(fun,x); if fx*fa<0 b=x; fb=fx; else
a=x; fa=fx; end k=k+1; end
x_star=(a+b)/2; index=1; it=k; end
2.编写非线性函数,保存为fun.m
function f=fun(x)
f=(1+x+x.^2-x.^3)./(1-x).^3-0.892
3.绘制函数曲线 >> x=-20:1:20;
>> f=(1+x+x.^2-x.^3)./(1-x).^3-0.892; >> plot(x,f);
观察发现方程的跟分布在:[-20,-5]和[-5,0]之间。 >> [x_star, index, it]=bisect(@fun,-20,-5) x_star =
-17.4642
index =
1 it =
21
>> [x_star, index, it]=bisect(@fun,-5,0) x_star =
-0.0290
index =
1 it =
19
故y值为:-17.4642和-0.0290。