具有ln的MatLab二次方程

时间:2017-12-09 11:29:45

标签: matlab matlab-figure

如何使用已知的Matlab命令解决函数f(x)=ln(x^2)-0.7=0

clc;clear all;close all;

f(x)=ln(x^2)-0.7=0
B=sqrt f(x)

3 个答案:

答案 0 :(得分:2)

您可以将symbolic variablessolve功能一起使用:

syms x;
eqn = log(x^2) - 0.7 == 0;
solve(eqn,x)

上面的代码将输出:

ans =

  exp(7/20)
 -exp(7/20)

由于方程是二次的,求解器返回两个不同的解(通常人们忘记了二次方程可能有两个镜面解,一个正面和一个负面)。

如果要检索数值(例如,为了计算其sqrt值):

sol = solve(eqn,x);
num = double(sol)

num =

 1.4191
-1.4191

答案 1 :(得分:1)

将以下代码放入MATLAB脚本中,将其命名为“main.m”。

function b=main
    clc
    x=solveF()
    y=f(x)
    b=sqrt(y)
end

function y=f(x)
    y=log(x^2)-0.7
end

function x=solveF()
    g = @(x) abs(f(x)-0)
    x = fminsearch(g, 1.0)
end

然后将其运行为:

main

您将得到结果:

x =

     1.4190


y =

   -3.4643e-05


b =

    0.0000 + 0.0059i


ans =

    0.0000 + 0.0059i

答案 2 :(得分:0)

您可以在matlab中定义方程式:

f = @(x) log(x^2)-0.7;
B = @(x) sqrt(f(x));

如果要查找满足约束的x的值,可以设计一个在约束条件时将等于零的函数,然后调用fminsearch来查找x

f_constraint = @(x) abs(f(x)-0);
x_opt = fminsearch(f_constraint, 1.3); % function handle, initial estimate

在您的示例中,B(x_opt)应该等于零。事实并非如此,因为fminsearch估计了一个解决方案。