大學數學數學實驗第二版課後答案
Ⅰ 姜啟源大學數學實驗第二版實驗4 常微分方程數值解課後習題中盛水倒圓錐中水漏出問題答案請發至我的郵箱
建議以後還是把題目發上來,否則像你現在這樣提問是不可能得到解答的。
Ⅱ 求姜啟源《大學數學實驗》課後題答案
vcfcfcccc
Ⅲ 數學實驗第二版答案 樂經良 百度雲
狼吞虎咽
Ⅳ 哪裡有(數學實驗)大學數學第二版的習題解,蕭樹鐵主編的
http://..com/q?word=%C4%C4%C0%EF%D3%D0%28%CA%FD%D1%A7%CA%B5%D1%E9%29%B4%F3%D1%A7%CA%FD%D1%A7%B5%DA%B6%FE%B0%E6%B5%C4%CF%B0%CC%E2%BD%E2%2C%CF%F4%CA%F7%CC%FA%D6%F7%B1%E0%B5%C4%3F&ct=17&pn=0&tn=ikaslist&rn=10
Ⅳ 求數學實驗第二版答案,李尚志版的。急用。
練習5
分別取來n=5,50,500,在自同一區間[-4p,4p]上函數f(x)=sinx與Pn(x)= 的圖像。觀察當n增加時向sinx逼近的現象。
這一作圖任務可用如下語句來完成:
fgsin=Plot[Sin[x],{x,-4Pi,4Pi},
PlotStyle->{RGBColor[1,0,0]}];
p[x_,n_]:=x*Proct[1-x^2/((k*Pi)^2),{k,1,n}];
fgproct=Plot[p[x,50],{x,-4Pi,4Pi}];
Show[fgsin,fgproct]
其中的P[x,50]可以換成P[x,500]再運行一次。
X=5
X=50
X=500
Ⅵ 數學實驗答案 第二版 姜啟源主編
這個應該沒人有吧,不過你有不會的問題可以在這上面問。我給你回答。
Ⅶ 數學實驗答案2
%根據以下公式計算y,計算結果作為函數值返回;n通過形參傳入
function y=fun1(n)
clc
%n=11;
%ans=1.8333……
y=0;
for k=1:n
fm=0;
for g=1:k
fm=fm+g;
end
y=y+1/fm;
end
%計算並輸出給定數組s(長度為9)中每相鄰兩個元素之平均值的平方根之和。
function y=fun2(s)
clc
y=0;
%s=[12 34 4 23 34 45 18 3 11];
%ans =35.9510
for k=1:length(s)-1
y=y+sqrt((s(k)+s(k+1))/2);
end
%求小於形參n同時能被3與7整除的所有自然數之和的平方根,並作為函數值返回。
function y=fun3(n)
clc
%n=1000;
%ans=153.9091
N=1:n;
f=find(rem(N,3)==0 & rem(N,7)==0);
y=0;
for k=1:length(f)
y=y+f(k);
end
y=sqrt(y);
%根據以下公式求P的值
function y=fun4(m,n)
clc
%m=12;n=8;
%ans=495
fz=1;fm1=1;fm2=1;
for k=1:m
fz=fz*k;
if k<=n
fm1=fm1*k;
end
if k<=m-n
fm2=fm2*k;
end
end
y=fz/fm1/fm2;
%將字元串s中的前導*號全部刪除,中間和尾部的*號不刪除。
function y=fun5(s)
clc
%s='*******A*BC*DEF*G****';
%ans=A*BC*DEF*G****
for k=1:length(s)
if s(k)~='*'
t=k-1;
break
end
end
s(1:t)=[]
%求出向量s的最大元素在數組中的下標並存放在k所指的存儲單元中。
function y=fun6(s)
clc
%s=[876 675 896 101 301 401 980 431 451 777];
%k=7 m=980
m=s(1);
for g=1:length(s)
if s(g)>m
m=s(g);
k=g;
end
end
k
m
%將兩個兩位數的正整數a、b合並形成一個整數放在c中。
%合並的方式是:將a數的十位和個位數依次放在c數的百位和個位上
% b數的十位和個位數依次放在c數的千位和十位上。
function y=fun7(a,b)
clc
%a=45;b=12;
%ans=1425
qw=fix(b/10)*1000;
bw=fix(a/10)*100;
sw=rem(b,10)*10;
gw=rem(a,10);
y=qw+bw+sw+gw;
%計算並輸出給定整數n的所有因子(不包括1與n自身)之和。
%規定n的值不大於1000。
function y=fun8(n)
clc
%n=856;
%ans=763
s=0;
for k=2:n-1
if rem(n,k)==0
s=s+k;
end
end
s
%將大於形參 m 且緊靠 m 的 k 個素數存入x所指的數組中。
function y=fun9(m,k)
clc
%m=17;k=5;
%ans=19 23 29 31 37
n=0;
while n<k
m=m+1;
if rem(m,2:m-1)~=0
m
n=n+1;
end
end
%使數組左下半三角元素中的值全部置成0
function y=fun10(a)
clc
%a=[1 9 7;2 3 8;4 5 6];
d=size(a);
for k=1:d(1)
for g=1:d(2)
if k>=g
a(k,g)=0;
end
end
end
a
%函數的功能是刪除字元串s中的所有空格
function y=fun11(s)
clc
%s='asd af aa z67';
%ans=asdafaaz67
for k=length(s):-1:1
if s(k)==' '
s(k)=[];
end
end
s
%對長度為7個字元的字元串s,
%除首、尾字元外,將其餘5個字元按ASCII碼降序排列
function y=fun12(s)
clc
%s='CEAedca';
%ans =CedcEAa
sz=abs(s);
szz=sz(2:end-1);
for k=1:length(szz)
[a,b]=max(szz);
sz(k+1)=szz(b);
szz(b)=[];
end
s=setstr(sz)
%將s所指字元串中下標為偶數的字元刪除
%串中剩餘字元形成的新串放在y中
function y=fun13(n)
clc
%s='ABCDEFGHIJK'
%ans =ACEGIK
for k=length(s):-1:1
if rem(k,2)==0
s(k)=[];
end
end
y=s;
%比較兩個字元串的長度,函數返回較長的字元串
%若兩個字元串長度相同,則返回第一個字元串。
function y=fun14(a,b)
clc
%a='beijing';b='shanghai';
%ans=shanghai
if length(a)>=length(b)
y=a;
else
y=b;
end
%刪除字元串s中所有的*號
function y=fun15(s)
clc
%s='****A*BC*DEF*G*******';
%ans=ABCDEFG
for k=length(s):-1:1
if s(k)=='*'
s(k)=[];
end
end
s
%按分數的高低排列學生的記錄,高分在前。
function y=fun16(s)
clc
s=['GA005',85;'GA003',76;'GA002',69;'GA004',85;'GA001',96;'GA007',72;'GA008',64;'GA006',87; 'GA015',85;'GA013',94;'GA012',64;'GA014',91;'GA011',90;'GA017',64;'GA018',64;'GA016',72];
sl=s(:,6);
y1_5=s(:,1:5);
d=size(s);
y6=sl;
c=sl;
for k=1:d(1)
[a,b]=max(sl);
y1_5(k,1:5)=s(b,1:5);
c(k)=a;
y6=int2str(c);
sl(b)=0;
end
y=strcat(y1_5,32,32,32,y6);
%求出能整除x且不是偶數的各整數,並按從小到大的順序放在y中。
function y=fun17(x)
clc
x=35;
a=find(rem(x,1:x)==0)
%將低於平均分的人數n和低於平均分的分數放在y中返回。
function [y,n]=fun18(s)
clc
s=[10 20 30 40 50 60 70 80 90];
p=0;
for k=1:length(s)
p=p+s(k);
end
p=p/length(s);
[a,b]=find(s<p);
n=length(a)
y=s(b);
%計算並輸出3到n之間(含3和n)所有素數的平方根之和。
function y=fun19(n)
clc
n=100;
y=0;
for k=3:n
if rem(k,2:k-1)~=0
y=y+sqrt(k);
end
end
%求出該學生的平均分放在y中
function y=fun20(s)
clc
s={'GA005',[85.5,76,69.5,85,91,72,64.5,87.5]};
y=0;
t=0;
for k=length(s{2}):-1:1
y=y+s{2}(k);
t=t+1;
if t==8
y=y/8;
break
end
end
1
%只刪除字元串前導和尾部的*號,串中字母之間的*號都不刪除
function y=fun1(s)
clc
% s='****A*BC*DEF*G*******'
% ans= A*BC*DEF*G
n=length(s) % 形參n給出了字元串的長度
h=0; % 形參h給出了字元串中前導*號的個數
e=0; % 形參e給出了字元串中最後*號的個數
for k=n:-1:1
if s(k)=='*'
e=e+1;
s(k)=[];
else
break
end
end
n1=length(s);
for k=1:n1
if s(k)~='*'
t=k;
break
end
h=h+1;
end
h
e
s(1:k-1)=[]
2
%把指定分數范圍內的學生數據放在b所指的數組中
%分數范圍內的學生人數由函數值返回
function y=fun2(n1,n2)
clc
% n1=60;n2=69;
% b=GA002 GA008 GA012 GA017 GA018
% y=5
s=['GA005',85;'GA003',76;'GA002',69;'GA004',85;'GA001',96;'GA007',72;'GA008',64;'GA006',87; 'GA015',85;'GA013',94;'GA012',64;'GA014',91;'GA011',90;'GA017',64;'GA018',64;'GA016',72];
d=size(s);
for k=d(1):-1:1
if abs(s(k,6))<n1 | abs(s(k,6))>n2
s(k,:)=[];
end
end
b=s;
b(:,6)=[]
d=size(b);
y=d(1);
3
%將兩個兩位數的正整數a、b合並形成一個整數放在c中
%合並的方式是: 將a數的十位和個位數依次放在c數的個位和百位上
% b數的十位和個位數依次放在c數的十位和千位上。
function y=fun3(a,b)
clc
%a=45;b=12;
%c = 2514
qw=rem(b,10)*1000;
bw=rem(a,10)*100;
sw=b-rem(b,10);
gw=fix(a/10);
c=qw+bw+sw+gw
4
%將兩個兩位數的正整數a、b合並形成一個整數放在c中
%合並的方式是: 將a數的十位和個位數依次放在c數的個位和百位上
% b數的十位和個位數依次放在c數的十位和千位上。
function y=fun3(a,b)
clc
%a=45;b=12;
%c = 2514
qw=rem(b,10)*1000;
bw=rem(a,10)*100;
sw=b-rem(b,10);
gw=fix(a/10);
c=qw+bw+sw+gw
5
%除了尾部的*之外,將字元串中其他*號全部刪除。
function y=fun5(s)
clc
s='****A*BC*DEF*G*******';
%ans=ABCDEFG*******
for k=length(s):-1:1
if s(k)~='*'
t=k;
break
end
end
for g=t:-1:1
if s(g)=='*'
s(g)=[];
end
end
s
6
%其功能是計算並輸出當x<0.97時下列多項式的值,直到abs(s(n)-s(n-1))<0.000001為止
%sn=1+0.5*x+0.5*(0.5-1)*x^2/1/2+0.5*(0.5-1)*(0.5-2)*x^3/1/2/3+…
% +0.5*(0.5-1)…(0.5-n+1)*x^n/(1*2*3*…*n)
function y=fun6(n)
clc
n=100;
%s =1.1000
x=0.21;
s=1;
for k=1:n
jc=1;
fz=1;
for g=1:k
jc=jc*g;
fz=fz*(0.5-g+1);
end
s=s+fz/jc*x^k;
end
s
7
%把高於等於平均分k的學生數據放在y中,輸出y和k。
function [y,k]=fun7(s)
clc
s=['GA005',85;'GA003',76;'GA002',69;'GA004',85;'GA001',96;'GA007',72;'GA008',64;'GA006',87; 'GA015',85;'GA013',94;'GA012',64;'GA014',91;'GA011',90;'GA017',64;'GA018',64;'GA016',72];
d=size(s);
k=0;
for g=1:d(1)
k=k+abs(s(g,6));
end
k=k/d(1);
for gg=d(1):-1:1
if abs(s(gg,6))<k
s(gg,:)=[];
end
end
y1=s(:,1:5);
fs=int2str(s(:,6));
y=strcat(y1,32,32,32,fs);
8
%將兩個兩位數的正整數a、b合並形成一個整數放在c中
%合並的方式是:將a數的十位和個位數依次放在c數的十位和千位上
% b數的十位和個位數依次放在c數的百位和個位上。
function y=fun8(a,b)
clc
a=45;b=12;
%ans=5142
qw=mod(a,10)*1000;
bw=floor(b/10)*100;
sw=fix(a/10)*10;
gw=rem(b,10)*1;
c=qw+bw+sw+gw
9
%將字元串中的前面的*號全部移到字元串的尾部。
function y=fun9(s)
clc
s='*******A*BC*DEF*G****';
%ans=A*BC*DEF*G***********
for k=1:length(s)
if s(k)~='*'
t=k-1;
break
end
end
if t~=0
for g=1:length(s)-t
s(g)=s(g+7);
end
for gg=length(s)-t+1:length(s)
s(gg)='*';
end
end
s
10
%使矩陣右上半三角元素中的值乘以m
function y=fun10(a,m)
clc
a=[1 9 7;2 3 8;4 5 6];
m=2;
d=size(a);
for k=1:d(1)
for g=1:d(2)
if k<=g
a(k,g)=a(k,g)*m;
end
end
end
a
11
%找出數組元素x中最大的值和它所在的下標
% 最大的值和它所在的下標通過形參傳回。
function [y,k]=fun11(x)
clc
x=[1 22 3 6 554 4 752 8 9 10 11 52 78 96 45 12 45 36 79 45 610 45 500 16 14];
y=x(1);
k=1;
for g=2:length(x)
if x(g)>y
y=x(g);
k=g;
end
end
k
12
%把低於平均分的學生數據放在y中
%低於平均分的學生人數k,返回y和k。
function [y,k]=fun12(s)
clc
s=['GA005',85;'GA003',76;'GA002',69;'GA004',85;'GA001',96;'GA007',72;'GA008',64;'GA006',87; 'GA015',85;'GA013',94;'GA012',64;'GA014',91;'GA011',90;'GA017',64;'GA018',64;'GA016',72];
d=size(s);
k=0;
for g=1:d(1)
k=k+abs(s(g,6));
end
k=k/d(1);
for gg=d(1):-1:1
if abs(s(gg,6))>=k
s(gg,:)=[];
end
end
y1=s(:,1:5);
fs=int2str(s(:,6));
y=strcat(y1,32,32,32,fs);
13
%使字元串的前導*號不得多於n個;若多於n個,則刪除多餘的*號
%若少於或等於n個,則什麼也不做
%字元串中間和尾部的*號不刪除。
function y=fun13(s,n)
clc
n=4;
%n=8;
s='*******A*BC*DEF*G****';
for k=1:length(s)
if s(k)~='*'
t=k-1;
break
end
end
if n<t
s(1:t-n)=[];
end
s
14
%除了字元串前導的*號之外,將串中其它*號全部刪除。
function y=fun14(s)
clc
s='****A*BC*DEF*G*******';
for k=1:length(s)
if s(k)~='*'
t=k;
break
end
end
for g=length(s):-1:t
if s(g)=='*'
s(g)=[];
end
end
s
15
%將所有大於1小於整數m的非素數輸出
function y=fun15(n)
clc
n=17;
N=zeros(1,n);
for k=4:n
for g=2:k-1
if rem(k,g)==0;
N(k)=k;
break
end
end
end
y=find(N>0);
16
%將所有大於1小於整數m的非素數輸出
function y=fun15(n)
clc
n=17;
N=zeros(1,n);
for k=4:n
for g=2:k-1
if rem(k,g)==0;
N(k)=k;
break
end
end
end
y=find(N>0);
17
%計算級數和s=∑x^n/n! (由0—n)
function y=fun17(n)
clc
n=10;
x=0.3;
y=1;
jc=1;
for k=1:n
for g=1:k
jc=jc*g;
end
y=y+x^k/jc;
jc=1;
end
18
%將兩個兩位數的正整數a、b合並形成一個整數放在c中
%合並的方式是:將a數的十位和個位數依次放在c數的個位和百位上
% b數的十位和個位數依次放在c數的千位和十位上。
function y=fun18(a,b)
clc
a=45;b=12;
qw=fix(b/10)*1000;
bw=rem(a,10)*100;
sw=rem(b,10)*10;
gw=floor(a/10);
c=qw+bw+sw+gw
19
%計算並輸出下列級數和s=1/(1*2)+1/(2*3)+…+1/(n/(n+1))
%不就等於 1-1/(n+1) 嘛
function y=fun19(n)
clc
n=10;
%s=1-1/(n+1)
y=0;
for k=1:n
y=y+1/k/(k+1);
end
20
%將字元串s中所有下標為奇數位置上的字母轉換為大寫(若該位置上不是字母, 則不轉換)。
function y=fun20(s)
clc
s='ab4cefg';
%ans =Ab4cEfG
for k=1:2:length(s)
if s(k)>='a' & s(k)<='z'
s(k)=char(s(k)-32);
end
end
s
%1. 函數fun1的功能是:將s所指字元串中ASCII值為偶數的字元刪除,串中剩餘字元形成一個新串放在t所指的數組中。
function y=fun1(s)
clc
%s='ABCDEFG12345';
%ans =ACEG135
sz=abs(s);
sc=find(mod(sz,2)==0);
sz(sc)=[];
t=setstr(sz);
y=t;
%2. 假定輸入的字元串中只含有字母和*號。請編寫函數fun2,它的功能是:將字元串尾部的*號全部刪除,前面和中間的*號不刪除。
function y=fun2(s)
clc
%s='****A*BC*DEF*G*******'
%ans =****A*BC*DEF*G
sz=abs(s);
for k=0:length(sz)
if sz(end)==abs('*')
sz(end)=[];
else
break
end
end
y=setstr(sz);
%3. 請編寫函數fun3, 函數的功能是:統計一行字元串中單詞的個數,作為函數值返回。 規定所有單詞由小寫字母組成, 單詞之間由若干個空格隔開。
function y=fun3(s)
clc
%s='good me I hi hello';
%ans =5
sz=abs(s);
m=1;
for k=1:length(sz)
if sz(k)==' '
m=m+1;
end
end
y=m;
%4. 編寫函數fun4,函數的功能是求出小於或等於n的所有素數並放在y中, 函數返回所求出的素數y和其個數k。
function [y,k]=fun4(n)
clc
N=1:n;
for g=n:-1:3
for k=g-1:-1:2
if rem(g,k)==0
N(g)=[];
break
end
end
end
N(1)=[];
k=length(N)
y=N;
%5. 編寫函數fun5,它的功能是計算: y=(ln(1)+ln(2)+……+ln(m))^0.5
function y=fun5(m)
clc
y=0;
for k=1:m
y=y+log(k);
end
y=y^0.5;
%函數的功能是: 刪去一維數組中所有相同的數, 使之只剩一個。數組中的數已按由小到大的順序排列,函數返回刪除後數組中數據的個數。
function y=fun6(s)
clc
%s=[2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10];
f=s(end);
for k=length(s)-1:-1:1
if s(k)==f
f=s(k);
s(k+1)=[];
else
f=s(k);
end
end
y=length(s);
%7 統計各年齡段的人數
function y=fun7(s)
clc;
s=round(rand(1,100)*120);
d=zeros(1,11);
for k=1:length(s)
switch floor(s(k)/10)
case 0,
d(11)=d(11)+1;
case 1
d(1)=d(1)+1;
case 2
d(2)=d(2)+1;
case 3
d(3)=d(3)+1;
case 4
d(4)=d(4)+1;
case 5
d(5)=d(5)+1;
case 6
d(6)=d(6)+1;
case 7
d(7)=d(7)+1;
case 8
d(8)=d(8)+1;
case 9
d(9)=d(9)+1;
otherwise
d(10)=d(10)+1;
end
end
disp(['d[0]=',num2str(d(11))])
r='d[ ]';
for g=1:9
m=num2str(g);
r(3)=m;
disp([r,num2str(d(g))])
end
disp(['d[10]=',num2str(d(10))])
8.將s所指字元串中所有下標為奇數位置上的字母轉換為大寫(該位置上不是字母,則不轉換)。
function y=fun8(s)
clc
s='abc4EFg'
for k=1:2:length(s)
if s(k)>='a' & s(k)<='z'
s(k)=char(s(k)-32);
end
end
%9.求出矩陣所有元素的平均值並作為函數值在函數中輸出。
function y=fun9(a)
clc
%a=[0 1 2 7 9;1 9 7 4 5;2 3 8 3 1;4 5 6 8 2;5 9 1 4 1];
%ans = 4.2800
d=size(a);
y=0;
for k=1:d(1)
for g=1:d(2)
y=y+a(k,g);
end
end
y=y/(d(1)*d(2));
%10.將M行N列的字元矩陣中的字元數據, 按行的順序依次放到一個字元串中,然後將不是字元的刪除。
function y=fun10(s)
clc;
%syms a b c d e f g h o;
%s=[8 a b;c 5 d;3 e 4;f 0 g;5 h o];
%ans =abcdefgho
d=size(s);
s1=reshape(s',1,d(1)*d(2));
for k=length(s1):-1:1
for g=0:9
if s1(k)==g
s1(k)=[];
end
end
end
t=s1';
y=t(1);
for k=2:length(t)
y=strcat(y,t(k));
end
%移動字元串中的內容, 移動的規則如下: 把第1個字元移到第m個字元, 把第2到第m+1個字元
%若第k到字元已移到字元串的最後,則第k+1到最後的字元移到字元串的前部。
function y=fun11(s)
clc
%s='ABCDEFGHIJK'
m=input('請輸入m的值:')
ss=s;
if m>=1
for k=1:m-1
s(m-k)=ss(end-k+1);
end
for g=m:length(ss)
s(g)=ss(g-m+1);
end
s
else
disp('m值有誤!')
end
%12.計算並輸出給定10個數的方差 y=(0.1∑(xk-x')^2)^0.5 x'= 0.1∑xk
function y=fun12(s)
clc
s=[95.0 89.0 76.0 65.0 88.0 72.0 85.0 81.0 90.0 56.0];
x_=0;
y=0;
for k=1:10
x_=x_+s(k);
end
x_=0.1*x_;
for g=1:10
y=y+(s(k)-x_)^2;
end
y=(0.1*y)^0.5
%13.求出矩陣a所有元素之和,作為函數值返回。
function y=fun13(a)
clc
%a=[1 3 5 7 9;2 9 9 9 4;6 9 9 9 8;1 3 5 7 0];
%sum =115
d=size(a);
sum=0;
for k=1:d(1)
for g=1:d(2)
sum=sum+a(k,g);
end
end
sum
%14.利用以下所示的簡單迭代方法求方程:cos(x)-x=0 的一個實根。
function y=fun14(a)
%迭代步驟如下:
%(1)取 x1 初值為a;
%(2)x0 = x1,把x1的值賦給 x0;
%(3)x1 = cos(x0),求出一個新的x1;
%(4)若x0 - x1的絕對值小於 0.000001,執行步驟(5),否則執行步驟(2);
%(5)所求x1就是方程 cos(x)-x=0 的一個實根,作為函數值返回。
%程序將輸出結果Root=0.739085。
clc
x1=0;
x0=x1;
x1=cos(x0);
while abs(x0-x1)>0.000001
x0=x1;
x1=cos(x0);
end
y=x1;
%15.將兩個兩位數的正整數a、b合並形成一個整數放在c中。
function y=fun15(a,b)
%合並的方式是:將a數的十位和個位數依次放在c數的千位和十位上, b數的十位和個位數依次放在c數的百位和個位上。
clc
%a=45;b=12;
%ans=4152
qw=floor(a/10)*1000;
bw=floor(b/10)*100;
sw=rem(a,10)*10;
gw=rem(b,10);
y=qw+bw+sw+gw;
%16.統計在s字元串中 'a' 到 'z' 26個字母各自出現的次數,並依次放在pp所指數組中。
function y=fun16(s)
clc
%s='abcdefgabcdeabc';
%pp=3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
p=abs('a':'z');
pp=zeros(1,26);
for k=1:length(s)
for g=1:16
if abs(s(k))==p(g)
pp(g)=pp(g)+1;
end
end
end
pp
%17.使矩陣左下三角元素中的值乘以n 。
function y=fun17(a)
clc
%a=[1 9 7;2 3 8;4 5 6]
%ans =
% 3 9 7
% 6 9 8
% 12 15 18
d=size(a);
for k=1:d(1)
for g=1:d(2)
if k>=g
a(k,g)=a(k,g)*3;
end
end
end
a
%18.計算並輸出n(包括n)以內能被5或9整除的所有自然數的倒數之和。
function y=fun18(n)
clc
n=20;
sum=0;
for k=1:n
if rem(k,9)==0
sum=sum+1/k;
else
switch rem(k,5)
case 0
sum=sum+1/k;
otherwise
sum=sum+0;
end
end
end
sum
%19.判斷字元串是否為迴文
function y=fun19(s)
clc
%s='level';
s='123312';
for k=1:length(s)
if s(k)~=s(end+1-k)
disp('NO')
break
end
if k==length(s)
disp('YES');
end
end
%20.求出 1 到 1000 之內能被 7 或11整除、但不能同時被 7 和 11 整除的所有整數並將它們放在 a所指的數組中,
%通過 n返回這些數的個數。
function y=fun20(s)
clc
a=[1:1000];
for k=1000:-1:1
if rem(k,7)~=0 & rem(k,11)~=0 %不能被7或11整除
a(k)=[];
end
if rem(k,7)==0 & rem(k,11)==0 %同時被7和11整除
a(k)=[];
end
end
a
n=length(a)
Ⅷ 有哪位高手知道姜啟源大學數學第二版的實驗內容的答案嗎
建議: 在 「單元格格式」設置框中,將數字格式設置為文本時,可以在單元專格輸入前面有屬「0」的數字,但這樣輸入的數字不能進行計算。可採用下面的方法輸入能計算的數值:選中單元格,點擊「格式→單元格」,單擊「數字」標簽,在左邊的「分類」中選擇「自定義選項」,在右邊的「類型」中選擇「0」,這時「類型」編輯欄中出現「0」。根據自己要在單元格中輸入的位數,如為「00005」5位,則在編輯欄中輸入5個0,點擊「確定」後,在單元格中就可以輸入前面有「0」並可以計算的數字了。
Ⅸ 大學數學實驗(第二版) 清華大學出版社 實驗8 線性規劃 第5題 某市有甲乙丙丁四個居民區,自來水由ABC
模型與解析:設A水庫向甲、乙、丙、丁供水量為x(1),x(2),x(3),x(4)(單位為kt,以下皆同)。設B水庫向甲、乙、丙、丁供水量為x(5),x(6),x(7),x(8) 。C水庫向甲、乙、丙供水量為x(9),x(10),x(11)。設自來水公司的獲利為z(單位為元)。
z=(900-450)*(x(1)+x(2)+x(3)+x(4) )+x(5)+x(6)+x(7)+x(8)+x(9)+x(10)+x(11))-(160*x(1)+130*x(2)+220*x(3)+170*x(4)+140*x(5)+130*x(6)+190*x(7)+150*x(8)+190*x(9)+200*x(10)+230*x(11)=290*x(1)+320*x(2)+230*x(3)+280*x(4)+310*x(5)+320*x(6)+260*x(7)+300*x(8)+260*x(9)+250*x(10)+220*x(11)
約束條件為:
x(1)+x(2)+x(3)+x(4)≤50 (1)
x(5)+x(6)+x(7)+x(8)≤60 (2)
x(9)+x(10)+x(11)≤50 (3)
x(1)+x(5)+x(9)≤30+50 (4)
x(2)+x(6)+x(10)≤70+70 (5)
x(3)+x(7)+x(11)≤10+20 (6)
x(4)+x(8)≤10+40 (7)
x(1)+x(5)+x(9)≥30 (8)
x(2)+x(6)+x(10)≥70 (9)
x(3)+x(7)+x(11)≥10 (10)
x(4)+x(8)≥10 (11)
x(i)≥0, i=1,2,3,4,5,6,7,8,9,10,11 (12)
本題要求解z的最大值,即求解(-z)的最小值。這是一個線性規劃的問題。用MATLAB求解,程序如下:
c=-[290,320,230,280,310,320,260,300,260,250,220];
% 加負號將求極大化為求極小
part=[eye(3);zeros(1,3)];
%A1=[ 1 1 1 1 0 0 0 0 0 0 0
% 0 0 0 0 1 1 1 1 0 0 0
% 0 0 0 0 0 0 0 0 1 1 1
% 1 0 0 0 1 0 0 0 1 0 0
% 0 1 0 0 0 1 0 0 0 1 0
% 0 0 1 0 0 0 1 0 0 0 1
% 0 0 0 1 0 0 0 1 0 0 0
% -1 0 0 0 -1 0 0 0 -1 0 0
% 0 -1 0 0 0 -1 0 0 0 -1 0
% 0 0 -1 0 0 0 -1 0 0 0 -1
% 0 0 0 -1 0 0 0 -1 0 0 0 ]
A1=[ones(1,4),zeros(1,7);zeros(1,4),ones(1,4),zeros(1,3);zeros(1,8),ones(1,3);eye(4),eye(4),part;-eye(4),-eye(4),-part];
b1=[50,60,50,80,140,30,50,-30,-70,-10,-10];
v1=[0,0,0,0,0,0,0,0,0,0,0];
%下界
[x,f,exitflag,output,lag]=linprog(c,A1,b1,[],[],v1)
得到最優解為 x=[0,50,0,0,0,50,0,10,40,0,10],最優值為 f=-47600(最大值z=-f=47600),exitflag=1(收斂)。列表如下:
供水量/kt 甲 乙 丙 丁
A 0 50 0 0
B 0 50 0 10
C 40 0 10 /
該公司如此分配供水量,才能獲利最多,為47600元。
若三個水庫每天的最大供水量都提高一倍,則目標函數不變,約束條件(4)~(12)不變,(1)~(3)改變,如下:
x(1)+x(2)+x(3)+x(4)≤100 (1)
x(5)+x(6)+x(7)+x(8)≤120 (2)
x(9)+x(10)+x(11)≤100 (3)
用MATLAB求解,程序如下:
c=-[290,320,230,280,310,320,260,300,260,250,220];
% 加負號將求極大化為求極小
part=[eye(3);zeros(1,3)];
%A1=[ 1 1 1 1 0 0 0 0 0 0 0
% 0 0 0 0 1 1 1 1 0 0 0
% 0 0 0 0 0 0 0 0 1 1 1
% 1 0 0 0 1 0 0 0 1 0 0
% 0 1 0 0 0 1 0 0 0 1 0
% 0 0 1 0 0 0 1 0 0 0 1
% 0 0 0 1 0 0 0 1 0 0 0
% -1 0 0 0 -1 0 0 0 -1 0 0
% 0 -1 0 0 0 -1 0 0 0 -1 0
% 0 0 -1 0 0 0 -1 0 0 0 -1
% 0 0 0 -1 0 0 0 -1 0 0 0 ]
A1=[ones(1,4),zeros(1,7);zeros(1,4),ones(1,4),zeros(1,3);zeros(1,8),ones(1,3);eye(4),eye(4),part;-eye(4),-eye(4),-part];
b1=[100,120,100,80,140,30,50,-30,-70,-10,-10];
v1=[0,0,0,0,0,0,0,0,0,0,0];
%下界
[x,f,exitflag,output,lag]=linprog(c,A1,b1,[],[],v1)
得到最優解為 x=[0,100,0,0,30,40,0,50,50,0,30],最優值 f=-88700(最大值z=-f=88700),exitflag=1(收斂)。列表如下:
供水量/kt 甲 乙 丙 丁
A 0 100 0 0
B 30 40 0 50
C 50 0 30 /
三個水庫每天的最大供水量都提高一倍後,該公司如此分配供水量,才能獲利最多,為88700元,相比之前提高了41100元。
