求教,怎样调用写好的矩阵呢,形式如下
mathematica吧
全部回复
仅看楼主
level 6
2018年08月12日 12点08分 1
level 6
n = 10
x = Array[c, {n + 1, 1}];
l = Array[c, {n + 1, 1}];
A = IdentityMatrix[n + 1];
l[[1, 1]] = 1;
l[[2, 1]] = 1;
Do [l[[i, 1]] =
Binomial[n,
i - 1]*(x[[1]][[1]])^(i - 2)/(n*(1 - x[[1]][[1]])^(i - 2)), {i,
3, n}];
l[[n + 1, 1]] = (x[[1, 1]])^(n - 1)/(n*(1 - x[[1, 1]])^(n - 1));
Do[A[[1]][[j]] = (-n)*x[[j]][[1]]*(1 - x[[j]][[1]])^(n - 1), {j, 1,
n + 1}];
Do[A[[2, j]] = -(1 - x[[j, 1]])^(n), {j, 1, n + 1}];
Do[
A[[i]][[j]] =
Binomial[n,
i - 1]*(x[[j]][[1]])^(i - 1)*(1 - x[[j]][[1]])^(n - i + 1) -
l[[i, 1]]*((1 - x[[j]][[1]])^(n) +
n*x[[j]][[1]]*(1 - x[[j]][[1]])^(n - 1)), {i, 3, n}, {j, 1,
n + 1}];
Do[A[[n + 1, j]] = (x[[j, 1]])^(n) -
l[[n + 1,
1]]*((1 - x[[j, 1]])^(n) +
n*x[[j, 1]]*(1 - x[[j, 1]])^(n - 1)), {j, 1, n + 1}]
2018年08月12日 12点08分 4
x,为矩阵x的每一行,这里怎么调用x的每一行呢,最后得到乘积矩阵M
2018年08月12日 12点08分
level 6
F = {{11, -12, 13, -14, 15, -16, 17},
{19, -20, 21, -22, 23, -24, 25},
{27, -28, 29, -30, 11, -12, 13},
{15, -16, 17, -18, 19, -20, 21},
{23, -24, 25, -26, 27, -28, 29},
{11, -12, 13, -14, 15, -16, 17},
{19, -20, -12, 13, -14, 15, -16},
{23, -24, 25, -26, 27, -28, 29},
{11, -12, 13, -14, 15, -16, 17}};
n = Dimensions[F][[1]];
m = Dimensions[F][[2]];
x = Array[a, {n, m}];
y = Array[a, {n, 1}]
y[[1, 1]] = 1/40
Do[y[[i, 1]] = y[[1, 1]] + i*10^(-5), {i, 2, n}]
(*Do[x[[k]][[j]]=35/1000+(k+j)*10^(-5),{k,1,n}{j,1,n}] *)
For [k = 1, k <= n, k++,
For[j = 1, j <= m, j++, x[[k]][[j]] = 35/1000 + (k + j)*10^(-5)]]
Part[x', ;; , 9]
2018年08月12日 12点08分 5
x的每一行为生成B的节点取值
2018年08月12日 12点08分
@爱吃大米😇 a 是什么?本楼(5楼)的 F, X, y 生成 8 楼图中的 A 和 B 吗?
2018年08月14日 03点08分
@Alexander0620 我的理解是x是矩阵元素代表符号是a,y是向量,得到x,y后代入上面的矩阵生成方式4楼
2018年08月14日 03点08分
可以看下matlab算法
2018年08月14日 03点08分
level 12
你是想自己实现 KroneckerProduct?
2018年08月12日 13点08分 6
那个的形式是A矩阵的每个元素乘以矩阵B,我这里是一般化的KroneckerProduct需要A的第一行乘以矩阵B1,第二行乘以B2.......第n 行乘以Bn
2018年08月12日 13点08分
@爱吃大米😇 给个具体的例子吧。A = ?, B = ?, 然后你希望的结果是多少?
2018年08月13日 05点08分
@Alexander0620 图片在下面老哥看下
2018年08月13日 06点08分
level 6
乘法就是数乘运算
2018年08月13日 00点08分 7
level 6
2018年08月13日 06点08分 8
A的维数为n,B的维数为m,有m个,A,B生成方式一样,A,由节点y生成,B由矩阵x的每一行x1,x2,xn生成
2018年08月13日 06点08分
level 6
matlab中算法形式:
F=[11, -12, 13, -14, 15, -16, 17 ;
19, -20, 21, -22, 23, -24, 25;
27, -28, 29, -30, 11, -12, 13;
15, -16, 17, -18, 19, -20, 21;
23, -24, 25, -26, 27, -28, 29;
11, -12, 13, -14, 15, -16, 17;
19, -20, -12, 13, -14, 15, -16;
23, -24, 25, -26, 27, -28, 29;
11, -12, 13, -14, 15, -16, 17];
%-------------------------X,Y--------------------------------
[n,m]=size(F);
x=zeros(n,m);
y=zeros(n,1);
for k=1:n
for i=1:m
x(k,i)=35/1000+(k+i)*10^(-5);
end
end
y(1)=1/40;
for i=2:n
y(i)=y(1)+i*10^(-5);
end
矩阵生成方式,x为向量
function A=TNPentry(n,x)
n=n-1;
A=zeros(n+1);
%关于A矩阵
for j=1:n+1
A(1,j)=-n*x(j)*(1-x(j))^(n-1);
A(2,j)=-(1-x(j))^(n);
end
for i=3:n+1
for j=1:n+1
C1=nchoosek(n,i-1);
l(i)=C1*(x(1))^(i-2)/(n*(1-x(1))^(i-2));
A(i,j)=C1*(x(j))^(i-1)*(1-x(j))^(n-i+1)-l(i)*[(1-x(j))^(n)+n*x(j)*(1-x(j))^(n-1)];
end
end
A;
2018年08月13日 06点08分 9
level 12
初步实现,应该还有更简洁的方式。我再试试。
2018年08月13日 09点08分 10
好的,关于A,B怎么调用x每一行生成n个m阶的B,y生成A也不会,试了先变矩阵生成方式存为code不会调用[不高兴]
2018年08月13日 09点08分
level 12
Nicer, I think.
2018年08月13日 10点08分 11
这貌似要把A,B先计算再代入,B要涉及个数问题n,A,B生成怎么调用x,y呢
2018年08月13日 11点08分
@爱吃大米😇 A,B 怎么生成,和 x,y的关系是什么?我不知道。
2018年08月13日 12点08分
@Alexander0620 二楼有A,B生成方式,我不知道怎样将x,y代入,x,y由3楼的方式生成,x1,x2,xn为矩阵x的行
2018年08月13日 12点08分
@爱吃大米😇 抱歉,我看不懂。还是写具体例子在纸上?
2018年08月13日 12点08分
level 6
2018年08月13日 13点08分 12
请给一个具体的 X,然后想得到的 A 和 B 是什么?我不知道“节点”是什么意思。
2018年08月13日 14点08分
@Alexander0620 在下面的图上,不好意思
2018年08月13日 14点08分
level 6
2018年08月13日 14点08分 13
矩阵生成方式
2018年08月13日 14点08分
@爱吃大米😇 2楼我将矩阵生成方式表达出来了,是正确的
2018年08月13日 14点08分
level 6
2018年08月14日 13点08分 14
level 6
F = {{11, -12, 13, -14, 15, -16, 17},
{19, -20, 21, -22, 23, -24, 25},
{27, -28, 29, -30, 11, -12, 13},
{15, -16, 17, -18, 19, -20, 21},
{23, -24, 25, -26, 27, -28, 29},
{11, -12, 13, -14, 15, -16, 17},
{19, -20, -12, 13, -14, 15, -16},
{23, -24, 25, -26, 27, -28, 29},
{11, -12, 13, -14, 15, -16, 17}};
m = Dimensions[F][[1]];
n = Dimensions[F][[2]];
x = Array[c, {n, m}];
y = Array[c, {n, 1}]
y[[1, 1]] = 1/40
Do[y[[i, 1]] = y[[1, 1]] + i*10^(-5), {i, 2, n}];
(*Do[x[[k]][[j]]=35/1000+(k+j)*10^(-5),{k,1,n}{j,1,m}]*)
For[k = 1, k <= n, k++,
For[j = 1, j <= m, j++, x[[k]][[j]] = 35/1000 + (k + j)*10^(-5)]]
x
y
结果
{{1751/50000, 3503/100000, 219/6250, 701/20000, 1753/50000, 3507/
100000, 877/25000, 3509/100000, 351/10000}, {3503/100000, 219/6250,
701/20000, 1753/50000, 3507/100000, 877/25000, 3509/100000, 351/
10000, 3511/100000}, {219/6250, 701/20000, 1753/50000, 3507/100000,
877/25000, 3509/100000, 351/10000, 3511/100000, 439/12500}, {701/
20000, 1753/50000, 3507/100000, 877/25000, 3509/100000, 351/10000,
3511/100000, 439/12500, 3513/100000}, {1753/50000, 3507/100000, 877/
25000, 3509/100000, 351/10000, 3511/100000, 439/12500, 3513/100000,
1757/50000}, {3507/100000, 877/25000, 3509/100000, 351/10000, 3511/
100000, 439/12500, 3513/100000, 1757/50000, 703/20000}, {877/25000,
3509/100000, 351/10000, 3511/100000, 439/12500, 3513/100000, 1757/
50000, 703/20000, 879/25000}}
{{1/40}, {1251/50000}, {2503/100000}, {313/12500}, {501/20000}, {1253/
50000}, {2507/100000}}
矩阵生成方式
n=20
x=Array[c,{n+1,1}];
l=Array[c,{n+1,1}];
x[[1,1]]=35/1000;
For[i=2,i<=n+1,i++,x[[i,1]]=x[[1,1]]+i*10^(-5)];
A=IdentityMatrix[n+1];
l[[1,1]]=1;
l[[2,1]]=1;
Do [l[[i,1]]=Binomial[n,i-1]*(x[[1]][[1]])^(i-2)/(n*(1-x[[1]][[1]])^(i-2)),{i,3,n}];
l[[n+1,1]]=(x[[1,1]])^(n-1)/(n*(1-x[[1,1]])^(n-1));
Do[A[[1]][[j]]=(-n)*x[[j]][[1]]*(1-x[[j]][[1]])^(n-1),{j,1,n+1}];
Do[A[[2,j]]=-(1-x[[j,1]])^(n),{j,1,n+1}];
Do[
A[[i]][[j]]= Binomial[n,i-1]*(x[[j]][[1]])^(i-1)*(1-x[[j]][[1]])^(n-i+1)-l[[i,1]]*((1-x[[j]][[1]])^(n)+n*x[[j]][[1]]*(1-x[[j]][[1]])^(n-1)),{i,3,n},{j,1,n+1}];
Do[A[[n+1,j]]=(x[[j,1]])^(n)-l[[n+1,1]]*((1-x[[j,1]])^(n)+n*x[[j,1]]*(1-x[[j,1]])^(n-1)),{j,1,n+1}]
A
2018年08月14日 13点08分 16
Do[x[[i, 1]] = y[[1, 1]] + i*10^(-5), {i, 2, n}];
2018年08月15日 06点08分
level 12
这是我的生成 x 和 y 的 code。“n=20” 及以下的部分不知道在干嘛,看着心累不想写了。
Tips:
1. 了解下 Table;不要 Do,For 满天飞;
2. Wolfram 可以不区分行矢量和列矢量。
2018年08月15日 09点08分 17
3. Wolfram 默认使用无限精度,如果你只是想要 floating number,请显式加上小数点。
2018年08月15日 09点08分
@Alexander0620 @爱吃大米😇 可以参照用 Table 来生成 A 和 B。
2018年08月15日 09点08分
@Alexander0620 14楼我的想法那几个空格应该是多少呢[小乖]
2018年08月15日 11点08分
@Alexander0620 麻烦了,十分感谢
2018年08月15日 11点08分
level 6
F = {{11, -12, 13, -14, 15, -16, 17}, {19, -20, 21, -22, 23, -24,
25}, {27, -28, 29, -30, 11, -12, 13}, {15, -16, 17, -18, 19, -20,
21}, {23, -24, 25, -26, 27, -28, 29}, {11, -12, 13, -14, 15, -16,
17}, {19, -20, -12, 13, -14, 15, -16}, {23, -24, 25, -26, 27, -28,
29}, {11, -12, 13, -14, 15, -16, 17}};
n = Dimensions[F][[1]] - 1
m = Dimensions[F][[2]] - 1
x = Table[35/1000 + (k + j)*10^(-5), {k, n + 1}, {j, m + 1}]
y1 = 1/40;
y = Prepend[Table[y1 + i*10^(-5), {i, 2, n + 1}], y1]
结果为
{{1751/50000, 3503/100000, 219/6250, 701/20000, 1753/50000, 3507/
100000, 877/25000}, {3503/100000, 219/6250, 701/20000, 1753/50000,
3507/100000, 877/25000, 3509/100000}, {219/6250, 701/20000, 1753/
50000, 3507/100000, 877/25000, 3509/100000, 351/10000}, {701/20000,
1753/50000, 3507/100000, 877/25000, 3509/100000, 351/10000, 3511/
100000}, {1753/50000, 3507/100000, 877/25000, 3509/100000, 351/
10000, 3511/100000, 439/12500}, {3507/100000, 877/25000, 3509/
100000, 351/10000, 3511/100000, 439/12500, 3513/100000}, {877/25000,
3509/100000, 351/10000, 3511/100000, 439/12500, 3513/100000, 1757/
50000}, {3509/100000, 351/10000, 3511/100000, 439/12500, 3513/
100000, 1757/50000, 703/20000}, {351/10000, 3511/100000, 439/12500,
3513/100000, 1757/50000, 703/20000, 879/25000}}
1/40, 1251/50000, 2503/100000, 313/12500, 501/20000, 1253/50000, \
2507/100000, 627/25000, 2509/100000
x有9行7列,y为9维向量,现在将x1,x2...x9,y代入矩阵生成方式
2018年08月15日 15点08分 18
m,n 定义时减一,使用时又加一,有画蛇添足之嫌。
2018年08月16日 06点08分
@Alexander0620 这里我明白,老哥耐心指教很感谢,但我还是有问题,麻烦看下后两楼内容
2018年08月16日 07点08分
@Alexander0620 在吗。老哥,急需要这个结果
2018年08月17日 00点08分
1 2 尾页