| 查看: 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大神帮看一下,问题出在哪,如何改 |
» 猜你喜欢
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有52人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
求助NH4V4O10晶体的CIF文件
已经有0人回复
chendequan
铁虫 (小有名气)
- 应助: 152 (高中生)
- 金币: 918.6
- 红花: 17
- 帖子: 262
- 在线: 208.6小时
- 虫号: 994474
- 注册: 2010-04-11
- 专业: 结构工程

2楼2018-03-07 16:25:38
3楼2018-03-12 22:05:31
waterque
金虫 (正式写手)
- 应助: 59 (初中生)
- 金币: 1989.1
- 散金: 96
- 红花: 10
- 帖子: 759
- 在线: 191.5小时
- 虫号: 2095273
- 注册: 2012-10-30
- 专业: 凝聚态物性 II :电子结构
【答案】应助回帖
|
可能一个原因是符号表达式在这里会出错,测试显示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对应,不然后出错。 这个或许可以解决你现在的错误,完全测试还需要数据。 |

4楼2018-03-13 11:41:36












回复此楼