matlab解多元方程组?谢谢六元方程组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab解多元方程组?谢谢六元方程组相关的知识,希望对你有一定的参考价值。
方程组为:
a+c+d=6.319
2b+4d+2e=9.334
a+2c+e-0.0875x=4.274
c*b/a/e=0.3147
4.1*4.1*a*b^3/(d*e*(a+b+c+e+0.00089x)^2)=1752.838
325.766a+326.307b+68.155c+979.394d+118.094e=2624.38
如何编写?
由于你的方程不适合用solve()和fsolve()以及其他数值方法(如拟牛顿法),经分析用最小二乘法lsqnonlin()求解,其误差最小。求解方法:
1、建立自定义函数文件func.m,即方程组表达式
2、用lsqnonlin()求解
x0=[0.94479 0.49086 0.48925 0.33772 0.90005 0.36925];
[x,resnorm,residual,exitflag]=lsqnonlin(@func,x0)
a=5.4;b=2.0483;c=0.91454;d=0.0044674;e=1.1023;x=46.3699
3、验证,即各方程的计算误差是否约等于0
4、运行结果
参考技术A如何用matlab求解微分方程并画图
Dy/Dx=ycos(x)/(1+2y^2),y(0)=1
这道题怎么用matlab求解并画出图啊
1、找到关于求解常微分方程的习题。
2、这里用matlab求解,主要用到的就是“dsolve”,具体的格式如下,但是不仅仅局限下面两种,其中eq就是代表方程式,而con为初始条件。
3、这里的“x”关于x的函数。知道语法就可以进行计算了。
4、在matlab中输入如下,dsolve('D2y+2*Dy+exp(x)=0','x'),并直接回车就可以显示计算结果了。
5、框中为最终求解的通解。
参考技术A由于方程比较复杂,解析解不能用初等函数表示
只是要获得图像的话,用数值计算的办法可能更方便
fun=@(t,y) 1.44*(10^9)*(1-y).*exp(-109170./(8.314*t));
[T,Y] = ode23t(fun,500:600,0);
DY=fun(T,Y);
AX=plotyy(T,Y,T,DY);
set(get(AX(1),'Xlabel'),'String','T');
set(get(AX(1),'Ylabel'),'String','\\alpha');
set(get(AX(2),'Ylabel'),'String','d\\alpha/dT');
T是自变量,Y是变量也就是alpha
DY是,Y对T的导数
得到得到结果如下图
从图像看出,在T=500时,alpha=0
大概在T=600时,d(alpha)/dT趋向于0,alpha趋向于1不变
但是由于是数值解,在T不断增加的时候,d(alpha)/dT会在0附近振荡
所以T的取值不宜取得太大,这里取500到600之间
而采用ode23t函数,减少振荡
实际上,当T增大到一定值的时候,d(alpha)/dT趋向于0,
函数趋向于保持恒定值,所以后续的振荡是不合理的
取一定的区间如上图,已经可以很好地得到函数的变化趋势了
参考技术Bdsolve()求解微分方程后,使用ezplot()作图,参考代码:
>> y = dsolve('Dy=y*cos(x)/(1+2*y^2)','y(0)=1','x');>> ezplot(y,[-10,10]) % [-10,10]为x区间追问
未定义与 'char' 类型的输入参数相对应的函数 'dsolve'。是为什么啊
追答你是哪个版本的matlab?输入 help dsolve 。看看你的版本使用dsolve()函数的例子
追问我的是R2014a版本,help找不到dsolve,但是有个fsolve
fsolve Solve system of nonlinear equations
x = fsolve(fun,x0)
x = fsolve(fun,x0,options)
x = fsolve(problem)
不应该啊,我的2010和2015版本都有这个函数,我没装2014版本,所以不知道问题所在了
追问好吧,谢谢你
以上是关于matlab解多元方程组?谢谢六元方程组的主要内容,如果未能解决你的问题,请参考以下文章