主题:请教一个解非线性方程的问题
我是matlab的初学者,碰到一个解非线性方程的问题解决不了,希望各位高手能够帮忙解决!
具体是:我要解一个非线性方程,方程中包含了一些参数,这些参数的值需要通过主程序提供,我编了一个子程序,然后在命令窗口编了一个主程序,子程序中参数Th,Ph的值由主程序传递:
主程序:
>> Th=298.15;Ph=1;
>> Vr=fzero('fz',10)
子程序:
function f=fz(Vr)
R=83.14472;
Tc=190.6;
Pc=46.41;
Vc=R.*Tc./Pc;
Tr=Th./Tc;
Pr=Ph.*10./Pc;
a1=8.72553928e-2;a2=-7.52599476e-01;a3=3.75419887e-1;a4=1.07291342e-2;
a5=5.49626360e-3;a6=-1.84772802e-2;a7=3.18993183e-4;a8=2.11079375e-4;
a9=2.01682801e-5;a10=-1.65606189e-5;a11=1.19614546e-4;a12=-1.08087289e-4;
a13=4.48262295e-2;a14=7.53970000e-1;a15=7.71670000e-2;
f=Pr.*Vr./Tr-(1+(a1+a2./Tr.^2+a3./Tr.^3)./Vr+(a4+a5./Tr.^2+a6./Tr.^3)./Vr.^2+(a7+a8./Tr.^2+a9./Tr.^3)./Vr.^4+(a10+a11./Tr.^2+a12./Tr.^3)./Vr.^5+(a13./(Tr.^3.*Vr.^2)).*(a14+a15./Vr.^2).*exp(-a15./Vr.^2));
在命令窗口运行上述程序,总是出现如下错误:??? Error using ==> fzero
FZERO cannot continue because user supplied function_handle ==> fz
failed with the error below.
Undefined function or variable 'Th'.
另外如将参数Th,Ph的值在子程序中赋值,则运行没有问题,但这有不符合我的整个程序的计算要求。希望各位高手能够帮忙!
具体是:我要解一个非线性方程,方程中包含了一些参数,这些参数的值需要通过主程序提供,我编了一个子程序,然后在命令窗口编了一个主程序,子程序中参数Th,Ph的值由主程序传递:
主程序:
>> Th=298.15;Ph=1;
>> Vr=fzero('fz',10)
子程序:
function f=fz(Vr)
R=83.14472;
Tc=190.6;
Pc=46.41;
Vc=R.*Tc./Pc;
Tr=Th./Tc;
Pr=Ph.*10./Pc;
a1=8.72553928e-2;a2=-7.52599476e-01;a3=3.75419887e-1;a4=1.07291342e-2;
a5=5.49626360e-3;a6=-1.84772802e-2;a7=3.18993183e-4;a8=2.11079375e-4;
a9=2.01682801e-5;a10=-1.65606189e-5;a11=1.19614546e-4;a12=-1.08087289e-4;
a13=4.48262295e-2;a14=7.53970000e-1;a15=7.71670000e-2;
f=Pr.*Vr./Tr-(1+(a1+a2./Tr.^2+a3./Tr.^3)./Vr+(a4+a5./Tr.^2+a6./Tr.^3)./Vr.^2+(a7+a8./Tr.^2+a9./Tr.^3)./Vr.^4+(a10+a11./Tr.^2+a12./Tr.^3)./Vr.^5+(a13./(Tr.^3.*Vr.^2)).*(a14+a15./Vr.^2).*exp(-a15./Vr.^2));
在命令窗口运行上述程序,总是出现如下错误:??? Error using ==> fzero
FZERO cannot continue because user supplied function_handle ==> fz
failed with the error below.
Undefined function or variable 'Th'.
另外如将参数Th,Ph的值在子程序中赋值,则运行没有问题,但这有不符合我的整个程序的计算要求。希望各位高手能够帮忙!