搜档网
当前位置:搜档网 › Matlab求解超定方程组实例.doc

Matlab求解超定方程组实例.doc

Matlab求解超定方程组实例

对于超定方程组,特别是非线性方程组,可以用Matlab基于最小二乘算法来进行求解,例如,求解下列方程组:

一个三个未知数,九个方程的非线性方程组:

cos(x3)*sin(x2)*sin(x1)-sin(x3)*cos(x1)=-0.9944 ;

sin(x3)*sin(x2)*sin(x1)+cos(x3)*cos(x1)=-0.0870; cos(x2)*sin(x1)=-0.0606; cos(x3)*sin(x2)*cos(x1)+sin(x3)*sin(x1)=0.0349; sin(x3)*sin(x2)*cos(x1)-cos(x3)*sin(x1)=-0.8085; cos(x2)*cos(x1)=0.5875; os(x3)*cos(x2)=-0.1001; sin(x3)*cos(x2)=0.5821; -sin(x2)=0.8070;

代码

% By lyqmath function main() clc; clear all; close all;

% cos(x3)*sin(x2)*sin(x1)-sin(x3)*cos(x1)=-0.9944 ; %

sin(x3)*sin(x2)*sin(x1)+cos(x3)*cos(x1)=-0.0870; % cos(x2)*sin(x1)=-0.0606;

% cos(x3)*sin(x2)*cos(x1)+sin(x3)*sin(x1)=0.0349; % sin(x3)*sin(x2)*cos(x1)-cos(x3)*sin(x1)=-0.8085; % cos(x2)*cos(x1)=0.5875; % os(x3)*cos(x2)=-

0.1001; % sin(x3)*cos(x2)=0.5821; % -sin(x2)=0.8070;

x0 = [0.3 0.4 0.5]

[x, resnorm] = lsqnonlin(@test_fun, x0) F = test_fun(x)

function F = test_fun(x) x1 = x(1); x2 = x(2); x3 = x(3);

F(1) = cos(x3)*sin(x2)*sin(x1)-sin(x3)*cos(x1)+0.9944 ; F(2) =

sin(x3)*sin(x2)*sin(x1)+cos(x3)*cos(x1)+0.0870; F(3) = cos(x2)*sin(x1)+0.0606; F(4) = cos(x3)*sin(x2)*cos(x1)+sin(x3)*sin(x1)-0.0349; F(5) =

sin(x3)*sin(x2)*cos(x1)-cos(x3)*sin(x1)+0.8085; F(6) = cos(x2)*cos(x1)-0.5875; F(7) = cos(x3)*cos(x2)+0.1001; F(8) = sin(x3)*cos(x2)-0.5821; F(9) = -sin(x2)-0.8070; 结果

x0 =

0.3000 0.4000 0.5000

相关主题