登录论坛

查看完整版本 : [MATLAB基础] 请教函数写法


muzili2008
2009-06-04, 15:48
大家好,我想计算一个函数。在m文件里定义这个函数时。因为函数写起来很复杂,需要好多项加和得到。而这些加和项的格式又是一样的。所以想用一个循环把它表示出来。
把系数写成矩阵的形式,可是运行时候出错。
请高手指教如何修改。。谢谢!下面是我写的程序。
function y=eqxy(x)
ABCi=[16.07382 -2871.05 224.02
15.98639 -3080.01 218.69
16.57200 -3621.00 226.41];
Xi=[0.5 0.5 0.4 0.2
0.3 0.3 0.2 0.8
0.2 0.2 0.4 0];
Pt=[760 300 760 760];

for i=1:3
y1=exp(ABCi(i,1)+ABCi(i,2)/(x+ABCi(i,3)))*Xi(i,1)/Pt(i,1);
y=y+y1;
end

y=y-1;



这里是三相加和的,以后会有更多。所以想找一个比较容易实现的方法。

TTT_IOU
2009-06-04, 16:02
函数里的x为多少,还有就是y的初值应赋值为零,然后相加!!!
望有帮助!!!

muzili2008
2009-06-04, 16:15
函数里的x为多少,还有就是y的初值应赋值为零,然后相加!!!
望有帮助!!!

感谢您的回复。
是这样,x为要求的值。这个相当于写出一个表达式。然后在用其他的算法,比如说牛顿迭代法求解X。

我不知道可不可以实现我说的目的,请指教!谢谢您!

TTT_IOU
2009-06-04, 16:44
Pt为一向量,在i=3时,Pt(3,1)是多少???
望写的明白点!!!

smartpig
2009-06-04, 17:29
不知道你这个是什么函数,这个函数的Pt要倒置一下,才可以运行。看看下面是不是你要的。
ABCi=[16.07382 -2871.05 224.02
15.98639 -3080.01 218.69
16.57200 -3621.00 226.41];
Xi=[0.5 0.5 0.4 0.2
0.3 0.3 0.2 0.8
0.2 0.2 0.4 0];
Pt=[760 300 760 760]';

for i=1:3
y1=exp(ABCi(i,1)+ABCi(i,2)/(x+ABCi(i,3)))*Xi(i,1)/Pt(i,1);
y=y+y1;
end

muzili2008
2009-06-04, 22:00
Pt为一向量,在i=3时,Pt(3,1)是多少???
望写的明白点!!!

是这样
Pt与Xi后面表示第一列的1会在另一个程序里面设置。并运行第二、第三。第四列。此处可以看做常数。

谢谢关注与解答。