PDA

查看完整版本 : [MATLAB基础] 【求助】求解一个指(对)数方程……


francisyang
2011-08-19, 10:19
【目标】:求解一个指数函数,函数如下(见附件图片)
2878



(RH/100).* exp((16.78.*Tdb - 116.9)./(Tdb + 237.3)) = exp( (16.78.*x -116.9)./(x + 237.3) ) - 0.00066.*101.3.*(Tdb - x)
其中x是变量。
【方法】:我写的代码如下:

RH = 20:1:100; %% 湿度
Tdb = 18.0:0.1:85.0; %% 干球温度
solve('(RH/100).* exp((16.78.*Tdb - 116.9)./(Tdb + 237.3)) = exp( (16.78.*x - 116.9)./(x + 237.3) ) - 0.00066.*101.3.*(Tdb - x)','x')


【问题】:不能正确求解,老是报错。

刚刚接触Matlab,尤其是对解方程这一块不是很熟悉,希望得到高手的指点。不胜感激涕零!!!

renf
2011-11-17, 12:51
试试用fzero函数

mathjiang
2011-11-20, 16:20
语法不对。

??? Error using ==> solve>getEqns at 182
' (RH/100).* exp((16.78.*Tdb - 116.9)./(Tdb + 237.3)) = exp( (16.78.*x - 116.9)./(x + 237.3) ) -
0.00066.*101.3.*(Tdb - x) ' is not a valid expression or equation.

Error in ==> solve at 67
[eqns,vars] = getEqns(varargin{:});

原因是其中的RH,Tdb的值并没有传到方程中。

此外,对于这个超越方程,很难有符号解,所以matlab报错实属正常。只能考虑数值解。

mathjiang
2011-11-20, 16:55
楼主试试下述语句——求数值解。
function results = qiufangcheng
RH = 20:1:100; %% 湿度
Tdb = 18.0:0.1:85.0; %% 干球温度
r = length(RH); c = length(Tdb);
results = zeros(r,c);
for l = 1:r
for k = 1:c
results(l,k) = fzero(@(x)myfun(x,RH(l),Tdb(k)),1);
end
end

function y = myfun(x,RH,Tdb)
y = exp( (16.78.*x-116.9)./(x+237.3) ) - 0.0669*(Tdb-x) - (RH/100)*exp((16.78.*Tdb-116.9)/(Tdb+237.3));
end
end

mathjiang
2011-11-20, 17:02
部分结果:
8.06261895260122 8.12880591049437 8.19495761685239 8.26107430213279 8.32715619674021 8.39320353102032 8.45921653525370 8.52519543964973 8.59114047434063
8.20949139326698 8.27629607515891 8.34306712931630 8.40980478624936 8.47650927639367 8.54318083010398 8.60981967764799 8.67642604920019 8.74300017483577
8.35568870393959 8.42310454073682 8.49048832264451 8.55784027995392 8.62516064285949 8.69244964145260 8.75970750571526 8.82693446551387 8.89413075059307
8.50121514902789 8.56923564668520 8.63722561245096 8.70518527613899 8.77311486744387 8.84101461593457 8.90888475104812 8.97672550208331 9.04453709819442
8.64607497968451 8.71469371859408 8.78328339985409 8.85184425255526 8.92037650564646 8.98888038792826 9.05735612804655 9.12580395448618 9.19422409556466
8.79027243323591 8.85948306760909 8.92866607089218 8.99782167121958 9.06695009656111 9.13605157471557 9.20512633330429 9.27417459976470 9.34319660134402
8.93381173263466 9.00360798987706 9.07337799596231 9.14312197784730 9.21284016230164 9.28253277590124 9.35220004502173 9.42184219583210 9.49145945428830
9.07669708593389 9.14707276601430 9.21742352928254 9.28774960130847 9.35805120745211 9.42832857285716 9.49858192244444 9.56881148090548 9.63901747269609
9.21893268578308 9.28988166059687 9.36080700837671 9.43170895310723 9.50258771854086 9.57344352819129 9.64427660532696 9.71508717296455 9.78587545386260
9.36052270894484 9.43203892167241 9.50353275358136 9.57500442688390 9.64645416353789 9.71788218524034 9.78928871342089 9.86067396923531 9.93203817355909
9.50147131583220 9.57354878029289 9.64560506757416 9.71764039793913 9.78965499137485 9.86164906758572 9.93362284598701 10.0055765456984 10.0775103855374
9.64178265006591 9.71441545006804 9.78702823492340 9.85962122277971 9.93219463148722 10.0047486785922 10.0772835813305 10.1497995566210 10.2222968210592
9.78146083805115 9.85464312673858 9.92780652165801 10.0009512386853 10.0740774933780 10.1471855009688 10.2202754763591 10.2933476341124 10.3664021884481
9.92050998857336 9.99423598776914 10.0679441748575 10.1416347632958 10.2153079662025 10.2889639963508 10.3626030661626 10.4362253877013 10.5098311726663
10.0589341924126 10.1331981919600 10.2074454222616 10.2816760942185 10.3558904183732 10.4300886049031 10.5042708636146 10.5784374039362 10.6525884349124