楼主: 萱草椰子
2149 6

[问答] MATLAB解非线性方程组,请帮忙看下代码哪里错了 [推广有奖]

  • 0关注
  • 2粉丝

已卖:127份资源

本科生

16%

还不是VIP/贵宾

-

威望
0
论坛币
142 个
通用积分
0.1200
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
130 点
帖子
45
精华
0
在线时间
68 小时
注册时间
2012-4-26
最后登录
2017-10-30

楼主
萱草椰子 在职认证  发表于 2013-4-27 11:40:16 |AI写论文
20论坛币
function f=fun19(Y)
a1=0.670115;a2=0.038793;a3=0.000398;a4=0.290694;
sigma=1.25;
x1=970;x2=23.06452;x3=6.666667;x4=231.5385;
pper=30;
E=1025.13;
PE=1.290114;
a=0.169354;
co2=2466.477;
allco2=52034.07;
coef1=2.763;coef2=2.145;coef3=1.642;coef4=0;
P1=1;P2=6.2;P3=0.3;P4=2.6;
b=1561022;
c1=83.89;c2=70.55;c3=49.56;c4=2.6;
g=0.785379;
F=8078.219;
f(1)=a1 * Y(8)^(1 / sigma - 1) + a2 * Y(9)^(1 / sigma - 1) + a3 * Y(10)^(1 / sigma - 1) + a4 * Y(11)^(1 / sigma - 1)-Y(1);
f(2)=E + sigma / (1 - sigma) * (Y(1) / a - 1) * E-Y(2);
f(3)=Y(14) * Y(2) + pper * allco2-Y(3);
f(4)=Y(16) + pper * coef1-Y(4);
f(5)=Y(17)+ pper * coef2-Y(5);
f(6)= Y(18)+ pper * coef3-Y(6);
f(7)=Y(19) + pper * coef4-Y(7);
f(8)=x1 * (sigma - 1) * (Y(2) / E-1) + X1 * sigma * (Y(3) / b - Y(4)/ c1) + x1-Y(8);
f(9)=x2 * (sigma - 1) * (Y(2)/ E-1) + X2 * sigma * (Y(3)/ b - Y(5)/ c2) + x2-Y(9);
f(10)=x3 * (sigma - 1) * (Y(2)/ E-1) + X3 * sigma * (Y(3)/ b - Y(6)/ c3) + x2-Y(10);
f(11)=x4* (sigma - 1) * (Y(2)/ E-1) + X4 * sigma * (Y(3)/ b - Y(7)/ c4) + x2-Y(11);
f(12)= a1^sigma * Y(16)^(1 - sigma) + a2^sigma * Y(17)^(1 - sigma) + a3^sigma * Y(18)^(1 - sigma) + a4^sigma * Y(19)^(1 - sigma)-Y(12);
f(13)=coef1 * Y(8)+ coef2 * Y(9) + coef3 * Y(10) + coef4 * Y(11)-Y(13);
f(14)= pE + pE / (1 - sigma) * ((Y(12) - g) / g )-Y(14);
f(15)=Y(16) * Y(8)^sigma + Y(17) * Y(9)^sigma + Y(18) * Y(10)^sigma + Y(19) * Y(11)^sigma-Y(15);
f(16)=p1 * Y(15) / f + sigma * p1 + sigma * p1 * Y(8) / x1-Y(16);
f(17)=p2 * Y(15) / f + sigma * p2 + sigma * p2 * Y(9) / x2-Y(17);
f(18)=p3 * Y(15) / f + sigma * p3 + sigma * p3 * Y(10) / x3-Y(18);
f(19)= (Y(2) * Y(14) - Y(8) * Y(16) - Y(9) * Y(17) - Y(10) * Y(18) - pper * (Y(13) - co2)) / Y(11)-Y(19);
Y0=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
Y=fsolve(@fun19,Y0,1)
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
以上是我的代码,解19个方程,19个未知数的方程组,错误提示是
Error in ==> fun19 at 17
f(1)=a1 * Y(8)^(1 / sigma - 1) + a2 * Y(9)^(1 / sigma - 1) + a3 * Y(10)^(1 / sigma - 1) + a4 * Y(11)^(1 / sigma - 1)-Y(1);
我才开始接触MATLAB,不知道为什么错误,请各位好心人帮忙看下,非常感谢!

最佳答案

美髯客 查看完整内容

呵呵,Y(*)的数据在哪呢?错误可能在这里啊
关键词:非线性方程组 MATLAB matla 线性方程组 非线性方程 sigma function 方程组

回帖推荐

美髯客 发表于2楼  查看完整内容

呵呵,Y(*)的数据在哪呢?错误可能在这里啊

本帖被以下文库推荐

沙发
美髯客 发表于 2013-4-27 11:40:17
呵呵,Y(*)的数据在哪呢?错误可能在这里啊

藤椅
美髯客 发表于 2013-4-27 11:56:00
呵呵,刚刚测试了下,确实是Y没有定义:??? Input argument "Y" is undefined.

板凳
萱草椰子 在职认证  发表于 2013-4-27 14:29:00
美髯客 发表于 2013-4-27 11:56
呵呵,刚刚测试了下,确实是Y没有定义:??? Input argument "Y" is undefined.
我是想把Y(1)~Y(19)当做未知数来解得呢,请问这个要怎么定义呢?
有个朋友说我这个还需要设置一个迭代程序,麻烦高人看下是这样吗?谢谢了哦

报纸
美髯客 发表于 2013-4-27 14:45:45
他说的有道理,你这个表达其实是数学的,不是程序的,你要想办法把其表示为程序能够读懂的,建议看下Matlab求解非线性方程的资料,其实主要是靠矩阵的运算,不是你这种数学公式,程序不像人一样聪明!

地板
萱草椰子 在职认证  发表于 2013-4-28 11:02:10
美髯客 发表于 2013-4-27 14:45
他说的有道理,你这个表达其实是数学的,不是程序的,你要想办法把其表示为程序能够读懂的,建议看下Matlab ...
请问老师,我是想把Y(1)~Y(19)当做未知数来解,在程序里要怎么定义这个Y呢?

7
美髯客 发表于 2013-4-28 11:06:18
呵呵,别叫我老师啊,知道AX=B么,不太严谨的求解结果为:X=B/A,你要把相关的系数矩阵找出来,用类似的方法求解,编程语言也方便表示,你的Y其实就是这里的X,你觉得呢?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 03:46