matlab 二元非线性方程

来自:裤子    更新日期:早些时候
用MATLAB解多元非线性方程组,求大神~

首先定义函数:
function f=fx(x)f(1)=3*x(1)-cos(x(2)*x(3))-0.5;f(2)=x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;f(3)=exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3;>> x=fsolve(@fx,[1,1,1])
最后求得x =0.5000 0.0000 -0.5236

扩展资料:MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
参考资料:非线性方程组数值解法百度百科

使用solve函数。
举个例子,解非线性方程组 x^2+y^3=10 x^3-y^2=1 其中x,y为方程组的未知量 在Matlab的命名窗口中输入:
syms x y [x y]=solve('x^2+y=10','x^2-y^2=1','x','y') 即可 输出计算结果为:
x = (37^(1/2)/2 + 21/2)^(1/2) (21/2 - 37^(1/2)/2)^(1/2) -(21/2 - 1/2*37^(1/2))^(1/2) -(1/2*37^(1/2) + 21/2)^(1/2)
y = - 37^(1/2)/2 - 1/2 37^(1/2)/2 - 1/2 37^(1/2)/2 - 1/2 - 37^(1/2)/2 - 1/2
具体solve函数的使用方法,通过输入help solve来学习。
20世纪60年代中期以后,发展了两种求解非线性方程组(1)的新方法。
一种称为区间迭代法或称区间牛顿法,它用区间变量代替点变量进行区间迭代,每迭代一步都可判断在所给区间解的存在惟一性或者是无解。这是区间迭代法的主要优点,其缺点是计算量大。
另一种方法称为不动点算法或称单纯形法,它对求解域进行单纯形剖分,对剖分的顶点给一种恰当标号,并用一种有规则的搜索方法找到全标号单纯形,从而得到方程(1)的近似解。
这种方法优点是,不要求f(□)的导数存在,也不用求逆,且具有大范围收敛性,缺点是计算量大。

首先,定义变量,只要在你的方程中出现的变量,包括字母常量,都要定义,我给你举一个例子吧,
比如:x^2+u*x+x*y=0
v*y^2+x*y=0
此处,x,y为变量,u,v为字母常量
定义变量的方法: (注:如果没有字母常量,只定义变量就可以)
syms x y u v

其次,永solve命令解方程组:
solve(' 1 ',' 2 ','3 ','4 ')
其中:1、2位置放方程组(可以多于两个,从前往后依次放)
3、4位置放变量(可以多于两个,从后往前依次放)
此处:solve('x^2+u*x+x*y=0','v*y^2+x*y=0','x','y')
就可以得出全部解!!
不知道我说明白了吗!!!,希望对你有帮助!!!!!

回答补充:

例如,用我上述方法打得出答案的字符型,要用subs函数将字符型转化为数值型:
ans =

x: [3x1 sym]
y: [3x1 sym]
%%%ans是用solve结出来的,下面你求具体的u,v对应的解
>> u=3;v=4;
>> subs(ans.x)

ans =

0
-3
-4
>> subs(ans.y)

ans =

0
0
1


matlab 二元非线性方程视频

相关评论:

相关主题精彩

版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

Copyright © 喜物网