查看: 1564|回复: 14|关注: 0

[已解决] MATLAB用一个函数定义另一个函数并累加求和

[复制链接]

新手

7 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
本帖最后由 俊少a 于 2018-3-12 18:15 编辑

我先在m文件定义了Q(t)
[function [y ] = Q( t )
y=(180.783*t+46.5288*(t.^2)+7.57685*(t.^3)).*exp(-0.548961*t)]
再定义L(t)
[function [ y ] = L( t )
y=Q(t.-0.01*k);]
那我这样求和对吗
[ t=0:0.1:12;
syms k;
y=Q(t-0.01*k);
b=symsum(y,k,0,1599);
plot(t,b)]
做出来的图很怪

题目在这

题目在这

MATLAB 基础讨论
版块优秀回答者

中级

544 麦片

财富积分


5001500


0

主题

732

帖子

111

最佳答案
  • 关注者: 19
发表于 2018-3-12 18:53:02 | 显示全部楼层
第一个函数:
function y = Q(t)
y=(180.783*t+46.5288*(t.^2)+7.57685*(t.^3)).*exp(-0.548961*t);
end
第二个函数:
function  y = L( t )
y=Q(t);
end
命令行窗口代码:
clear;
t=0:0.1:12;
syms k;
y=Q(t-0.01*k);
b=symsum(y,k,0,1599);
b=double(b);
plot(t,b);


MATLAB 基础讨论
版块优秀回答者

中级

544 麦片

财富积分


5001500


0

主题

732

帖子

111

最佳答案
  • 关注者: 19
发表于 2018-3-12 18:54:30 | 显示全部楼层
土木小王子 发表于 2018-3-12 18:53
第一个函数:
function y = Q(t)
y=(180.783*t+46.5288*(t.^2)+7.57685*(t.^3)).*exp(-0.548961*t);

后面一句b=double(b)是把符号表达的数表示为数值形式。最后,有用请支持哈,正确请标注最优哈!

MATLAB 基础讨论
版块优秀回答者

中级

544 麦片

财富积分


5001500


0

主题

732

帖子

111

最佳答案
  • 关注者: 19
发表于 2018-3-12 18:56:16 | 显示全部楼层
后面一句b=double(b)是把符号表达的数表示为数值形式。最后,有用请支持哈,正确请标注最优哈!刚刚发给自己了,尴尬!

新手

7 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 2018-3-12 19:08:05 | 显示全部楼层
本帖最后由 俊少a 于 2018-3-12 19:10 编辑
土木小王子 发表于 2018-3-12 18:56
后面一句b=double(b)是把符号表达的数表示为数值形式。最后,有用请支持哈,正确请标注最优哈!刚刚发给自 ...

你好啊,我想问问,如果只求一个具体的值,如L(3),是不是这么写?
clear;
t=3;
syms k;
y=Q(t-0.01*k);
b=symsum(y,k,0,1599);

MATLAB 基础讨论
版块优秀回答者

中级

544 麦片

财富积分


5001500


0

主题

732

帖子

111

最佳答案
  • 关注者: 19
发表于 2018-3-12 19:10:35 | 显示全部楼层
第一个函数:
function y = Q(t)
y=(180.783*t+46.5288*(t.^2)+7.57685*(t.^3)).*exp(-0.548961*t);
end
第二个函数:
function  y = L( t ,K)% K是一个这样的数组或矩阵:[0 1599]
syms k;
temp=Q(t-0.01*k);
y=double(symsum(temp,k,K));
end
命令行窗口代码:
t=0:0.1:12;
K=[0 1599];
y=L(t,K);
plot(t,y)
比前面的好看优美一点!
最后,有用 请支持,正确请设置最优!

MATLAB 基础讨论
版块优秀回答者

中级

544 麦片

财富积分


5001500


0

主题

732

帖子

111

最佳答案
  • 关注者: 19
发表于 2018-3-12 19:12:38 | 显示全部楼层
俊少a 发表于 2018-3-12 19:08
你好啊,我想问问,如果只求一个具体的值,如L(3),是不是这么写?
clear;
t=3;

当然可以,就是一行一列的矩阵嘛!可以可以

新手

7 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 2018-3-12 19:25:09 | 显示全部楼层
土木小王子 发表于 2018-3-12 19:12
当然可以,就是一行一列的矩阵嘛!可以可以

算出来这么个东西。。。但我在画出来的图中用数据游标,看到t=3是,y=-1.551e+09,怎么会这样
[ 0, 0, - (exp(32139907215532155/4503599627370496)*(39072425235192107871553809*exp(1483380333024561/90071992547409920) + 117414837259539834948336041*exp(494460111008187/90071992547409920) - 117315969044559457652689900*exp(494460111008187/45035996273704960) - 39171293610124510963960000))/(3518437208883200000000*(exp(494460111008187/90071992547409920) - 1)^4) - (exp(-7416901665122805/4503599627370496)*(4124804456229307994457391*exp(1483380333024561/90071992547409920) + 12327489666345680930395159*exp(494460111008187/90071992547409920) - 12350910993894786677652500*exp(494460111008187/45035996273704960) - 4101382968728176450440000))/(3518437208883200000000*(exp(494460111008187/90071992547409920) - 1)^4)]

MATLAB 基础讨论
版块优秀回答者

中级

544 麦片

财富积分


5001500


0

主题

732

帖子

111

最佳答案
  • 关注者: 19
发表于 2018-3-12 19:30:37 | 显示全部楼层 |此回复为最佳答案
俊少a 发表于 2018-3-12 19:25
算出来这么个东西。。。但我在画出来的图中用数据游标,看到t=3是,y=-1.551e+09,怎么会这样
[ 0, 0, -  ...

你运行我给你的代码呗!因为算出来是符号形式,你要用double把他转换我数值形式。直接把下面代码的t改成3就可以:
第一个函数:
function y = Q(t)
y=(180.783*t+46.5288*(t.^2)+7.57685*(t.^3)).*exp(-0.548961*t);
end
第二个函数:
function  y = L( t ,K)% K是一个这样的数组或矩阵:[0 1599]
syms k;
temp=Q(t-0.01*k);
y=double(symsum(temp,k,K));
end
命令行窗口代码:
t=0:0.1:12;
K=[0 1599];
y=L(t,K);
plot(t,y)
比前面的好看优美一点!
最后,有用 请支持,正确请设置最优!

新手

7 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 2018-3-12 20:18:25 | 显示全部楼层
土木小王子 发表于 2018-3-12 19:30
你运行我给你的代码呗!因为算出来是符号形式,你要用double把他转换我数值形式。直接把下面代码的t改成3 ...

运行起来没什么问题,我在自个人探索一下,刚用matlab很多不会,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

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