Matlab transpositions from formula

조회 수: 3 (최근 30일)
Chett Manly
Chett Manly 2021년 10월 16일
답변: Paul 2021년 10월 16일
Having some dramas converting equations to matlab. The code runs but my answers seem wildly out...
Part A uses the formula v=(T^3/2)/a*T+b which i believe translates to V = (T.^3/2)./A.*T+B; in matlab. I think this is right.
Part b uses the formula 1/v=a*(T^-1/2)+b*T^-3/2 which I thought to be in matlab as...
Vtemp = (A2.*TCK.^-1/2)+(B2.*TCK.^-3/2);
V2=1./Vtemp;
Part C runs a formula f(c,t)=(T^3/2)/c(1)*T+c(2) which i am mostly sure is right but not 100%.
clear; close all; clc
%% problem 4
TC = [-20 0 20 40 70 100 200 300 400 500]';
vi = [1.63 1.71 1.82 1.87 2.03 2.17 2.53 2.98 3.32 3.64]';
TCK = TC + 273.15;
%% part a
p = polyfit(1./TCK,vi,1);
B = p(1);
A = p(2);
V = (TCK.^3/2)./A.*TCK+B;
Tspan = linspace(-20,520,10)';
plot(Tspan,V,'bo',Tspan,V,'r-');
grid on
xlabel('Temp')
ylabel('Viscocity')
title('viscosity polyfit part a')
%% part b
p2 = polyfit(1./TCK,vi,1);
B2 = p2(1);
A2 = p2(2);
Vtemp = (A2.*TCK.^-1/2)+(B2.*TCK.^-3/2);
V2=1./Vtemp;
Tspan = linspace(-20,520,10)';
figure; plot(Tspan,V2,'bo',Tspan,V2,'r-');
grid on
xlabel('Temp')
ylabel('Viscocity')
title('viscosity polyfit part b')
%% part c
f = @(c,T) T.^3/2./c(1).*T+c(2);
c0 = [1;1];
c = nlinfit(TCK,vi,f,c0);
V3 = f(c,Tspan);
figure; plot(Tspan,V3,'bo',Tspan,V3,'r-');
grid on
xlabel('Temp')
ylabel('Viscocity')
title('viscosity nlinfit part C')
%% part d
% title('viscosity - polyfit-2 method')
%
% fprintf(' A B method\n')
% fprintf(['-------------------------------','\n'])
% fprintf(' %6.4f %6.4f %-7s\n',A2,B2,'polyfit-2')

답변 (1개)

Paul
Paul 2021년 10월 16일
Maybe you really mean to put all those fractional exponents inside parentheses? For example:
Tck = 4;
Tck.^3/2 % or
ans = 32
Tck.^(3/2) % equivalent to
ans = 8
Tck.^1.5
ans = 8

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by