簡體   English   中英

具有ln的MatLab二次方程

[英]MatLab Quadratic Equation With ln

如何使用已知的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)

您可以將符號變量solve函數一起使用:

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

將以下代碼放入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

您可以在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估計了一個解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM