24小时热门版块排行榜    

查看: 891  |  回复: 3

科学啄木鸟

铁虫 (小有名气)

[求助] 用matlab写得一个程序,运行不了,不知如何改 已有2人参与

clc;clear
syms M1 M2 M3 %1Cl 2-K 3-Cd
z=[1,1,2];
load dataCl_K_Cd_25;
B0_12=0.04661;B1_12=0.22341;C_phi_12=-0.00044;
B0_13=0.01624;B1_13=0.43945;C_phi_13=-0.00109;
I=1/2*(M1.*z(1)^2+M2.*z(2)^2+M3.*z(3)^2);
Z=z(1)*M1+z(2)*M2+z(3)*M3;
A_phi=0.3920000000;
g=@(x)('2*(1-(1+x).*exp(-x))./x.^2');
g_der=@(x)('-2*(1-(1+x+x.^2/2).*exp(-x))./(x.^2)');
G=g(2*I.^0.5);
G_der=g_der(2*I.^0.5);
x_23=6*z(2)*z(3)*A_phi.*(I.^0.5);x_22=6*z(2)*z(2)*A_phi.*(I.^0.5);x_33=6*z(3)*z(3)*A_phi.*(I.^0.5);
J=@(x)('x.*(4+4.581*x.^(-0.7237).*exp(-0.0120*x.^(0.528))).^(-1)');
J_der=@(x)('(4+4.581*x.^(-0.7237).*exp(-0.0120*x.^(0.528))).^(-1)+(4+4.581*x.^(-0.7237).*exp(-0.0120*x.^(0.528))).^(-2).*(4.581*x.*exp(-0.0120*x.^(0.528)).*(0.7237*x.^(-0.7237-1)+0.0120*0.528*x.^(0.528-1).*x.^(-0.7237)))');
theta_23=(z(2)*z(3)./(4.*I)).*(J(x_23)-J(x_22)/2-J(x_23)/2);
theta_der_23=-(theta_23./I)+(z(2)*z(3)./(8*I.^2)).*(x_23.*J_der(x_23)-x_22.*J_der(x_22)/2-x_33.*J_der(x_33)/2);
syms theta23 psi
Phi_phi_23=theta23+theta_23+I.*theta_der_23;
Phi_23=theta23+theta_23;
Phi_der_23=theta_der_23;
B_phi_12=B0_12+B1_12*exp(-2.0*I.^0.5);
B_phi_13=B0_13+B1_13*exp(-2.0*I.^0.5);
B_12=B0_12+B1_12.*G;
B_13=B0_13+B1_13.*G;
B_der_12=B1_12*G_der./I;
B_der_13=B1_13*G_der./I;
C_12=C_phi_12./(2*(z(1)*z(2))^0.5);C_13=C_phi_13./(2*(z(1)*z(3))^0.5);
F=-A_phi*((I.^0.5)./(1+1.2*I.^0.5)+2*log(1+1.2*I.^0.5)/1.2)+M1.*M2.*B_der_12+M1.*M3.*B_der_13+M2.*M3.*Phi_der_23;
lnR1=z(2)^2*F+M1.*(2*B_12+Z*C_12)+M3.*(2*Phi_23+M1.*psi)+z(2)*(M1.*M2.*C_12+M1.*M3.*C_13);
lnR2=z(1)^2*F+M2.*(2*B_12+Z*C_12)+M3.*(2*B_13+Z*C_13)+z(1)*(M1.*M2.*C_12+M1.*M3.*C_13)+M2.*M3.*psi;
f1=1/2*(lnR1+lnR2);
x1=diff(f1,'theta23');
x2=diff(f1,'psi');
x0=1/2*(z(1)^2*F+M2.*(2*B_12+Z.*C_12)+M3.*(2*B_13+Z.*C_13)+z(1)*(M1.*M2.*C_12+M1.*M3.*C_13)+z(2)^2*F+M1.*(2*B_12+Z.*C_12)+2*M3.*theta_23+z(2)*(M1.*M2.*C_12+M1.*M3.*C_13));

x1=eval(x1);
x2=eval(x2);
X=[ones(5,1),x1,x2];
[b,bint,r,rint,stats]=regress(Y,X)




错误使用  .*
矩阵维度必须一致。

出错 Cl_Na_Sr_250000 (line 17)
theta_23=(z(2)*z(3)./(4.*I)).*(J(x_23)-J(x_22)/2-J(x_23)/2);



有没有哪位matlab大神帮看一下,问题出在哪,如何改
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chendequan

铁虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
内容已删除
QQ:516477448,真心帮助解决MATLAB相关问题,提供详细资料,Word文档明确具体问题及要求,尽力而为!
2楼2018-03-07 16:25:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

金小梅

新虫 (小有名气)

引用回帖:
1楼: Originally posted by 科学啄木鸟 at 2018-03-06 20:09:33
clc;clear
syms M1 M2 M3 %1Cl 2-K 3-Cd
z=;
load dataCl_K_Cd_25;
B0_12=0.04661;B1_12=0.22341;C_phi_12=-0.00044;
B0_13=0.01624;B1_13=0.43945;C_phi_13=-0.00109;
I=1/2*(M1.*z(1)^2+M2.*z(2)^2+M3.*z(3 ...

是直接运行不了?可以加断点试一试~

发自小木虫Android客户端
3楼2018-03-12 22:05:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

waterque

金虫 (正式写手)

【答案】应助回帖

可能一个原因是符号表达式在这里会出错,测试显示J_der(x_23) 和 J_der(x_22)并没有区别,实际上并没有参数代入表达式。可行的建议是把这两个表达式改写为函数,可在文件后定义这俩一个表达式。

如:
=======================================
function [j] = J(x)
j = x.*(4+4.581*x.^(-0.7237).*exp(-0.0120*x.^(0.528))).^(-1);
end

function [j_der] = J_der(x)
j_der = (4+4.581*x.^(-0.7237).*exp(-0.0120*x.^(0.528))).^(-1)+(4+4.581*x.^(-0.7237).*exp(-0.0120*x.^(0.528))).^(-2).*(4.581*x.*exp(-0.0120*x.^(0.528)).*(0.7237*x.^(-0.7237-1)+0.0120*0.528*x.^(0.528-1).*x.^(-0.7237)));
end
==============================

注意function 与end对应,不然后出错。

这个或许可以解决你现在的错误,完全测试还需要数据。
行自己的路:waterque@hotmail.com
4楼2018-03-13 11:41:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 科学啄木鸟 的主题更新
信息提示
请填处理意见