对数问题求解
2个回答
展开全部
可以根据对数定义域,判断c<1.5时无解
。
c>1.5时
方程化为lg(c-1)=0.98*lg(c-0.5)+0.02*lg(c-1.5)
这个方程有唯一实数解。但需要用数值解法,比如二分搜索或者Newton迭代等。或者直接用Matlab或者mathimatic求解。
解为:c
=
2.932031129256685e+14
(手动求解析解基本完蛋)
Matlab二分搜索代码如下:
function
[
y
]
=
calcx2y(
x
)
%
函数方程
y
=
log10(x
-
1)
-
0.98*
log10(x
-
0.5)
-
0.02*
log10(x
-
1.5);
end
主体代码
clear
clc
x1
=
290000000000000;%预估计下界
y1
=
calcx2y(x1)
x2
=
300000000000000;%预估计上界
y2
=
calcx2y(x2)
low
=
x1;
high
=
x2;
th
=
1;%精度需求
while(high-low>th)
mid
=
(high+low)/2;
if(calcx2y(mid)>0)
high
=
mid
-
th;
else
low
=
mid
+
th;
end
end
mid
ymid
=
calcx2y(mid)
c
=
mid;
format
long;
left
=
-0.02*log10((1.5-c)/(0.5-c))
right
=
log10((0.5-c)/(1-c))
error
=
left
-
right
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
我直接把运行结果放在这里了
y1
=
-1.4988e-15
y2
=
1.1102e-15
mid
=
2.9320e+14
ymid
=
1.1102e-15
left
=
2.989415146315196e-17
right
=
7.714619732426290e-16
error
=
-7.415678217794771e-16
。
c>1.5时
方程化为lg(c-1)=0.98*lg(c-0.5)+0.02*lg(c-1.5)
这个方程有唯一实数解。但需要用数值解法,比如二分搜索或者Newton迭代等。或者直接用Matlab或者mathimatic求解。
解为:c
=
2.932031129256685e+14
(手动求解析解基本完蛋)
Matlab二分搜索代码如下:
function
[
y
]
=
calcx2y(
x
)
%
函数方程
y
=
log10(x
-
1)
-
0.98*
log10(x
-
0.5)
-
0.02*
log10(x
-
1.5);
end
主体代码
clear
clc
x1
=
290000000000000;%预估计下界
y1
=
calcx2y(x1)
x2
=
300000000000000;%预估计上界
y2
=
calcx2y(x2)
low
=
x1;
high
=
x2;
th
=
1;%精度需求
while(high-low>th)
mid
=
(high+low)/2;
if(calcx2y(mid)>0)
high
=
mid
-
th;
else
low
=
mid
+
th;
end
end
mid
ymid
=
calcx2y(mid)
c
=
mid;
format
long;
left
=
-0.02*log10((1.5-c)/(0.5-c))
right
=
log10((0.5-c)/(1-c))
error
=
left
-
right
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
我直接把运行结果放在这里了
y1
=
-1.4988e-15
y2
=
1.1102e-15
mid
=
2.9320e+14
ymid
=
1.1102e-15
left
=
2.989415146315196e-17
right
=
7.714619732426290e-16
error
=
-7.415678217794771e-16
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
图为信息科技(深圳)有限公司
2021-01-25 广告
2021-01-25 广告
边缘计算可以咨询图为信息科技(深圳)有限公司了解一下,图为信息科技(深圳)有限公司(简称:图为信息科技)是基于视觉处理的边缘计算方案解决商。作为一家创新企业,多年来始终专注于人工智能领域的发展,致力于为客户提供满意的解决方案。...
点击进入详情页
本回答由图为信息科技(深圳)有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询