请教高手指点,用Matlab求解二元非线性方程的程序 (这个程序运行错误如何改正?)%定义方程function F=myfun(x,R)A=250;c=20;h=1;d=0.08;r=0.10;Ie=0.12;Ip=0.15;t=1/12;a=200;b=2;w=-0.98; syms T p; p=x(1); T=x(2); F=[(a+b
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/09 09:50:24
请教高手指点,用Matlab求解二元非线性方程的程序 (这个程序运行错误如何改正?)%定义方程function F=myfun(x,R)A=250;c=20;h=1;d=0.08;r=0.10;Ie=0.12;Ip=0.15;t=1/12;a=200;b=2;w=-0.98; syms T p; p=x(1); T=x(2); F=[(a+b
请教高手指点,用Matlab求解二元非线性方程的程序 (这个程序运行错误如何改正?)
%定义方程
function F=myfun(x,R)
A=250;c=20;h=1;d=0.08;r=0.10;Ie=0.12;Ip=0.15;t=1/12;a=200;b=2;w=-0.98;
syms T p;
p=x(1);
T=x(2);
F=[(a+b*c*(1-R)*(1-d*t)+b*t*(1-2*(w+d)*T)*(h+c*Ip*(1-R))/(T*w+d*T)+b*c*d*(1-R)*(T-t))/(2*b)-p;sqrt(A+t*(a-b*p)*(h+c*Ip*(1-R))/(c*d*(w+d)*(1-R)*(a-b*p)))-T];
%求解
A=250;c=20;h=1;d=0.08;r=0.10;Ie=0.12;Ip=0.15;t=1/12;a=200;b=2;w=-0.98;
R=0; TP=0;
syms p T;
x0=[10; 0.1];
R=0:0.05:0.6
for i=1:1:12
RR=R(i);
x=fsolve(@myfun(x,RR),x0,optimset('display','off'));
p(i)=x(1)
T(i)=x(2)
end
请高手指点,谢谢
我将求解部分进行改进一下还是不行呢?
A=250;c=20;h=1;d=0.08;r=0.10;Ie=0.12;Ip=0.15;t=1/12;a=200;b=2;w=-0.98;
R=0; TP=0;
syms p T;
x0=[4; 0.01];
i=0;
for R=0:0.05:0.6
i=i+1;
RR=R(i);
x=fsolve(@(x) myfun(x,RR),x0,optimset('display','off'));
p(i)=x(1)
T(i)=x(2)
end
请教高手指点,用Matlab求解二元非线性方程的程序 (这个程序运行错误如何改正?)%定义方程function F=myfun(x,R)A=250;c=20;h=1;d=0.08;r=0.10;Ie=0.12;Ip=0.15;t=1/12;a=200;b=2;w=-0.98; syms T p; p=x(1); T=x(2); F=[(a+b
不知道到你为什么把程序搞这么复杂.直接把各个参数带入方程啊.直接用fsolve.
fsolve用法:
x=fsolve(fun,x0)求解fun(x)=0的解,x0是初值,fun是函数,x就是解
因为fsolve使用迭代法求解方程的,所以总要有个迭代的初值吧,这个初值就是你给的x0.
比如解方程组
x(1).^2+x(2).^2=1
x(1)=2*x(2)
可以写成
f=@(x)([x(1).^2+x(2).^2-1;x(1)-2*x(2)])
x=fsolve(f,[1 1])
这里[1 1]就是初值,其实初值一般情况下可以随便给的.