声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5593|回复: 16

[编程技巧] 求一个复杂公式化简的编程问题

[复制链接]
发表于 2011-4-13 10:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 0900567 于 2011-4-13 18:03 编辑

在求解 积分|k1|+|k2| 的公式编程的M文件时,k1 和k2 的公式有点复杂,所以我想用一些符号去代替其中的一些有规律的项,但是编程出现了问题,小弟有点不会编了。请高手指教。公式如图

程序  M文件
function y=ffun(x)
syms E L G N A B C k1 k2
E=(40+20*cos(x))^2;
L=-(40+20*cos(x)).*cos(x);
G=20*20;
N=-20;
A=E*G;
B=-(L*G+N*E).^2.;
C=L*N;
k1=(-B+sqrt(B.^2.-4*A.*C).)./(2*A);
k2=(-B+sqrt(B.^2.-4*A.*C).)./(2*A);
y=abs(k1)+abs(k2);


   y=quad('jifen',0,pi)    %计算数值积分

计算数值积分

计算数值积分
2.png
回复
分享到:

使用道具 举报

发表于 2011-4-13 11:29 | 显示全部楼层
有报错信息吗,最起码要把出现的问题贴出来啊!
发表于 2011-4-13 11:44 | 显示全部楼层
回复 1 # 0900567 的帖子

两点建议
1.程序直接贴上, 不然要试还得练打字:@(
2.同楼上, 贴上完整报错信息, 大家节省时间:@)

点评

赞成: 5.0
赞成: 5
赞同!  发表于 2011-4-13 14:24
 楼主| 发表于 2011-4-13 18:04 | 显示全部楼层
回复 3 # ChaChing 的帖子

求指点!
发表于 2011-4-13 20:06 | 显示全部楼层
回复 4 # 0900567 的帖子

问下你的程序functiony=ffun(x)是怎么被调用的啊,x的输入是向量吗?
k1=(-B+sqrt(B.^2.-4*A.*C))./(2*A);
k2=(-B+sqrt(B.^2.-4*A.*C))./(2*A);
给定一个x值,这样改了是有结果的。

评分

1

查看全部评分

 楼主| 发表于 2011-4-14 08:26 | 显示全部楼层
本帖最后由 0900567 于 2011-4-14 08:26 编辑

回复 5 # meiyongyuandeze 的帖子

就是想对|K1| +|k2|做数值积分,他的表达是太复杂想化简下。
发表于 2011-4-14 08:27 | 显示全部楼层
本帖最后由 meiyongyuandeze 于 2011-4-14 08:27 编辑

回复 6 # 0900567 的帖子

你的公式我改了下,能运行过,在5楼
 楼主| 发表于 2011-4-14 08:30 | 显示全部楼层
回复 7 # meiyongyuandeze 的帖子

我怎么一运行就报告错误呢?  能帮我发下你改过的程序么?
谢谢您
 楼主| 发表于 2011-4-14 08:33 | 显示全部楼层
回复 7 # meiyongyuandeze 的帖子

我的也能运行了,我以前改的一个公式少了个点  再次感谢你,我的两个问题都是您帮我解决的。  希望能和你成为朋友,望以后多多关照!
发表于 2011-4-14 08:34 | 显示全部楼层
回复 8 # 0900567 的帖子

没保存,在窗口中调试的。你程序中式那个语句调用的ffun函数啊,x值是怎么赋值的?我调试仅是对你的函数ffun进行的,我取定x为一个值,运行可以没错
 楼主| 发表于 2011-4-14 08:42 | 显示全部楼层
回复 10 # meiyongyuandeze 的帖子

我还是想利用你上次帮我想的公式,求解变上限积分的问题调用的方式我给你发下哈!
i=1;
for x=0:pi/10:pi
    v(i)=x;
    yzz(i)=quad('jifen',0,v(i));
    i=i+1;
end

jifen  就是那个K1+K2的M文件中编辑的公式y
发表于 2011-4-14 09:14 | 显示全部楼层
回复 11 # 0900567 的帖子

  1. clc
  2. i=1;
  3. for x=0:pi/10:pi
  4. v(i)=x;
  5. yzz(i)=quad('ffun',0,v(i));
  6. i=i+1;
  7. end
复制代码

  1. function y=ffun(x)
  2. syms E L G N A B C k1 k2
  3. E=(40+20*cos(x)).^2;
  4. L=-(40+20*cos(x)).*cos(x);
  5. G=20*20;
  6. N=-20;
  7. A=E*G;
  8. B=-(L*G+N*E).^2;
  9. C=L*N;
  10. k1=(-B+sqrt(B.^2-4*A.*C))./(2*A);
  11. k2=(-B+sqrt(B.^2-4*A.*C))./(2*A);
  12. y=abs(k1)+abs(k2);
复制代码

这样程序是运行通了的,不过也不知道是不是你要的结果,给你参考吧!

评分

1

查看全部评分

 楼主| 发表于 2011-4-15 08:52 | 显示全部楼层
回复 12 # meiyongyuandeze 的帖子

我的 做好了 谢谢!

点评

忘记分享? :)  发表于 2011-4-15 09:08
呵呵,客气,一起学习!  发表于 2011-4-15 08:53
发表于 2011-4-16 20:11 | 显示全部楼层
回复 13 # 0900567 的帖子

最好能回来和我们分享下自己的程序,也让我们学习下,个人意见!
 楼主| 发表于 2011-4-16 20:46 | 显示全部楼层
回复 14 # meiyongyuandeze 的帖子

问一下 程序如何分享?  不太会弄啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 08:56 , Processed in 0.059308 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表