| 查看: 4585 | 回复: 4 | ||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||
[求助]
求助matlab程序计算速度过慢的原因
|
||
|
程序代码如下 function [length]=contactlength(x0) if x0>50||x0<-50 'error:数据超出尺寸范围' else syms x R=300;%非球面顶点曲率半径 c=1/R; delta=0.1; k=-3.3;%非球面参数 rb=27;%半径 y=(-1*c*x.^2)./(1+sqrt(1-(1+k)*(c^2)*x.^2)); dy=diff(y); dy2=diff(y,2); dyx0=subs(dy,x0); dy2x0=subs(dy2,x0); r0=(1+dyx0^2)^(3/2)/(abs(dy2x0))%曲率半径 y0=(-1*c*x0^2)./(1+sqrt(1-(1+k)*(c^2)*x0^2));%非球面接触点y坐标 if x0==0 xb=x0; yb=y0+rb-delta; ob=[xb,yb]%圆心二维坐标 else xb=x0+(rb-delta)/sqrt(1+1/dyx0^2); yb=y0+(-1/dyx0)*(rb-delta)/sqrt(1+1/dyx0^2); ob=[xb,yb]%圆心二维坐标 end syms x2 y2 ezplot((x2-xb)^2+(y2-yb)^2==rb^2,[-50 50 -10 70]) axis equal; hold on; ezplot(y2==(-1*c*x2^2)/(1+sqrt(1-(1+k)*(c^2)*x2^2)),[-50 50 -10 70]) s=solve(y2==(-1*c*x2^2)./(1+sqrt(1-(1+k)*(c^2)*x2^2)),... (x2-xb)^2+(y2-yb)^2==rb^2,x2,y2); X=double(s.x2); Y=double(s.y2); X=X(~logical(imag(X))); length=max(X)-min(X) end 在实际运算过程中,要100多秒才能算出结果,请问是哪里有问题呢?我该怎么改程序? 本人新手,接触matlab不久,希望大神们多多指导 |
» 猜你喜欢
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有109人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
求助NH4V4O10晶体的CIF文件
已经有0人回复
w136851258
铁杆木虫 (正式写手)
- 应助: 1 (幼儿园)
- 金币: 7565.1
- 散金: 328
- 红花: 5
- 帖子: 385
- 在线: 135.7小时
- 虫号: 2611295
- 注册: 2013-08-19
- 专业: 金属材料
4楼2018-02-16 15:01:21
|
顶一下 发自小木虫IOS客户端 |
2楼2018-01-23 19:17:21
hechunlei
至尊木虫 (知名作家)
胡萝卜青椒
- 应助: 2 (幼儿园)
- 金币: 20658.5
- 散金: 114
- 红花: 2
- 帖子: 5029
- 在线: 277.6小时
- 虫号: 2857621
- 注册: 2013-12-08
- 性别: GG
- 专业: 零件加工制造

3楼2018-02-16 10:25:26
5楼2018-04-16 11:37:50












回复此楼