专栏
标签
程序
一般问题
发布于 2025-02-12 00:17:56
查看 19过去502天

syms F D r;
% g(D,F,r)=D - F/(pi*r^2)
Q1 = diff((D - F)/(pi * r^2), D);
Q2 = diff((D - F)/(pi * r^2), F);
Q3 = diff((D - F)/(pi * r^2), r);

D = 238; sgmaD = 19.04;
F = 120000; sgmaF = 12000;
r = 14; sgmr = 0.02;
g = D - F/(pi * r^2);

dsD = eval(Q1);
dsF = eval(Q2);
dsr = eval(Q3);

varP = dsD^2 * sgmaD^2 + dsF^2 * sgmaF^2 + dsr^2 * sgmr^2;
sigmag = sqrt(varP);
zr = g / sgmag;
RR = normcdf(zr);
运行结果
RR = 0.9432
Q1 = 1
Q2 = -1/(pir^2)
Q3 = (2
F)/(pi*r^3)
g = 43.1164
dsD = 1
dsF = -0.0016
dsr = 27.8405
varP = 742.6278
sgmag = 27.2512
zr = 1.5822
这个是matlab的程序

using Symbolics
using TyMath
using TySymbolicMath
@variables F D r
g(D,F,r)=D-F/(pir^2)
Q1 = diff((D - F) / (π * r^2), D)
Q2 = diff((D - F) / (π * r^2), F)
Q3 = diff((D - F) / (π * r^2), r)
zr=norminv(r)
D = 238
sigmaD = 19.04
F = 120000
sigmaF = 12000
r = 14
sigmr = 0.02
g = D - F / (π * r^2)
dsD = Float64(eval(Q1))
dsF = Float64(eval(Q2))
dsr = Float64(eval(Q3))
varP = dsD^2 * sigmaD^2 + dsF^2 * sigmaF^2 + dsr^2 * sigmr^2
sgmag = sqrt(varP)
zr = g / sigmag
RR = cdf(Normal(), zr)

这个是我用mworks的程序,是哪里弄错了

所属专栏:Syslab基础平台
产品信息:Syslab科学计算环境
其他

全部回答 1

发布于 2025-02-12 10:24:06

您好,如果要求解偏导数,请使用derivative函数,diff是求解差分;并且Syslab没有提供eval函数,如您要将符号变量赋值之后转换为数值,需要使用substitute函数和double函数,详情请参阅用户手册符号和数值转换

用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天