MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]关于非线性方程组的求解 (https://www.labfans.com/bbs/showthread.php?t=1703)

jackie 2008-03-16 12:35

[求助]关于非线性方程组的求解
 
高手请帮忙给解决一个问题

我知道如果把数据miu1 miu2 miu3 A Vm Vmmiu1 Vmmiu2 Vmmiu3 Vd0换成具体的数值直接输入方程就能做出来,但这些是在上面求的的,不能求出来再编写求解程序

运用迭代法求解此方程组
mium1=miu1+td*Vm*Vmmiu(1);
mium2=miu2+td*Vm*Vmmiu(2);
mium3=miu3+td*Vm*Vmmiu(3);
td=A*(exp(R/A)-1)/Vd0;
R=sqrt(mium1^2+mium2^2+mium3^2);

%%%%%%%%%迭代函数
function [p0,k,err,p]=fixpt(g,p0,tol,max1)
%g是给定的迭代函数
%p0是给定的初始值
%max1是所允许的最大迭代次数
%k是所进行的迭代次数加1
%p是不动点的近似值
%err是误差
%p(p1,p2,...pn)
P(1)=p0;
for k=2:max1
P(k)=feval('g',P(k-1));
k;
err=abs(P(k)-P(k-1));
p=P(k);
if(err<tol)
break;
end
if k==max1
disp('maximum number of iteration exceeded');
end
end


%%%%%%%%%%%%%
function x=g(R,miu1,miu2,miu3,A,Vd0,Vm,Vmmiu)
x=sqrt((miu1+A*(exp(R/A)-1)/Vd0*Vm*Vmu1)^2+(miu2+A*(exp(R/A)-1)/Vd0*Vm*Vmu1)^2+(miu3+A*(exp(R/A)-1)/Vd0*Vm*Vmu1)^2);

运行此命令[p0,k,err,p]=fixpt('g',0,10^(-5),20)


显示错误为
??? Input argument "miu1" is undefined.

Error in ==> g at 3
x=sqrt((miu1+A*(exp(R/A)-1)/Vd0*Vm*Vmu1)^2+(miu2+A*(exp(R/A)-1)/Vd0*Vm*Vmu1)^2+(miu3+A*(exp(R/A)-1)/Vd0*Vm*Vmu1)^2);

Error in ==> fixpt at 12
P(k)=feval('g',P(k-1));

Error in ==> jinzhahuijian at 137
[p0,k,err,p]=fixpt('g',0,10^(-5),20)

谢谢啦!!!!清高手给点意见

未注册 2008-03-18 21:46

我和同学整出来了,在迭代函数和主函数,子函数中定义全局变量,


所有时间均为北京时间。现在的时间是 09:48

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.