如何使用已知的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)
答案 0 :(得分:2)
您可以将symbolic variables与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
答案 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估计了一个解决方案。