matlab解方程的问题

n1*(27.32*(x-298)+0.003113*(x^2-298^2)-(3.1673/10^7)*(x^3-298^3))+n2*(26.75*(x-298)+0.021129*(x^2-298^2)-(4.750000/10^6)*(x^3-298^3))+n3*(29.16*(x-298)+0.07245*(x^2-298^2)-(6.74/10^6)*(x^3-298^3))+n4*(28.17*(x-298)+0.0031485*(x^2-298^2)-(2.498/10^7)*(x^3-298^3))+X12*(25.76*(x-298)+0.028955*(x^2-298^2)-(1.2697/10^5)*(x^3-298^3)) =-H1
其中 n1=((0.5*X1+2*X2+3.5*X3+3*X4+5*X5+4.5*X6+6.5*X7+6*X8+7.5*X9+8*X10+0.5*X11+1.5*X12)-X14)/0.21*y*0.79+X15;
n2=X2+2*X3+2*X4+3*X5+3*X6+4*X7+4*X8+4*X9+4*X10+X11+X13;
n3=X1+2*X2+3*X3+2*X4+4*X5+3*X6+5*X7+4*X8+5*X9+6*X10+X12 ;
n4=(0.5*X1+2*X2+3.5*X3+3*X4+5*X5+4.5*X6+6.5*X7+6*X8+7.5*X9+8*X10+0.5*X11+1.5*X12-X14)*( y-1);
H1=-(241.8*X1+802.8*X2+1428.7*X3+1323.2*X4+2043.2*X5+1926*X6+2657.6*X7+2541.5*X8+3146.95*X9+3271.6*X10+283*X11+518.03*X12)
x1~x15,y都是带用户输入的常数,
现在想实现:提示用户输入x1~x15,y,然后得到最后的三次方程,然后解出结果,应该怎么写?

第1个回答  2011-03-30
X1=input('X1=');
X2=input('X2=');
X3=input('X3=');
X4=input('X4=');
X5=input('X5=');
X6=input('X6=');
X7=input('X7=');
X8=input('X8=');
X9=input('X9=');
X10=input('X10=');
X11=input('X11=');
X12=input('X12=');
X13=input('X13=');
X14=input('X14=');
X15=input('X15=');

y=input('y=');
syms x;
n1=((0.5*X1+2*X2+3.5*X3+3*X4+5*X5+4.5*X6+6.5*X7+6*X8+7.5*X9+8*X10+0.5*X11+1.5*X12)-X14)/0.21*y*0.79+X15;
n2=X2+2*X3+2*X4+3*X5+3*X6+4*X7+4*X8+4*X9+4*X10+X11+X13;
n3=X1+2*X2+3*X3+2*X4+4*X5+3*X6+5*X7+4*X8+5*X9+6*X10+X12 ;
n4=(0.5*X1+2*X2+3.5*X3+3*X4+5*X5+4.5*X6+6.5*X7+6*X8+7.5*X9+8*X10+0.5*X11+1.5*X12-X14)*( y-1);
H1=-(241.8*X1+802.8*X2+1428.7*X3+1323.2*X4+2043.2*X5+1926*X6+2657.6*X7+2541.5*X8+3146.95*X9+3271.6*X10+283*X11+518.03*X12);
f=n1*(27.32*(x-298)+0.003113*(x^2-298^2)-(3.1673/10^7)*(x^3-298^3))+n2*(26.75*(x-298)+0.021129*(x^2-298^2)-(4.750000/10^6)*(x^3-298^3))+n3*(29.16*(x-298)+0.07245*(x^2-298^2)-(6.74/10^6)*(x^3-298^3))+n4*(28.17*(x-298)+0.0031485*(x^2-298^2)-(2.498/10^7)*(x^3-298^3))+X12*(25.76*(x-298)+0.028955*(x^2-298^2)-(1.2697/10^5)*(x^3-298^3)) +H1;
x=solve(f)追问

这样代进去,得到的n1~n4和H1是正确的,得到的f 好像不正确,只有x项,没有常数项,解出来的解也不对,这是怎么回事?

追答

f是设的一个关于x的函数,其他的n1~n4和H1都为已知量,解的方程是f=0,解出来的结果是x的3*1的矩阵,表示x有3个解。所得解比较复杂,可以简化一下,试试!

第2个回答  2011-03-30
syms x1 x2 一直到x15 y
e=2*x1+3*x2+x-y;
X1=input('X1=');
X2=input('X2=');
X3=input('X3=');
X4=input('X4=');
X5=input('X5=');
X6=input('X6=');
X7=input('X7=');
X8=input('X8=');
X9=input('X9=');
X10=input('X10=');
X11=input('X11=');
X12=input('X12=');
X13=input('X13=');
X14=input('X14=');
X15=input('X15=');

y=input('y=');
e1=eval(e);
x=solve(e1)
你按照这个例子看看吧!追问

带入之后,得到的e1 是
2787899630327033973207/17592186044416000000*x-3806894614525837442128442386780619/77371252455336267181195264000+8997056521948080621053538567349813/324518553658426726783156020576256000*x^2-45364801307966782850046781763786821/13292279957849158729038070602803445760000*x^3 解出来的x都是虚数,但是我自己计算出x,x^2,x^3的系数和常数项后带入解出来的结果不一样,哪里出错了么?

追答

我首先要说的一点是,对于一个三次方程,不可能是有三个虚根的,最多只有两个。
你的方程2787899630327033973207/17592186044416000000*x-3806894614525837442128442386780619/77371252455336267181195264000+8997056521948080621053538567349813/324518553658426726783156020576256000*x^2-45364801307966782850046781763786821/13292279957849158729038070602803445760000*x^3 的解分别是
1.0e+004 *

1.1918 + 0.0000i
-0.4090 + 0.0000i
0.0296 - 0.0000i
你可以看到它的虚部全是0,这是数值计算引起的,你的问题我以前好像回答过,你最好使用roots来求解多项式的根!

本回答被提问者采纳
第3个回答  2011-03-30
把x声明为数组即可

用matlab解复杂方程组
面对方程个数多于未知数个数的情况,解的确定性降低,这是个寻找最优解的问题。目标是找到一个解,当该解代入原始方程后,使得某个特定参数的方差最小。对于非典型二元一次方程组,通常的最小二乘法无法应用,因此具体的解法可能不易找到。知识有限,对此问题的帮助有限。问题的关键在于是寻求单个方程的...

matlab求方程的解
matlab求方程的解的方法是:1、首先指明所解方程的变量,然后指明方程,未知数和限制条件,最后求解方程。2、例如求解sin(x)=1方程,在matlab命令行窗口中输入symsx、[x,params,conds]=solve(sin(x)==1,“ReturnConditions”,true),按回车键可以得到方程解。3、转换一下,可以看到sin(x)=1方程...

为什么用MATLAB解方程会出现错误啊?
由于Mathematica把方程的解表示为嵌套列表,因此不能把它作为其它数学结构的输入,但是有两种方法可以调用其中的值,而不必采用照抄或粘贴的方法.(a)如果希望利用由Solve得到的解计算表达式的值,可以利用取代运算符\/. ,这样Mathematica就会自动带入相应的值.(b)由于解就是列表,因此可以用Part或[[]]从列表...

用matlab解方程
可以使用MATLAB中的符号计算工具箱来解决方程问题。具体步骤如下:1. 定义方程:使用符号变量表示未知数,并定义方程。例如,如果要解一元二次方程ax² + bx + c = 0,可以使用syms定义符号变量x和系数a、b、c。然后使用eq函数定义方程。2. 解方程:使用solve函数解方程。将方程作为solve函数的...

如何用Matlab求一元二次方程式解的个数以及解
1、首先打开Matlab软件,点击左上角的New Script按钮,如下图所示 2、接下来在弹出的界面中给新的脚本文件起一个名字,然后进行保存,如下图所示 3、接着我们在脚本文件中用input接收三个输入变量,这三个变量是让用户输入的,如下图所示,他们代表方程式中的a,b,c参数 4、然后我们运用b^2-4ac进行...

matlab关于fsolve解方程组的问题?
matlab关于fsolve解方程组的问题?题主编写的代码基本正确,但执行下列命令时,出现错误“Objective function is returning undefined values at initial point. FSOLVE cannot continue.”。分析方程组的第一个方程,由于当x、y、z的初值为0,则 ln(0)是不存在的,所以使用fsolve求解方程组就停止执行并...

如何用matlab解微分积分方程?
题主给出的积分函数,用matlab 求解,可以这样做 1、确定x在【-300,300】中,取若干个x(i)数据,如 x=-300:10:300;2、使用for循环语句,将x(i)代入积分函数I(x)中,使用int函数计算其积分值,同时将值赋值给Ix数组变量中 for n=1:600\/t+1 syms x A_1=int(cos((pi*(x^2))\/2),...

有谁能解释下用MATLAB解方程的解,和我自己用笔解出来的结果不一样,这...
1.你解错了;2.电脑还是有个精确度;3.可能只是形式不一样,换一下就行了。(4.程序错了,这个可能性灰常小吧,但是作为怀疑的精神还是写上吧。)

怎么用Matlab解方程?
3、matlab解出的根不仅包含实根,也包含复根,例如求解三次方程x^3+1=0:solve(x^3+1,x)我们知道该方程有一对共轭复根,matlab也可以解出它的解。4、对于超出5次(含)以上的一元函数,有时无法用solve指令求的对应的根。这时可以使用roots命令求解。roots命令的参数是方程的各个系数按高次幂到低...

用matlab怎么解差分方程?
差分方程的通解是指含有相互独立的任意常数,且任意常数的个数等于方程的价数的解;差分方程的特解是指不含有任意常数的解;为了说明如何用matlab解差分方程问题,特举例:例1:试用matlab求解差分方程,y(t+2)-5y(t+1)+6y(t)=0,其中y(0)=1,y(1)=0的解析解。求解代码:syms z n u=(...

相似回答