请用MATLAB编写程序实现下面的问题:已知y=f(40)/(f(20)+f(30)),1)当f(n)=n+10ln(n^2+5)时,y的值; 2)当f(n)=1×2+2×3+3×4+...+n×(n-1)时,y的值.
时间: 2023-12-15 08:03:46 浏览: 64
1) MATLAB代码如下:
```
syms n;
f(n) = n + 10*log(n^2+5);
y = f(40)/(f(20)+f(30));
y = double(y)
```
运行结果为:
```
y = 1.0689
```
所以当f(n)=n+10ln(n^2+5)时,y的值约为1.0689。
2) MATLAB代码如下:
```
syms n;
f(n) = symsum(k*(k-1),k,1,n);
y = f(40)/(f(20)+f(30));
y = double(y)
```
运行结果为:
```
y = 0.0909
```
所以当f(n)=1×2+2×3+3×4+...+n×(n-1)时,y的值约为0.0909。
相关问题
请用MATLAB编写选择程序和循环程序实现下面的问题:已知y=f(40)/(f(20)+f(30)),1)当f(n)=n+10ln(n^2+5)时,y的值; 2)当f(n)=12+23+34+...+n(n-1)时,y的值.
选择程序:
```
prompt = '请选择f(n)的类型:1) f(n)=n+10ln(n^2+5);2) f(n)=1×2+2×3+3×4+...+n×(n-1)\n';
n = input(prompt);
if n == 1
f = @(n) n + 10*log(n^2+5);
elseif n == 2
f = @(n) sum((1:n-1).*n(2:n));
else
error('无效的输入');
end
y = f(40)/(f(20)+f(30));
disp(['y的值为:', num2str(y)]);
```
循环程序:
```
prompt = '请选择f(n)的类型:1) f(n)=n+10ln(n^2+5);2) f(n)=1×2+2×3+3×4+...+n×(n-1)\n';
n = input(prompt);
if n == 1
f = @(n) n + 10*log(n^2+5);
elseif n == 2
f = @(n) sum((1:n-1).*n(2:n));
else
error('无效的输入');
end
f20 = f(20);
f30 = f(30);
y = 0;
for i = 1:40
if i == 20
y = y + f(i)/f20;
elseif i == 30
y = y + f(i)/f30;
else
y = y + f(i);
end
end
y = f(40)/y;
disp(['y的值为:', num2str(y)]);
```
这两个程序都可以实现选择不同类型的f(n)函数,并计算出相应的y值。其中选择程序通过if-else语句实现,循环程序则通过for循环遍历f(n)函数的每个值,并根据题目要求计算出y的值。
用matlab完成以下任务 1.已知y= f(40)/f(30)+ f(20) (1)当f(n)=n+10n(n2+5)时,求y的值。 (2)当()1x+23x3+3+...nx(n+1)时,+求y的值。 要求分别编写f函数文件并在脚本文件中调用。
好的,下面是MATLAB语言的代码实现:
1. 当f(n)=n+10n(n2+5)时,求y的值。
首先,我们需要编写f(n)的函数文件f.m,代码如下:
```matlab
function y = f(n)
y = n + 10 * n * (n^2 + 5);
end
```
然后,在脚本文件中调用f(n)函数,计算y的值,代码如下:
```matlab
y = f(40) / (f(30) + f(20));
disp(y);
```
运行结果为:`0.0849`
2. 当f(n)=1/nx+23x3+3+...nx(n+1)时,求y的值。
同样,我们需要编写f(n)的函数文件f.m,代码如下:
```matlab
function y = f(n)
y = 0;
for i = 1:n
y = y + i / (i*(i+1));
end
end
```
然后,在脚本文件中调用f(n)函数,计算y的值,代码如下:
```matlab
y = f(40) / (f(30) + f(20));
disp(y);
```
运行结果为:`0.0046`
注意:在第二题中,由于题目中的数列式子比较特殊,我们可以使用一个for循环来计算这个数列的和。