用MATLAB解多元非线性方程组,求大神
方程组为:3x1-cos(x2*x3)-0.5=0x1^2-81*(x2+0.1)^2+sin(x3)+1.06=0exp(-x1*x2)+20*x3+(10*π-3)/...
方程组为:3x1-cos(x2*x3)-0.5=0
x1^2-81*(x2+0.1)^2+sin(x3)+1.06=0
exp(-x1*x2)+20*x3+(10*π-3)/3=0
用fsolve函数 希望显示结果为x1= x2= x3=
多谢! 展开
x1^2-81*(x2+0.1)^2+sin(x3)+1.06=0
exp(-x1*x2)+20*x3+(10*π-3)/3=0
用fsolve函数 希望显示结果为x1= x2= x3=
多谢! 展开
6个回答
展开全部
首先定义函数:
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可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
参考资料:非线性方程组数值解法百度百科
2016-11-13
展开全部
建立 Myfun.m 文件
function F = myfun(x,a)
E = a(1);
I = a(2);
R0 = a(3);
R1 = a(4);
T = a(5);
A = a(6);
v = a(7);
rho = a(8);
F = [ (T - rho * A * v^2) *
sin(x(3)) * x(1) - (T * cos(x(3)) + rho * A * v^2 - rho * A * v^2 *
cos(x(3))) * x(2) - E*I/(R0 + R1);
(1/3) * (T - rho * A * v^2) *
sin(x(3)) * x(1)^3 - (1/2) * (T * cos(x(3)) + rho * A * v^2 - rho *
A * v^2 * cos(x(3))) * x(2) * x(1)^2 - E* I * x(2);
(T - rho * A * v^2) * sin(x(3)) *
x(1)^2 - (T * cos(x(3)) + rho * A * v^2 - rho * A * v^2 *
cos(x(3))) * x(2) * x(1) - E* I * x(3)];
建立一个执行文件
clc
clear
a = zeros(8);
display('# Pls input the known
parameters: #')
a(1) = input('E = ');
a(2) = input('I = ');
a(3) = input('R0 = ');
a(4) = input('R1 = ');
a(5) = input('T = ');
a(6) = input('A = ');
a(7) = input('v = ');
a(8) = input('rho = ');
display('# Pls input the initial
point: #')
x0 = zeros(3);
% Make a
starting guess at the solution
x0(1) = input('x1 = ');
x0(2) = input('y1 = ');
x0(3) = input('phi = ');
options =
optimset('Display','iter');
% Option to display
output
[x,fval] = fsolve(@(x)
myfun(x,a),x0,options)
% Call solver
运行,输入已知的几个参数,再输入初始搜索点,即可!
function F = myfun(x,a)
E = a(1);
I = a(2);
R0 = a(3);
R1 = a(4);
T = a(5);
A = a(6);
v = a(7);
rho = a(8);
F = [ (T - rho * A * v^2) *
sin(x(3)) * x(1) - (T * cos(x(3)) + rho * A * v^2 - rho * A * v^2 *
cos(x(3))) * x(2) - E*I/(R0 + R1);
(1/3) * (T - rho * A * v^2) *
sin(x(3)) * x(1)^3 - (1/2) * (T * cos(x(3)) + rho * A * v^2 - rho *
A * v^2 * cos(x(3))) * x(2) * x(1)^2 - E* I * x(2);
(T - rho * A * v^2) * sin(x(3)) *
x(1)^2 - (T * cos(x(3)) + rho * A * v^2 - rho * A * v^2 *
cos(x(3))) * x(2) * x(1) - E* I * x(3)];
建立一个执行文件
clc
clear
a = zeros(8);
display('# Pls input the known
parameters: #')
a(1) = input('E = ');
a(2) = input('I = ');
a(3) = input('R0 = ');
a(4) = input('R1 = ');
a(5) = input('T = ');
a(6) = input('A = ');
a(7) = input('v = ');
a(8) = input('rho = ');
display('# Pls input the initial
point: #')
x0 = zeros(3);
% Make a
starting guess at the solution
x0(1) = input('x1 = ');
x0(2) = input('y1 = ');
x0(3) = input('phi = ');
options =
optimset('Display','iter');
% Option to display
output
[x,fval] = fsolve(@(x)
myfun(x,a),x0,options)
% Call solver
运行,输入已知的几个参数,再输入初始搜索点,即可!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很高兴为您解答,首先定义函数myfun
function F = myfun(x)
F = [3*x(1)-cos(x(2)*x(3))-0.5;
x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3];
前面这段函数定义在myfun.m文件中
主程序如下:
[x,fval]=fsolve(@myfun,[0,0,0]);
x(1)
x(2)
x(3)
最后求得
x(1)=0.5000
x(2)=0.0000
x(3)=-0.5236
满意请采纳回答,谢谢!
function F = myfun(x)
F = [3*x(1)-cos(x(2)*x(3))-0.5;
x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;
exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3];
前面这段函数定义在myfun.m文件中
主程序如下:
[x,fval]=fsolve(@myfun,[0,0,0]);
x(1)
x(2)
x(3)
最后求得
x(1)=0.5000
x(2)=0.0000
x(3)=-0.5236
满意请采纳回答,谢谢!
追问
如果我想要直接用m文件得出这三个解,即不需要在指令窗输入,该怎么编函数?谢谢
追答
如果是单个方程可以用隐函数定义来做,例如x = fsolve(@(x)sin(x.*x),x0);你有三个函数就不好那样做了,还是定义成标准函数来做比较好。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fx.m
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
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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询