实验目的:

通过本实验,学生将学会使用MATLAB求解非线性方程组的方法。

实验内容:

1.利用MATLAB求解非线性方程组

MATLAB中求解非线性方程组的函数为fsolve,其用法为:

[x,fval,exitflag,output] = fsolve(fun,x0,options)

其中,fun为一个函数句柄,表示待求解的非线性方程组;x0为初值向量;options为一个结构体,表示求解选项,可以不指定。

例如,对于如下的非线性方程组:

f1(x1,x2) = x1^2 + x2^2 - 1 = 0 f2(x1,x2) = x1 - x2^2 = 0

其对应的MATLAB代码为:

fun = @(x)[x(1)^2 + x(2)^2 - 1; x(1) - x(2)^2]; x0 = [1;1]; [x,fval,exitflag,output] = fsolve(fun,x0)

其中,x为求解得到的解向量,fval为解向量对应的函数值向量,exitflag表示求解是否成功,output为求解过程的输出信息。

2.利用MATLAB绘制非线性方程组的图像

MATLAB中绘制非线性方程组的图像可以使用contour函数。contour函数的用法为:

contour(X,Y,Z,levels)

其中,X和Y为网格点坐标向量,Z为对应的函数值矩阵,levels为等高线的高度向量。

例如,对于如下的非线性方程组:

f1(x1,x2) = x1^2 + x2^2 - 1 = 0 f2(x1,x2) = x1 - x2^2 = 0

其对应的MATLAB代码为:

[X,Y] = meshgrid(-2:0.1:2,-2:0.1:2); Z1 = X.^2 + Y.^2 - 1; Z2 = X - Y.^2; contour(X,Y,Z1,[0 0],'k'); hold on; contour(X,Y,Z2,[0 0],'r'); xlabel('x1'); ylabel('x2'); legend('x1^2+x2^2-1=0','x1-x2^2=0');

其中,meshgrid函数用于生成网格点坐标向量,Z1和Z2分别为函数f1和f2对应的函数值矩阵,contour函数用于绘制等高线图,xlabel和ylabel函数用于设置坐标轴标签,legend函数用于设置图例。


原文地址: https://www.cveoy.top/t/topic/bJQm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录