Matlab resuelve la raíz de la ecuación o función, la diferencia entre root, fzero, solve, fsolve

1. Introducción

Hay muchas funciones para resolver ecuaciones y ecuaciones en Matlab. Muchas personas pueden ser ambiguas sobre el uso de estas funciones. Aquí hay una breve introducción para dar una dirección general y aprender los escenarios básicos de uso de estas funciones. Si desea conocer más detalles y casos de cada función, la documentación de ayuda oficial de Matlab es el mejor material. Miles de libros se transmiten falsamente y un caso se transmite de verdad. Usemos ejemplos para aprender juntos, vamos ~

2. Cuatro funciones

函数名字Los dos conceptos de y se usan en las cuatro funciones 函数句柄, y los explicaremos por separado. El llamado nombre de función consiste en agregar comillas simples alrededor del nombre de la variable de función para convertirlo en una cadena. Por ejemplo, si define una función llamada func ( ) function f=func(x)en func.m, entonces su nombre de función es 'func'. En cuanto al identificador de función, la comprensión simple es un puntero de función, @funcque se utiliza para obtener. El resultado de una función anónima es directamente un identificador de función, por ejemplo, f=@(x)x^2+1el resultado fen sí mismo es un identificador de función.

2.1 raíz

rootLa función está dirigida al problema de búsqueda de raíces polinómicas, de la siguiente manera

% 求解x^3-2*x^2+x+1=0;
p=[1,-2,1,1];
roots(p)

2.2 fcero

Se recomienda encontrar la raíz de una función no lineal de una variable fzero.
Sintaxis: x=fzero(f,x0), donde fes el nombre de la función o el identificador de la función. Consulte más arriba el nombre de la función y el identificador de la función. x0Es un valor de estimación inicial o rango de estimación de la raíz. Si es un rango de estimación, x0la definición de es [-1,1]así.

% 案例一: 求解exp(x)+cos(x)=0
f=@(x)exp(x)+cos(x);
% 第一个参数是函数名字,或者函数句柄。第二个参数是其实猜测值或者猜测区间
fzero(f,0)

% 案例二: 
% 在function.m中定义一个名为function的函数
fzero('function',0)
% 或者
fzero(@function,0)
% 都可以求出函数的根

2.3 resolver

En el caso multivariante/multidimensional, la solución de ecuaciones no lineales utiliza fsolve:

% 求解方程组 x^2+y-4=0, x-y-10=0
% 在test.m中定义如下函数
function r = test(x)
    r(1)=x(1).^2+x(2)-4;
    r(2)=x(1)-x(2)-10;
end

% 使用函数名或者函数句柄
fsolve('test',[0,0])
% 或者
fsolve(@test,[0,0])

2.4 resolver

También existe una existencia especial de solvefunciones, que también puede encontrar las raíces de funciones y resolver ecuaciones, y puede hacer mucho más que eso, y también puede optimizarse. Cuando se realiza la búsqueda de raíces de funciones o la resolución de ecuaciones, es significativamente diferente de las otras tres funciones anteriores en que las funciones a las que se dirige son funciones simbólicas o ecuaciones. Los ejemplos son los siguientes:

syms x;
f = x^3+2*x^2-x+1;
s = solve(f); % f为符号函数,当不采用包含等式==的方程时,默认求根,否则求方程的解
double(s)

% solve的第一个参数是等式时
s = solve(x^3+2*x^2==x-1)
double(s) %结果同上

2.5 Otros

Al encontrar la raíz de la función anterior, a veces es necesario proporcionar una suposición inicial, como la función fzerode suma . fsolvePor lo tanto, generalmente es mejor dibujar primero la función para ver el rango aproximado de la solución. Las funciones específicas de la función de dibujo son aproximadamente las siguientes, y simplemente puede probarlas.

f = @(x,y) x.*exp(-x.^2-y.^2)+(x.^2+y.^2)/20;
g = @(x,y) x.*y/2+(x+2).^2+(y-2).^2/2-2;
% 隐函数绘制
fimplicit(g,'k')
axis([-6 0 -1 7])
hold on
% 等值线绘制
fcontour(f)
% 三维曲面绘制
figure;
fsurf(f)

El resultado de fsurf(f)

Resumir

Estas funciones se ven muy similares. Si no las comparas cuidadosamente, siempre estarás confundido. El autor también está preocupado, así que pasé un tiempo comparándolas. Espero que te ayude. Si está registrado e iniciado sesión, ¡sería aún mejor dar me gusta o comentar!

Supongo que te gusta

Origin blog.csdn.net/Meiyuan2021/article/details/129253941
Recomendado
Clasificación